Как использовать битовые фильтры в
Я пытаюсь демультиплексировать поток RTSP и повторно смешать его в файл TS, используя libavformat, libavcodec и т. Д., Копируя видео и транскодируя аудио. Если я использую ffmpeg, команда примерно такая:
ffmpeg -rtsp_transport tcp -re -fflags +genpts -i rtsp://10.0.0.42/channel1 -vcodec copy -copyts -bsf dump_extra -acodec libfdk_aac -b:a 16k -ac 1 -map 0:0 -map 0:1 -f mpegts out.ts
Я посмотрел примеры мультиплексирования / демультиплексирования, но кроме трудностей с пониманием того, как сделать потоковую копию, я не могу найти упоминания о фильтрах битового потока. В настоящее время я получаю следующую ошибку:
[mpegts @ 0x7ff20c009600] H.264 bitstream malformed, no startcode found, use the h264_mp4toannexb bitstream filter (-bsf h264_mp4toannexb)
Как создать фильтр битового потока и как его назначить? Я назначаю это входному потоку или выходному потоку?
2 ответа
Фильтры битового потока, к сожалению, недокументированы, но не должны быть такими сложными для понимания. Самый простой способ, вероятно, состоит в том, чтобы просто эмулировать то, что делает avconv - настроить, а затем применить фильтр к каждому пакету прямо перед его мультиплексированием.
Краткое описание TS MPEG-2 можно найти здесь http://wiki.multimedia.cx/index.php?title=MPEG-2_Transport_Stream. Примеры файлов TS (для h.264): http://samples.mplayerhq.hu/V-codecs/h264/
Но ваш вопрос не ясен. Что именно вы хотите сделать? Вы хотите создать свой собственный муксер для TS?
BR, Александр