MPEG-TS Encoding

У меня есть файл, который мне нужно преобразовать в MPEG-TS так, чтобы он соответствовал следующей спецификации:

Битрейт элементарного потока [кбит/с] видео: 2575 аудио: 2 x 192 субтитры: - PAT/PMT: - Начинка: -

Битрейт компонентного TS [кбит/с] видео: 2652 аудио: 395 субтитры: 45 PAT/PMT: 45 набивка: 62 Итого: 3200 CBR

Дополнительные необходимые компоненты: PAT PMT Нулевые пакеты

Компоненты, которые могут появиться: NIT, SDT, EIT и т.д.

vcodec="h264"
acodec="mpga"
bitrate="2500"
arate="192"
samplerate=48000
ext="mpg"
mux="ts"
vlc="/usr/bin/vlc"
fmt="mpg"
dst="/home/adam/test/"

for a in *$fmt; do
$vlc -I dummy -vvv "/home/adam/test/" --sout "#transcode{vcodec=$vcodec,venc=x264{profile=main,level=3.0,hrd=cbr,bframes=2},vb=$bitrate,acodec=$acodec,ab=$arate,samplerate=$samplerate,channels=2}:standard{mux=$mux,dst=\"$dst$a.$ext\",ac$
done

После кодирования с помощью вышеприведенного скрипта все вроде бы в порядке (для видео и аудио битрейт кодека постоянен), за исключением двух моментов: Битрейт контейнера также должен оставаться CBR, но это не так. Также отсутствует компонент начинки (0x1 ffff) - нулевой пакет. Возможно ли исправить скрипт, чтобы нулевой пакет, а также битрейт контейнера были постоянными (3,2 Mbps CBR)?

Второй вариант - кодирование с помощью ffmpeg:

ffmpeg -i video_input.mpg -i audio_input.mp2 -acodec copy -tune zerolatency -x264opts bitrate=2600:vbv-maxrate=2600:vbv-bufsize=166:nal_hrd=cbr -vpre libx264-iptv -vcodec libx264 -f mpegts -muxrate 3200K -y output.ts

но как снять/отключить/удалить SDT таблицу?

10
задан adismsc 26 November 2011 в 10:08
поделиться