Video-Encoding

avconv 命令行,用於將高畫質影片下採樣到標清

  • May 17, 2016

我正在嘗試使用以下命令將 TVheadend 錄製的高畫質影片下採樣為 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 多個不同格式的流(字幕、不同格式的音頻等): VLC 編解碼器資訊對話框

有誰知道錯誤在哪裡?

我會說容器格式由於錯誤而混亂,但它發生在不同的版本中:我嘗試在 ubuntu wily 上使用 ffmpeg 版本 2.7.6-0ubuntu0.15.10.1 和 avconv 版本 9.18-6:9.18-0ubuntu0.14.04 .1 值得信賴。狡猾地,ffmpegInvalid UE golomb code每約 25 幀額外列印一次

更新:

這是用於測試的輸入文件的簡短序列:infile.ts

在 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 可以打開和剪切它。

我在 gist 上發布了完整的腳本

嘗試使用現代選項的更簡單命令:

ffmpeg -i infile.ts -map v -map a -c:a copy -c:v libx264 -crf 18 -s 768x432 outfile.mkv

引用自:https://unix.stackexchange.com/questions/260372