如何將 VOB 文件轉換為 avi?
我正在嘗試將從 DVD 複製的 VOB 文件轉換為 Ubuntu 13.10 中的 avi。我試過
dvdrip
了,由於幀數錯誤或其他原因而失敗。我也嘗試過 acidrip,但它總是選擇我不想使用的音軌。我希望有一個命令行解決方案來創建具有以下功能的 avi:
- 可與 mplayer 一起使用(即使用步進函式)
- 根據需要帶有字幕(或根本沒有字幕)
- 使用正確的音軌
- 影片和音頻同步
我嘗試了一些命令
ffmpeg
並avconv
設法創建了一個 avi,但影片和音頻完全不同步。那麼我應該使用哪些選項將 VOB 文件轉換為 avi 文件?我將不勝感激對建議選項的一些解釋!
附加資訊:
- 該
ffmpeg
命令為輸入文件提供以下輸出Input #0, mpeg, from 'Videos/Test/VIDEO_TS/VTS_01_1.VOB': Duration: 00:04:53.32, start: 0.045500, bitrate: 29284 kb/s Stream #0.0[0x1e0]: Video: mpeg2video (Main), yuv420p, 720x480 [PAR 8:9 DAR 4:3], 7500 kb/s, 27.68 fps, 59.94 tbr, 90k tbn, 59.94 tbc Stream #0.1[0x82]: Audio: ac3, 48000 Hz, 5.1, s16, 384 kb/s Stream #0.2[0x80]: Audio: ac3, 48000 Hz, 5.1, s16, 448 kb/s Stream #0.3[0x81]: Audio: ac3, 0 channels [buffer @ 0x15ca6e0] w:720 h:480 pixfmt:yuv420p
- 以下命令
ffmpeg -i Videos/Test/VIDEO_TS/VTS_01_1.VOB -ss 589 -t 274 -sameq -acodec copy -ab 320k output.avi
例如導致我的 Ubuntu 會話崩潰。 3. 以下命令
avconv -i Videos/Test/VIDEO_TS/VTS_01_1.VOB -acodec copy -vcodec copy output.avi
例如導致以下錯誤:
Application provided invalid, non monotonically increasing dts to muxer in stream 1: 374 >= 374 av_interleaved_write_frame(): Invalid argument
- 以下命令
avconv -i Videos/Test/VIDEO_TS/VTS_01_1.VOB -f avi -c:v mpeg4 -b:v 800k -g 300 -bf 2 -c:a libmp3lame -b:a 128k output.avi
例如導致以下錯誤:
Error while opening encoder for output stream #0:1 - maybe incorrect parameters such as bit_rate, rate, width or height
- 以下命令
avconv -i Videos/Test/VIDEO_TS/VTS_01_1.VOB -f avi -c:v mpeg4 -b:v 800k -g 300 -bf 2 -c:a ac3 -b:a 128k output.avi
例如似乎適用於某些框架。但是很快我就遇到了很多形式的錯誤
[ac3 @ 0x120d480] frame sync error Error while decoding stream #0:1 frame CRC mismatch
- 以下命令
mencoder Videos/Test/VIDEO_TS/VTS_01_1.VOB -oac copy -ovc x264 -x264encopts bitrate=2500 -o output.avi
做了一些轉換,但是 (i) 使用字幕,儘管我不想使用它們 (ii) 音頻錯誤(音頻和影片嚴重錯位)並且 (iii) 似乎比電影實際播放的速度慢(可能需要90 分鐘的電影需要 2 小時)。 7. 我試圖在這裡給出命令(來自 Xeratul 的第三篇文章),但它因錯誤而停止
FATAL: Cannot initialize video driver.
- 我嘗試了下面的建議來查看mencoder 頁面。此頁面建議使用兩個通行證:
第一個讀取有關電影的資訊,第二個使用該資訊進行編碼。
但在第二遍中既沒有解釋要提取*哪些資訊,也沒有解釋**如何使用它們。*所以我使用了以下命令:
mencoder Videos/Test/VIDEO_TS/VTS_01_1.VOB -nosound -ovc x264 \ -x264encopts direct=auto:pass=2:bitrate=900:frameref=5:bframes=1:\ me=umh:partitions=all:trellis=1:qp_step=4:qcomp=0.7:direct_pred=auto:keyint=300 \ -vf scale=-1:-10,harddup -o video.avi
它確實轉換了影片,但帶有不需要的字幕。目前還不清楚如何避免使用字幕。
為了擺脫字幕,我相信您可以
-nosub
在 .VOB 文件名之後添加開關。例子
$ mencoder Videos/Test/VIDEO_TS/VTS_01_1.VOB -nosub -nosound -ovc x264 \ -x264encopts direct=auto:pass=2:bitrate=900:frameref=5:bframes=1:\ me=umh:partitions=all:trellis=1:qp_step=4:qcomp=0.7:direct_pred=auto:keyint=300 \ -vf scale=-1:-10,harddup -o video.avi
細節
這些咒語通常非常密集,因此將其分解一下
- 輸入文件:
Videos/Test/VIDEO_TS/VTS_01_1.VOB
- 輸出文件:
-o video.avi
- 沒有字幕:
-nosub
- 不編碼聲音:
-nosound
- 使用給定的編解碼器進行編碼:
-ovc x264
其他編解碼器列表
$ mencoder -ovc help MEncoder SVN-r36171-4.8.1 (C) 2000-2013 MPlayer Team Available codecs: copy - frame copy, without re-encoding. Doesn't work with filters. frameno - special audio-only file for 3-pass encoding, see DOCS. raw - uncompressed video. Use fourcc option to set format explicitly. nuv - nuppel video lavc - libavcodec codecs - best quality! libdv - DV encoding with libdv v0.9.5 xvid - XviD encoding x264 - H.264 encoding
- x264 編碼選項:
x264encopts
- 直接運動矢量的設置模式:
direct=auto
- 傳球次數:
pass=2
- 目標編碼比特率:
bitrate=900
- 前。在 B 和 P 幀中用作預測器的幀(定義:3):
frameref=5
- 並發的 B 幀數:
bframes=1
- 全像素運動估計算法:
me=umh
**注意:**嗯 - 不均勻的多六邊形搜尋(慢)
- 啟用所有宏塊類型:
partitions=all
- 率失真最優量化:
trellis=1
注意: 2 - 在所有模式決策期間啟用(慢,需要 subq>=6)
- 量化器增量/減量值:
qp_step=4
**注意:**量化器可以在幀之間增加/減少的最大值(預設值:4)
- 量化器壓縮(預設值:0.6):
qcomp=0.7
- B幀中宏塊的運動預測:
direct_pred=auto
- 幀中關鍵幀之間的最大間隔:
keyint=300
- 之後的選項是影片過濾器:
-vf
**注意:**對於影片過濾器開關,將其
harddup
用作最後一個過濾器很重要:它會強制 MEncoder 在輸出中寫入每一幀(甚至是重複幀)。此外,必須使用scale=$WIDTH,-10
with$WIDTH
as-1
來保持原始寬度或新的(通常更小)寬度:這是必要的,因為 H.264 編解碼器使用方形像素,而 DVD 使用矩形像素。
scale=-1
-10
harddup