
次のコマンドを使用して、TVheadendで録画したHDビデオをSDサイズにダウンサンプリングしようとしています。
avconv -i infile.ts -map 0:v -map 0:a:0 -map 0:a:1 -c copy -c:v mpeg2video -r 25 -qscale:v 2 -s:v 720x576 -f mpeg outfile.mpeg
これまでavconvの出力はよさそうだ。
Input #0, mpegts, from 'infile.ts':
Duration: 02:44:44.69, start: 68943.055278, bitrate: 7408 kb/s
Program 9036
Metadata:
service_provider: upc
Stream #0.0[0x50]: Video: h264 (High), yuv420p, 1280x720 [PAR 1:1 DAR 16:9], 50 fps, 50 tbr, 90k tbn, 100 tbc
Stream #0.1[0x52](eng): Audio: mp2, 48000 Hz, stereo, s16p, 192 kb/s
Stream #0.2[0x5b](ger): Audio: ac3, 48000 Hz, 5.1, fltp, 448 kb/s
No Program
Stream #0.3[0x6e]: Audio: mp1, 0 channels, s16p
[h264 @ 0x1bd9aa0] Ignoring NAL unit 9 during extradata parsing
[mpeg @ 0x1ab4d60] VBV buffer size not set, muxing may fail
Output #0, mpeg, to 'outfile.mpeg':
Metadata:
encoder : Lavf54.20.4
Stream #0.0: Video: mpeg2video, yuv420p, 720x576 [PAR 64:45 DAR 16:9], q=2-31, 200 kb/s, 90k tbn, 25 tbc
Stream #0.1(eng): Audio: mp2, 48000 Hz, stereo, 192 kb/s
Stream #0.2(ger): Audio: ac3, 48000 Hz, 5.1, 448 kb/s
Stream mapping:
Stream #0:0 -> #0:0 (h264 -> mpeg2video)
Stream #0:1 -> #0:1 (copy)
Stream #0:2 -> #0:2 (copy)
Press ctrl-c to stop encoding
そして品質も良いです。ただし、VLCで再生してオーディオチャンネルを変更しようとすると、トラックリストが増え続け、最初のトラックしか利用できないことがわかります。そして、コード情報に新しい行を永久に追加するリストが表示され、数秒後にすでにさまざまな形式(字幕、さまざまな形式のオーディオなど)の100以上のストリームが表示されます。
私がどこに間違っているのか知っている人はいますか?
バグのため、コンテナ形式が混乱していると言いたいのですが、別のバージョンで発生します。 Ubuntuでffmpegバージョン2.7.6-0ubuntu0.15.10.1とavconvバージョン9.18-6:9.18-0ubuntu0.14.04を試しました。 1信頼できます。巧妙に、ffmpegInvalid UE golomb code
は約25フレームごとに追加で印刷します。
修正する:
以下は、テスト用の入力ファイルの簡単なシーケンスです。内部 file.ts
答え1
最新のオプションを使用してより簡単なコマンドを試してください。
ffmpeg -i infile.ts -map v -map a -c:a copy -c:v libx264 -crf 18 -s 768x432 outfile.mkv
答え2
Xubuntu 16.04 xenialで再試行しましたが、もはや問題は発生しませんでした。
最終的なコマンドラインは次のとおりです。
infile=something.ts
outfile=something.mpeg
quality=3.5 # best between small file and good quality
dims=720x576
ffmpeg -i "$infile" -map 0:v -map 0:a:0 -map 0:a:1 -f mpegts -s "$dims" -r 25 -vcodec mpeg2video -qscale:v $quality -acodec copy "$outfile"
結果のファイルサイズは元のファイルの約20%です。 DVBcutは開いて切り取ることができます。
スクリプト全体を公開しました。主なポイント