@ -2160,6 +2160,47 @@ namespace MediaBrowser.Controller.MediaEncoding
return 128000 ;
}
public string GetAudioVbrModeParam ( string encoder , int bitratePerChannel )
{
if ( encoder = = "libfdk_aac" )
{
return " -vbr:a " + bitratePerChannel switch
{
< 32000 = > "1" ,
< 48000 = > "2" ,
< 64000 = > "3" ,
< 96000 = > "4" ,
_ = > "5"
} ;
}
if ( encoder = = "libmp3lame" )
{
return " -qscale:a " + bitratePerChannel switch
{
< 48000 = > "8" ,
< 64000 = > "6" ,
< 88000 = > "4" ,
< 112000 = > "2" ,
_ = > "0"
} ;
}
if ( encoder = = "libvorbis" )
{
return " -qscale:a " + bitratePerChannel switch
{
< 40000 = > "0" ,
< 56000 = > "2" ,
< 80000 = > "4" ,
< 112000 = > "6" ,
_ = > "8"
} ;
}
return null ;
}
public string GetAudioFilterParam ( EncodingJobInfo state , EncodingOptions encodingOptions )
{
var channels = state . OutputAudioChannels ;
@ -5801,7 +5842,15 @@ namespace MediaBrowser.Controller.MediaEncoding
if ( bitrate . HasValue )
{
args + = " -ab " + bitrate . Value . ToString ( CultureInfo . InvariantCulture ) ;
string vbrParam ;
if ( encodingOptions . EnableAudioVbr & & ( vbrParam = GetAudioVbrModeParam ( codec , bitrate . Value / channels ? ? 2 ) ) ! = null )
{
args + = vbrParam ;
}
else
{
args + = " -ab " + bitrate . Value . ToString ( CultureInfo . InvariantCulture ) ;
}
}
if ( state . OutputAudioSampleRate . HasValue )
@ -5819,13 +5868,22 @@ namespace MediaBrowser.Controller.MediaEncoding
var audioTranscodeParams = new List < string > ( ) ;
var bitrate = state . OutputAudioBitrate ;
var channels = state . OutputAudioChannels ;
if ( bitrate . HasValue )
{
audioTranscodeParams . Add ( "-ab " + bitrate . Value . ToString ( CultureInfo . InvariantCulture ) ) ;
string vbrParam ;
if ( encodingOptions . EnableAudioVbr & & ( vbrParam = GetAudioVbrModeParam ( state . OutputAudioCodec , bitrate . Value / channels ? ? 2 ) ) ! = null )
{
audioTranscodeParams . Add ( vbrParam ) ;
}
else
{
audioTranscodeParams . Add ( "-ab " + bitrate . Value . ToString ( CultureInfo . InvariantCulture ) ) ;
}
}
if ( state . OutputAudioChannels . HasValue )
if ( c hannels. HasValue )
{
audioTranscodeParams . Add ( "-ac " + state . OutputAudioChannels . Value . ToString ( CultureInfo . InvariantCulture ) ) ;
}