Можно ли изменить громкость без перекодирования с помощью ffmpeg?
У меня возник этот вопрос, потому что я использовал следующую команду с ffmpeg:
ffmpeg -i input.wav -filter:a "volume=0.2" output.wav
Следуя документации здесь: https://trac.ffmpeg.org/wiki/AudioVolume
Однако, когда я создал новый файл, размер вывода был вдвое меньше размера ввода, и битрейт звуковой дорожки также был уменьшен.
Итак, мои вопросы:
- Разве битрейт должен уменьшаться с уменьшением и увеличением громкости вот так?
- Можно ли изменить громкость без перекодировки с помощью ffmpeg?
2 ответа
Хорошо, как мне любезно объяснил кто-то из Reddit, я должен иметь возможность изменять громкость без перекодирования, однако мой входной кодек был pcm_f321e, а настройка по умолчанию для выходного кодека для ffmpeg без каких-либо спецификаторов - pcm_f161e.
Первый pcm_f321e 32-битный, поэтому он хранит больше информации, чем второй, 16-битный.
Итак, ответ: 1. Да, потому что в этом случае я неосознанно перекодировал кодек с меньшим количеством информации.
- Собственно нет, это все равно перекодировка. Лучше всего использовать тот же код, который я использовал выше, с дополнительным спецификатором:
ffmpeg -i input.wav -filter:a "volume=0.2" -c:a pcm_f32le output.wav
Кодек для ввода и вывода должен быть таким же, как в 32-битном или 16-битном кодеке, иначе мне придется добавить спецификатор, который мне показал, как это сделать, тем же человеком на Reddit.
Однако это все равно перекодируется всякий раз, когда вы добавляете фильтр.
Я не эксперт, но способ увеличения громкости, похоже, не вызывает проблем .. например, битрейт звука такой же ... Размер файла тоже похож.
ffmpeg -i ac.mp4 -af volume=7 -vcodec copy ac2.mp4
Примечание. Ниже приводится вопрос программирования, связанный с C #, но кто-то упоминает вышеупомянутое увеличение / уменьшение громкости звука с помощью FFmpeg.
Для документации
ffmpeg -? не показывает много. Если вы это сделаете
ffmpeg -? | grep "vol"
тогда все, что он упоминает, это "-vol volume". И если вы сделаете
ffmpeg -? | grep "-af"
тогда все, что он говорит, это
-af filter_graph set audio filters"
Никакого упоминания о том, какие аудио фильтры вы можете использовать.
Но в разговоре с некоторыми экспертами по ffmpeg они упомянули о документации ..
"
Есть справочная страница ffmpeg-filters, а также -h filter=NAME, которая показывает вам краткую информацию о параметрах, используемых для фильтра.
В сети у вас тоже есть ffmpeg-all https://www.ffmpeg.org/ffmpeg-all.html
https://ffmpeg.org/ffmpeg-filters.html#volume
"
Убедитесь сами, в чем разница между файлами из mediainfo и DIR.
Обратите внимание, что оба файла, исходный и целевой, имеют одинаковый размер - 195 МБ. Источник - 195166205 байт, целевой - 195837608 байт. так что очень небольшая разница в размерах.
Заметь
нет разницы в битрейте
C:\Users\User\Downloads\ac>mediainfo ac.mp4 | find /i "bit"
Overall bit rate : 383 kb/s
Bit rate : 252 kb/s
Bit depth : 8 bits
Bits/(Pixel*Frame) : 0.010
Bit rate mode : Constant
Bit rate : 128 kb/s
C:\Users\User\Downloads\ac>mediainfo ac2.mp4 | find /i "bit"
Overall bit rate : 384 kb/s
Bit rate : 252 kb/s
Bit depth : 8 bits
Bits/(Pixel*Frame) : 0.010
Bit rate mode : Constant
Bit rate : 128 kb/s
C:\Users\User\Downloads\ac>
Вот все данные mediainfo для каждого файла, так что вы можете решить для себя, сможете ли вы по ним увидеть какие-либо существенные различия, которые имели место при изменении громкости.
C:\Users\User\Downloads\ac>mediainfo ac.mp4
General
Complete name : ac.mp4
Format : MPEG-4
Format profile : Base Media
Codec ID : isom (isom/iso2/avc1/mp41)
File size : 186 MiB
Duration : 1 h 7 min
Overall bit rate : 383 kb/s
Writing application : Lavf58.20.100
Video
ID : 1
Format : AVC
Format/Info : Advanced Video Codec
Format profile : High@L3.2
Format settings : CABAC / 1 Ref Frames
Format settings, CABAC : Yes
Format settings, Reference frames : 1 frame
Codec ID : avc1
Codec ID/Info : Advanced Video Coding
Duration : 1 h 7 min
Bit rate : 252 kb/s
Width : 1 366 pixels
Height : 768 pixels
Display aspect ratio : 16:9
Frame rate mode : Constant
Frame rate : 24.000 FPS
Color space : YUV
Chroma subsampling : 4:2:0
Bit depth : 8 bits
Scan type : Progressive
Bits/(Pixel*Frame) : 0.010
Stream size : 122 MiB (66%)
Writing library : x264 core 157 r2945 72db437
Encoding settings : cabac=1 / ref=1 / deblock=1:0:0 / analyse=0x3:0x3 / me=dia / subme=1 / psy=1 / psy_rd=1.00:0.00 / mixed_ref
=0 / me_range=16 / chroma_me=1 / trellis=0 / 8x8dct=1 / cqm=0 / deadzone=21,11 / fast_pskip=1 / chroma_qp_offset=0 / threads=4 / lookahead_threads=4 /
sliced_threads=1 / slices=4 / nr=0 / decimate=1 / interlaced=0 / bluray_compat=0 / constrained_intra=0 / bframes=0 / weightp=1 / keyint=250 / keyint_
min=24 / scenecut=40 / intra_refresh=0 / rc=crf / mbtree=0 / crf=26.0 / qcomp=0.60 / qpmin=0 / qpmax=69 / qpstep=4 / ip_ratio=1.40 / aq=1:1.00
Codec configuration box : avcC
Audio
ID : 2
Format : AAC LC SBR
Format/Info : Advanced Audio Codec Low Complexity with Spectral Band Replication
Commercial name : HE-AAC
Format settings : NBC
Codec ID : mp4a-40-5
Duration : 1 h 7 min
Duration_LastFrame : -23 ms
Bit rate mode : Constant
Bit rate : 128 kb/s
Channel(s) : 2 channels
Channel layout : L R
Sampling rate : 48.0 kHz
Frame rate : 23.438 FPS (2048 SPF)
Compression mode : Lossy
Stream size : 62.2 MiB (33%)
Default : Yes
Alternate group : 1
C:\Users\User\Downloads\ac>mediainfo ac2.mp4
General
Complete name : ac2.mp4
Format : MPEG-4
Format profile : Base Media
Codec ID : isom (isom/iso2/avc1/mp41)
File size : 187 MiB
Duration : 1 h 7 min
Overall bit rate : 384 kb/s
Writing application : Lavf58.31.104
Video
ID : 1
Format : AVC
Format/Info : Advanced Video Codec
Format profile : High@L3.2
Format settings : CABAC / 1 Ref Frames
Format settings, CABAC : Yes
Format settings, Reference frames : 1 frame
Codec ID : avc1
Codec ID/Info : Advanced Video Coding
Duration : 1 h 7 min
Bit rate : 252 kb/s
Width : 1 366 pixels
Height : 768 pixels
Display aspect ratio : 16:9
Frame rate mode : Constant
Frame rate : 24.000 FPS
Color space : YUV
Chroma subsampling : 4:2:0
Bit depth : 8 bits
Scan type : Progressive
Bits/(Pixel*Frame) : 0.010
Stream size : 122 MiB (66%)
Writing library : x264 core 157 r2945 72db437
Encoding settings : cabac=1 / ref=1 / deblock=1:0:0 / analyse=0x3:0x3 / me=dia / subme=1 / psy=1 / psy_rd=1.00:0.00 / mixed_ref
=0 / me_range=16 / chroma_me=1 / trellis=0 / 8x8dct=1 / cqm=0 / deadzone=21,11 / fast_pskip=1 / chroma_qp_offset=0 / threads=4 / lookahead_threads=4 /
sliced_threads=1 / slices=4 / nr=0 / decimate=1 / interlaced=0 / bluray_compat=0 / constrained_intra=0 / bframes=0 / weightp=1 / keyint=250 / keyint_
min=24 / scenecut=40 / intra_refresh=0 / rc=crf / mbtree=0 / crf=26.0 / qcomp=0.60 / qpmin=0 / qpmax=69 / qpstep=4 / ip_ratio=1.40 / aq=1:1.00
Codec configuration box : avcC
Audio
ID : 2
Format : AAC LC
Format/Info : Advanced Audio Codec Low Complexity
Codec ID : mp4a-40-2
Duration : 1 h 7 min
Duration_LastFrame : -19 ms
Bit rate mode : Constant
Bit rate : 128 kb/s
Channel(s) : 2 channels
Channel layout : L R
Sampling rate : 48.0 kHz
Frame rate : 46.875 FPS (1024 SPF)
Compression mode : Lossy
Stream size : 62.4 MiB (33%)
Default : Yes
Alternate group : 1
C:\Users\User\Downloads\ac>dir ac.mp4
Volume in drive C has no label.
Volume Serial Number is 4645-5DCE
Directory of C:\Users\User\Downloads\ac
11/03/2021 15:14 195,166,205 ac.mp4
1 File(s) 195,166,205 bytes
0 Dir(s) 2,360,127,488 bytes free
C:\Users\User\Downloads\ac>dir ac2.mp4
Volume in drive C has no label.
Volume Serial Number is 4645-5DCE
Directory of C:\Users\User\Downloads\ac
11/03/2021 15:28 195,837,608 ac2.mp4
1 File(s) 195,837,608 bytes
0 Dir(s) 2,360,127,488 bytes free
C:\Users\User\Downloads\ac>