FFMPEG:使用快速搜索和复制编码WEBM会导致错误的视频长度

时间:2020-02-01 02:48:40

标签: ffmpeg

我正尝试通过两次通过将场景从软字幕MKV文件转换为硬字幕WEBM文件。视频编码正常,但是在媒体播放器上打开时文件显示的长度错误(这似乎是我从头到尾一直对原始文件进行编码)。

这是我正在使用的命令:

set timestamp=-ss 12:59.069 -to 16:14.277

ffmpeg -y %timestamp% -copyts -i source.mkv -shortest -c:v libvpx-vp9 -pass 1 -b:v 0 -crf 33 -threads 8 -speed 4 -tile-columns 6 -frame-parallel 1 -an -sn -vf scale=-1:720,subtitles=source.mkv -f webm NUL
ffmpeg -y %timestamp% -copyts -i source.mkv -shortest -c:v libvpx-vp9 -pass 2 -b:v 0 -crf 33 -threads 8 -speed 2 -tile-columns 6 -frame-parallel 1 -auto-alt-ref 1 -lag-in-frames 25 -c:a libopus -b:a 64k -sn -vf scale=-1:720,subtitles=source.mkv -f webm out.webm

在MPC-BE中打开视频时,视频会定期播放,直到https://i.stack.imgur.com/6bRwc.png所示的点(我要剪切的场景结束)为止,然后它会跳到文件末尾,这种错误的长度使我在尝试使用编码视频时遇到各种问题。

1 个答案:

答案 0 :(得分:0)

显然,您的播放器不喜欢非零的开始时间戳(至少在WebMs中如此)。

因此,请在写入之前重置时间戳(我假设您使用的是字幕过滤器对齐方式的副本)。

第二遍,

ffmpeg -y %timestamp% -copyts -i source.mkv -shortest -c:v libvpx-vp9 -pass 2 -b:v 0 -crf 33 -threads 8 -speed 2 -tile-columns 6 -frame-parallel 1 -auto-alt-ref 1 -lag-in-frames 25 -c:a libopus -b:a 64k -sn -vf scale=-1:720,subtitles=source.mkv -output_ts_offset -12:59.069 -f webm out.web

其中ts偏移量的值是ss值的负数。