Я хочу уменьшить накладные расходы при создании файлов .ts с помощью FFMPEG.
Я использую FFMPEG для создания серии файлов транспортных потоков, используемых для потоковой передачи по HTTP.
./ffmpeg -i myInputFile.ismv \
-vcodec copy \
-acodec copy \
-bsf h264_mp4toannexb \
-map 0 \
-f segment \
-segment_time 10\
-segment_list_size 999999 \
-segment_list output/myVarientPlaylist.m3u8 \
-segment_format mpegts \
output/myAudioVideoFile-%04d.ts
Мой ввод в формате ismv и содержит видео и аудио поток:
Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 320x240, 348 kb/s, 29.97 tbr, 10000k tbn, 59.94 tbc
Stream #0:1(und): Audio: aac (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 63 kb/s
Существует проблема, связанная с мультиплексированием, которое приводит к добавлению большого количества накладных расходов в потоки. Вот как проблема была описана мне для аудио:
Таким образом, для данного потока aac издержки будут 88% (так как 200 байтов будут сопоставлены с 2 x 188 байтовыми пакетами).
Для видео пакеты iframe довольно большие, поэтому они хорошо транслируются в пакеты .ts, однако различия могут быть такими же маленькими, как и у аудиопакета, поэтому они страдают от той же проблемы.
Решение состоит в том, чтобы объединить несколько пакетов aac в один больший поток перед упаковкой их в .ts. Это возможно из коробки с FFMPEG?