Ale*_*lex 11 ffmpeg video video-encoding avi
我正在尝试将从 DVD 复制的 VOB 文件转换为 Ubuntu 13.10 中的 avi。我试过dvdrip,由于帧计数错误或其他原因而失败。我也尝试过 acidrip,但它总是选择我不想使用的音轨。我更喜欢使用命令行解决方案来创建具有以下功能的 avi:
我尝试了一些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
Run Code Online (Sandbox Code Playgroud)以下命令
ffmpeg -i Videos/Test/VIDEO_TS/VTS_01_1.VOB -ss 589 -t 274 -sameq -acodec copy -ab 320k output.avi
Run Code Online (Sandbox Code Playgroud)
例如导致我的 Ubuntu 会话崩溃。
以下命令
avconv -i Videos/Test/VIDEO_TS/VTS_01_1.VOB -acodec copy -vcodec copy output.avi
Run Code Online (Sandbox Code Playgroud)
例如导致以下错误:
Application provided invalid, non monotonically increasing dts to muxer in stream 1: 374 >= 374
av_interleaved_write_frame(): Invalid argument
Run Code Online (Sandbox Code Playgroud)以下命令
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
Run Code Online (Sandbox Code Playgroud)
例如导致以下错误:
Error while opening encoder for output stream #0:1 - maybe incorrect parameters such as bit_rate, rate, width or height
Run Code Online (Sandbox Code Playgroud)以下命令
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
Run Code Online (Sandbox Code Playgroud)
例如似乎适用于某些框架。但是很快我就遇到了很多表格错误
[ac3 @ 0x120d480] frame sync error
Error while decoding stream #0:1
frame CRC mismatch
Run Code Online (Sandbox Code Playgroud)以下命令
mencoder Videos/Test/VIDEO_TS/VTS_01_1.VOB -oac copy -ovc x264 -x264encopts bitrate=2500 -o output.avi
Run Code Online (Sandbox Code Playgroud)
做了一些转换,但是 (i) 使用了字幕,尽管我不想使用它们 (ii) 音频错误(音频和视频放错了位置)并且 (iii) 似乎比电影实际播放的速度慢(可能需要90 分钟的电影需要 2 小时)。
我试图在这里给出命令(来自 Xeratul 的第三篇文章),但它因错误而停止
FATAL: Cannot initialize video driver.
Run Code Online (Sandbox Code Playgroud)我尝试了下面提出的建议来查看mencoder 页面。此页面建议使用两个pass:
第一个读取有关电影的信息,第二个使用该信息进行编码。
但既没有解释要提取哪些信息,也没有解释如何在第二遍中使用它们。所以我使用了以下命令:
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
Run Code Online (Sandbox Code Playgroud)
它确实转换了视频,但带有不需要的字幕。我完全不清楚如何避免使用副标题。
为了摆脱字幕,我相信您可以-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
Run Code Online (Sandbox Code Playgroud)
这些咒语通常非常密集,所以稍微分解一下
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
Run Code Online (Sandbox Code Playgroud)
x264encoptsdirect=autopass=2bitrate=900frameref=5bframes=1全像素运动估计算法: me=umh
注意:嗯 - 不均匀的多六边形搜索(慢)
启用所有宏块类型: partitions=all
率失真优化量化: trellis=1
注意: 2 - 在所有模式决定期间启用(慢,需要 subq>=6)
量化器增量/减量值: qp_step=4
注意:量化器可以在帧之间递增/递减的最大值(默认值:4)
量化压缩(默认值:0.6): qcomp=0.7
direct_pred=auto帧中关键帧之间的最大间隔: keyint=300
这之后的选项是视频过滤器: -vf
注意:对于视频过滤器开关,将其harddup用作最后一个过滤器很重要:它会强制 MEncoder 在输出中写入每一帧(甚至是重复的帧)。此外,有必要使用scale=$WIDTH,-10与$WIDTH作为-1保持原有的宽度或一个新的,通常较小,宽度:它是必要的,因为H.264编解码器使用方形像素和DVD而使用矩形像素。
scale=-1-10harddup