2015-07-14 5 views
1

Я попытался найти решение для мультиплексирования различных входов (ts) в один MPTS, поэтому его можно использовать как вход для модулятора DVB-T. В основном, я хочу выбрать определенные TS, предоставляемые спутниковым приемником, переупаковать их в один MPTS и отправить в модулятор. В настоящее время мне удалось сделать это с одним потоком, используя следующую команду:Мультиплексирование нескольких видеоизображений MPEG-TS в MPTS с использованием ffmpeg

~/DATVRelease/ffmpeg \ 
-re -i URL_SINGLE_INPUT_TS_STREAM -vcodec copy -acodec copy \ 
-f mpegts -mpegts_original_network_id 1 -mpegts_transport_stream_id 1 \ 
-mpegts_service_id 1 -mpegts_pmt_start_pid 1000 -mpegts_start_pid 1001 \ 
-metadata service_provider="YOUR CALL" \ 
-metadata service_name="N1 (ALEKSANDAR)" \ 
~/dvb/videots 

где videots является ФИФО трубой производится mkfifo команды. Следующий код произвел результат на стороне приемника:

http://i.stack.imgur.com/BZugM.jpg

Существует -map функция в FFmpeg, где можно добавить несколько звуковых каналов/или видео каналов, но они не будут на стороне приемника обнаружен как разные (в моем понимании, должна быть создана адекватная таблица PMT (iso13818)

Единственный открытый исходный код, который я мог найти, это http://www.scara.com/~schirmer/o/mplex13818/, но мне все еще интересно, может ли ffmpeg выполнить эту работу для меня?

+0

ли вы какие-либо решения? –

ответ

1

Вот основная команда для создания одного файла TS MPEG2, содержащего несколько программ.

ffmpeg -i FirstInput -i SecondInput \ 
-map 0:0 -map 0:1 -map 1:0 -map 1:1 \ 
-program title=ProgOne:st=0:st=1 -program title=ProgTwo:st=2:st=3 \ 
-f mpegts mpts.ts 

Ниже приведены простые иллюстрации для каждого варианта.

-i FirstInput -i SecondInput 

Выберите исходные файлы, которые содержат элементарные потоки, которые вы хотите мультиплекс в выходные MPTS

-map 0:0 -map 0:1 -map 1:0 -map 1:1 

Выберите конкретный elementry потоки вы хотите мультиплекс в выходные MPTS. Потоки будут индексироваться с нуля. Здесь мы выбираем первый и второй потоки для обоих файлов. Обычно они соответствуют видео и аудиопотоку. См. the Advance options chapter of FFmpeg documentation и wiki for -map.

-program title=ProgOne:st=0:st=1 -program ProgTwo:st=2:st=3 

Сообщите FFmpeg, чтобы создать две программы в выходной MPTS. Здесь title дает имя service_name в SDT. st= определяет потоки, помещенные в соответствующую программу. См the Main options chapter of FFmpeg ddocumentation

-f mpegts 

Скажите FFmpeg использовать MPEGTS мультиплексор в случае, если оно не может быть выведено из суффикса выходного файла.

Ключевыми параметрами являются -map и -program для мультиплексирования нескольких программ на одном выходе. Усиление было добавлено в this commit согласно issue 4734 и issue 4525.

Очевидно больше возможностей могут быть добавлены, чтобы настроить поведение, такие как кодек типа, битрейт контроль, контроль качества и т.д.