После перекодирования с использованием ffmpeg я обнаружил, что битрейт аудио не соответствует ожидаемому значению.

Я использовал ffmpeg для перекодировки некоторых файлов в новый формат и с определенными параметрами. После перекодирования я обнаружил, что некоторые метаданные выходного файла не такие, как я ожидал, выходное значение не совпадает с тем, что я установил в строке cmd.

Перед перекодированием я проверяю медиа-информацию входного файла:

ffmpeg -i dz2015082000010.mpg

ffmpeg версии 3.2.4 Авторские права (c) 2000-2017, разработчики FFmpeg
построены с помощью gcc 4.8.3 (GCC) 20140911 (Red Hat 4.8.3-9), конфигурация: --enable-static --enable -memalign-hack --enable-libx264 --enable-gpl --enable-pthreads --enable-version3 --enable-avisynth --enable-bzlib --enable-iconv --enable-zlib --enable-nonfree - -extra-cflags = -I / usr / local / include / --extra-ldflags = -L / usr / local / lib --enable-debug = 3 --disable-optimizations --enable-nonfree --enable-libmp3lame libavutil 55. 34.101 / 55. 34.101 libavcodec 57. 64.101 / 57. 64.101 libavformat 57. 56.101 / 57. 56.101 libavdevice 57. 1.100 / 57. 1.100 libavfilter 6. 65.100 / 6. 65.100 libswscale 4. 2.100 / 4. 2.100 libswresample 2 . 3.100 / 2. 3.100 libpostproc 54. 1.100 / 54. 1.100 Input # 0, mpeg, from 'dz2015082000010.mpg': Duration: 00: 01: 49.30, start: 0.685389, bitrate: 15723 kb / s
Stream # 0: 0 [0x1e0]: Видео: mpeg2video (Main), yuv4 20p (телевизор, начало сверху), 1920x1080 [SAR 1: 1 DAR 16: 9], 15000 кб / с, 25 кадров в секунду, 25 tbr, 90k tbn, 50 tbc
Поток # 0: 1 [0x1c0]: Аудио: mp2, 48000 Гц, стерео, s16p, 384 кб / с Должен быть указан хотя бы один выходной файл

Далее перекодирование с помощью строки cmd:

ffmpeg -i dz2015082000010.mpg -vcodec libx264 -b:v 4000k -s 1920x1080 -r 25 -g 25  -vprofile main -acodec aac -strict -2 -b:a 128k -ac 2 -ar 44100 -y output.ts

После перекодирования я проверяю медиа-информацию в выходном файле:

ffmpeg -i output.ts    

ffmpeg версии 3.2.4 Авторские права (c) 2000-2017, разработчики FFmpeg создали конфигурацию gcc 4.8.3 (GCC) 20140911 (Red Hat 4.8.3-9): --enable-static --enable-memalign-hack - enable-libx264 --enable-gpl --enable-pthreads --enable-version3 --enable-avisynth --enable-bzlib --enable-iconv --enable-zlib --enable-nonfree --extra-cflags = - I / usr / local / include / --extra-ldflags = -L / usr / local / lib --enable-debug = 3 --disable-optimizations --enable-nonfree --enable-libmp3lame libavutil 55. 34.101 / 55 . 34.101 libavcodec 57. 64.101 / 57. 64.101 libavformat 57. 56.101 / 57. 56.101
libavdevice 57. 1.100 / 57. 1.100 libavfilter 6. 65.100 / 6. 65.100 libswscale 4. 2.100 / 4. 2.100
libswresample 2 . 3.100 / 2. 3.100 libpostproc 54. 1.100 / 54. 1.100 Вход # 0, mpegts, from 'full-2.ts': Продолжительность: 00: 01: 49.30, начало: 1.456778, битрейт: 4455 кб / с Программа 1 < br> Метаданные:
service_n ame: Service01
service_provider: FFmpeg
Поток № 0: 0 [0x100]: Видео: h264 (Main) ([27] [0] [0] [0] / 0x001B), yuv420p (прогрессивный), 1920x1080 [SAR 1: 1 DAR 16: 9], 25 кадров в секунду, 25 tbr, 90k tbn, 50 tbc
Поток № 0: 1 [0x101]: Аудио: aac (LC) ([15] [0] [0] [0] / 0x000F), 44100 Гц, стерео, fltp, 4 кб / с. Необходимо указать хотя бы один выходной файл.

Я не знаю, почему битрейт аудио меняется на 4 кб / с после перекодирования, я установил значение с помощью -b: 128k раньше, кто-нибудь может мне помочь? Кстати, выходной файл звучит нормально.


person penny    schedule 16.05.2017    source источник


Ответы (1)


Собственный кодировщик не будет тратить биты на тихие участки. И это не касается строгого CBR. Если вам действительно нужен выходной битрейт, близкий к целевому, вы можете добавить очень низкий уровень шума.

person Gyan    schedule 16.05.2017