为什么 VLC 在转码时会截断我的视频的结尾?

为什么 VLC 在转码时会截断我的视频的结尾?

我正在尝试为一个短视频 (3:46)“嵌入”一个自定义字幕文件 (Advanced SubStation Alpha)。但是,尽管尝试了各种命令行选项,VLC 似乎总是会切断视频的结尾。根据参数的不同,它会切断几秒到大约 1:05 的时间。

我尝试过的命令的基本格式如下:

vlc -v tdcutb.mp4 --run-time 300 --sub-file=tdcutb2.ass \
    --sub-track=1 -I rc --sout-transcode-threads 8 --sout \
    '#transcode{venc=x264'\
      '{crf=15,keyint=50,no-mixed-refs,ref=4,subme=7,weightp=2,me=umh},'\
      'vcodec=mp4v,vb=4096,acodec=mpga,ab=128,soverlay}'\
    ':standard{mux=mp4,dst=tdcutb-sub.mp4,access=file}' vlc://quit

我尝试过不同的--run-time值(以及完全省略它)和各种 x264 参数(使用 10 到 25 的值指定/不指定 crf,使用 10 到 250 的值指定 keyint,使用 1 到 4 的值指定 ref,使用 0 到 7 的值指定 subme,使用 0 到 2 的值指定 weightp)。我也尝试过调整 vb。

我发现降低keyint往往会“更接近”全长,但当值<100时,文件大小开始变得荒谬,而且仍然不是全长。奇怪的是,减少subme似乎有点帮助,但它也不能让我得到全长输出并且会降低质量。

仅供参考,我正在运行 Mac OS X 10.9.4 和 VLC 媒体播放器 2.1.0 Rincewind(修订版 2.1.0-0-gedd8835)。

编辑:我现在也尝试了不同的编码器(venc=ffmpeg)、不同的编解码器(codec=VP80)、不同的多路复用器(ffmpeg/webm),但它们都不同程度地失败了(最严重的问题就是输出了 0:39 的视频)。我现在几乎可以肯定,这与 VLC 有某种关系。

编辑2:我首先尝试使用 ffmpeg 转码为 WebM;我顺利完成了此操作(并且生成的视频长度合适),但是当我使用 VLC 尝试在从 ffmpeg 获取的 WebM 视频上嵌入字幕时,遇到了同样的问题。

相关内容