以下の仕様に合うようにMPEG-TSに変換する必要のあるファイルがあります。
エレメンタリストリームビットレート[kbit/s]ビデオ:2575オーディオ:2 x 192字幕:-PAT / PMT:-スタッフィング:-
コンポーネントTSビットレート[kbit/s]ビデオ:2652オーディオ:395サブタイトル:45 PAT / PMT:45スタッフィング:62合計:3200 CBR
追加の必要なコンポーネント:PATPMTNullパケット
ポップアップする可能性のあるコンポーネント: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
上記のスクリプトでエンコードした後、2つのことを除いてすべてが正常であるように見えます(ビデオとオーディオの両方のビットレートコーデックは一定です):コンテナのビットレートもCBRのままである必要がありますが、そうではありません。また、スタッフィングコンポーネント(0x1 ffff)-nullパケットがありません。スクリプトを修正して、nullパケットとコンテナ定数(3,2 Mbps CBR)のビットレートを作成することは可能ですか?
2番目のオプションは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テーブルを設定解除/無効化/削除する方法は?