Используя h264 и aac, я пытался сгенерировать вывод mp4 и mpegts в одной команде, используя новый tee muxer.

Либо он жалуется на отсутствие as_adtstoasc bsf, либо, если для global_header установлено отсутствие hs64_mp4toannexb bsf. Тем не менее, я не могу найти способ добавить bsf для одного выхода, а не для другого: добавление его как обычно применяется к обоим выходам, а параметры мультиплексора (между []) не принимают bsfs.

Команда ffmpeg а) плохо документировала эту функцию или б) сделала невозможной такую комбинацию результатов?

1 ответ1

2

Это невозможно в ffmpeg 2.0 или ниже. Поддержка битовых фильтров с тройником была добавлена в 2.1.

'Bsfs [/ спецификации]

Укажите список фильтров битового потока, которые будут применяться к указанному выводу. Можно указать, к каким потокам применяется данный фильтр битовых потоков, добавив спецификатор потока к опции, разделенной символом /. Если спецификатор потока не указан, фильтры бистрима будут применяться ко всем потокам в выходных данных.

Можно указать несколько фильтров битового потока, разделенных знаком ","

-- Документация

ffmpeg \
  -i in.mp4 \
  -c:v libx264 \
  -c:a libfaac \
  -flags +global_header \
  -bsf:v dump_extra \
  -map 0 \
  -f tee '[f=mp4:bsfs=aac_adtstoasc]out.mp4|[f=mpegts]out.ts'

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .