update recording conversion
This commit is contained in:
parent
c0e5494825
commit
8d3e94ffb1
|
@ -65,6 +65,11 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private bool CopySubtitles
|
||||||
|
{
|
||||||
|
get { return string.Equals(OutputFormat, "mkv", StringComparison.OrdinalIgnoreCase); }
|
||||||
|
}
|
||||||
|
|
||||||
public string GetOutputPath(MediaSourceInfo mediaSource, string targetFile)
|
public string GetOutputPath(MediaSourceInfo mediaSource, string targetFile)
|
||||||
{
|
{
|
||||||
return Path.ChangeExtension(targetFile, "." + OutputFormat);
|
return Path.ChangeExtension(targetFile, "." + OutputFormat);
|
||||||
|
@ -154,8 +159,8 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
|
||||||
|
|
||||||
var durationParam = " -t " + _mediaEncoder.GetTimeParameter(duration.Ticks);
|
var durationParam = " -t " + _mediaEncoder.GetTimeParameter(duration.Ticks);
|
||||||
var inputModifiers = "-fflags +genpts -async 1 -vsync -1";
|
var inputModifiers = "-fflags +genpts -async 1 -vsync -1";
|
||||||
var mapArgs = string.Equals(OutputFormat, "mkv", StringComparison.OrdinalIgnoreCase) ? "-map 0" : "-sn";
|
var mapArgs = "-map 0 -ignore_unknown";
|
||||||
var commandLineArgs = "-i \"{0}\"{4} " + mapArgs + " {2} -map_metadata -1 -threads 0 {3} -y \"{1}\"";
|
var commandLineArgs = "-i \"{0}\"{5} " + mapArgs + " {2} -map_metadata -1 -threads 0 {3}{4} -y \"{1}\"";
|
||||||
|
|
||||||
long startTimeTicks = 0;
|
long startTimeTicks = 0;
|
||||||
//if (mediaSource.DateLiveStreamOpened.HasValue)
|
//if (mediaSource.DateLiveStreamOpened.HasValue)
|
||||||
|
@ -183,7 +188,9 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
|
||||||
(analyzeDurationSeconds * 1000000).ToString(CultureInfo.InvariantCulture);
|
(analyzeDurationSeconds * 1000000).ToString(CultureInfo.InvariantCulture);
|
||||||
inputModifiers += analyzeDuration;
|
inputModifiers += analyzeDuration;
|
||||||
|
|
||||||
commandLineArgs = string.Format(commandLineArgs, inputTempFile, targetFile, videoArgs, GetAudioArgs(mediaSource), durationParam);
|
var subtitleArgs = CopySubtitles ? " -codec:s copy" : " -sn";
|
||||||
|
|
||||||
|
commandLineArgs = string.Format(commandLineArgs, inputTempFile, targetFile, videoArgs, GetAudioArgs(mediaSource), subtitleArgs, durationParam);
|
||||||
|
|
||||||
return inputModifiers + " " + commandLineArgs;
|
return inputModifiers + " " + commandLineArgs;
|
||||||
}
|
}
|
||||||
|
@ -196,7 +203,7 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
|
||||||
// do not copy aac because many players have difficulty with aac_latm
|
// do not copy aac because many players have difficulty with aac_latm
|
||||||
if (_liveTvOptions.EnableOriginalAudioWithEncodedRecordings && !string.Equals(inputAudioCodec, "aac", StringComparison.OrdinalIgnoreCase))
|
if (_liveTvOptions.EnableOriginalAudioWithEncodedRecordings && !string.Equals(inputAudioCodec, "aac", StringComparison.OrdinalIgnoreCase))
|
||||||
{
|
{
|
||||||
return "-codec:a:0 copy";
|
return "-codec:a copy";
|
||||||
}
|
}
|
||||||
|
|
||||||
var audioChannels = 2;
|
var audioChannels = 2;
|
||||||
|
@ -205,7 +212,7 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
|
||||||
{
|
{
|
||||||
audioChannels = audioStream.Channels ?? audioChannels;
|
audioChannels = audioStream.Channels ?? audioChannels;
|
||||||
}
|
}
|
||||||
return "-codec:a:0 aac -strict experimental -ab 320000";
|
return "-codec:a aac -strict experimental -ab 320000";
|
||||||
}
|
}
|
||||||
|
|
||||||
private bool EncodeVideo(MediaSourceInfo mediaSource)
|
private bool EncodeVideo(MediaSourceInfo mediaSource)
|
||||||
|
|
|
@ -45,7 +45,6 @@ namespace MediaBrowser.Providers.Music
|
||||||
public async Task<IEnumerable<RemoteSearchResult>> GetSearchResults(AlbumInfo searchInfo, CancellationToken cancellationToken)
|
public async Task<IEnumerable<RemoteSearchResult>> GetSearchResults(AlbumInfo searchInfo, CancellationToken cancellationToken)
|
||||||
{
|
{
|
||||||
var releaseId = searchInfo.GetReleaseId();
|
var releaseId = searchInfo.GetReleaseId();
|
||||||
var releaseGroupId = searchInfo.GetReleaseGroupId();
|
|
||||||
|
|
||||||
string url = null;
|
string url = null;
|
||||||
var isNameSearch = false;
|
var isNameSearch = false;
|
||||||
|
@ -54,10 +53,6 @@ namespace MediaBrowser.Providers.Music
|
||||||
{
|
{
|
||||||
url = string.Format("/ws/2/release/?query=reid:{0}", releaseId);
|
url = string.Format("/ws/2/release/?query=reid:{0}", releaseId);
|
||||||
}
|
}
|
||||||
else if (!string.IsNullOrEmpty(releaseGroupId))
|
|
||||||
{
|
|
||||||
url = string.Format("/ws/2/release?release-group={0}", releaseGroupId);
|
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
var artistMusicBrainzId = searchInfo.GetMusicBrainzArtistId();
|
var artistMusicBrainzId = searchInfo.GetMusicBrainzArtistId();
|
||||||
|
@ -136,14 +131,7 @@ namespace MediaBrowser.Providers.Music
|
||||||
Item = new MusicAlbum()
|
Item = new MusicAlbum()
|
||||||
};
|
};
|
||||||
|
|
||||||
// If we have a release group Id but not a release Id...
|
if (string.IsNullOrEmpty(releaseId))
|
||||||
if (string.IsNullOrWhiteSpace(releaseId) && !string.IsNullOrWhiteSpace(releaseGroupId))
|
|
||||||
{
|
|
||||||
releaseId = await GetReleaseIdFromReleaseGroupId(releaseGroupId, cancellationToken).ConfigureAwait(false);
|
|
||||||
result.HasMetadata = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (string.IsNullOrWhiteSpace(releaseId))
|
|
||||||
{
|
{
|
||||||
var artistMusicBrainzId = id.GetMusicBrainzArtistId();
|
var artistMusicBrainzId = id.GetMusicBrainzArtistId();
|
||||||
|
|
||||||
|
@ -151,13 +139,13 @@ namespace MediaBrowser.Providers.Music
|
||||||
|
|
||||||
if (releaseResult != null)
|
if (releaseResult != null)
|
||||||
{
|
{
|
||||||
if (!string.IsNullOrWhiteSpace(releaseResult.ReleaseId))
|
if (!string.IsNullOrEmpty(releaseResult.ReleaseId))
|
||||||
{
|
{
|
||||||
releaseId = releaseResult.ReleaseId;
|
releaseId = releaseResult.ReleaseId;
|
||||||
result.HasMetadata = true;
|
result.HasMetadata = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!string.IsNullOrWhiteSpace(releaseResult.ReleaseGroupId))
|
if (!string.IsNullOrEmpty(releaseResult.ReleaseGroupId))
|
||||||
{
|
{
|
||||||
releaseGroupId = releaseResult.ReleaseGroupId;
|
releaseGroupId = releaseResult.ReleaseGroupId;
|
||||||
result.HasMetadata = true;
|
result.HasMetadata = true;
|
||||||
|
@ -169,13 +157,13 @@ namespace MediaBrowser.Providers.Music
|
||||||
}
|
}
|
||||||
|
|
||||||
// If we have a release Id but not a release group Id...
|
// If we have a release Id but not a release group Id...
|
||||||
if (!string.IsNullOrWhiteSpace(releaseId) && string.IsNullOrWhiteSpace(releaseGroupId))
|
if (!string.IsNullOrEmpty(releaseId) && string.IsNullOrEmpty(releaseGroupId))
|
||||||
{
|
{
|
||||||
releaseGroupId = await GetReleaseGroupFromReleaseId(releaseId, cancellationToken).ConfigureAwait(false);
|
releaseGroupId = await GetReleaseGroupId(releaseId, cancellationToken).ConfigureAwait(false);
|
||||||
result.HasMetadata = true;
|
result.HasMetadata = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!string.IsNullOrWhiteSpace(releaseId) || !string.IsNullOrWhiteSpace(releaseGroupId))
|
if (!string.IsNullOrEmpty(releaseId) || !string.IsNullOrEmpty(releaseGroupId))
|
||||||
{
|
{
|
||||||
result.HasMetadata = true;
|
result.HasMetadata = true;
|
||||||
}
|
}
|
||||||
|
@ -423,42 +411,13 @@ namespace MediaBrowser.Providers.Music
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task<string> GetReleaseIdFromReleaseGroupId(string releaseGroupId, CancellationToken cancellationToken)
|
|
||||||
{
|
|
||||||
var url = string.Format("/ws/2/release?release-group={0}", releaseGroupId);
|
|
||||||
|
|
||||||
using (var stream = await GetMusicBrainzResponse(url, true, cancellationToken).ConfigureAwait(false))
|
|
||||||
{
|
|
||||||
using (var oReader = new StreamReader(stream, Encoding.UTF8))
|
|
||||||
{
|
|
||||||
var settings = _xmlSettings.Create(false);
|
|
||||||
|
|
||||||
settings.CheckCharacters = false;
|
|
||||||
settings.IgnoreProcessingInstructions = true;
|
|
||||||
settings.IgnoreComments = true;
|
|
||||||
|
|
||||||
using (var reader = XmlReader.Create(oReader, settings))
|
|
||||||
{
|
|
||||||
var result = ReleaseResult.Parse(reader).FirstOrDefault();
|
|
||||||
|
|
||||||
if (result != null)
|
|
||||||
{
|
|
||||||
return result.ReleaseId;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets the release group id internal.
|
/// Gets the release group id internal.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="releaseEntryId">The release entry id.</param>
|
/// <param name="releaseEntryId">The release entry id.</param>
|
||||||
/// <param name="cancellationToken">The cancellation token.</param>
|
/// <param name="cancellationToken">The cancellation token.</param>
|
||||||
/// <returns>Task{System.String}.</returns>
|
/// <returns>Task{System.String}.</returns>
|
||||||
private async Task<string> GetReleaseGroupFromReleaseId(string releaseEntryId, CancellationToken cancellationToken)
|
private async Task<string> GetReleaseGroupId(string releaseEntryId, CancellationToken cancellationToken)
|
||||||
{
|
{
|
||||||
var url = string.Format("/ws/2/release-group/?query=reid:{0}", releaseEntryId);
|
var url = string.Format("/ws/2/release-group/?query=reid:{0}", releaseEntryId);
|
||||||
|
|
||||||
|
@ -662,4 +621,4 @@ namespace MediaBrowser.Providers.Music
|
||||||
public int throttleMs { get; set; }
|
public int throttleMs { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user