我正在使用 ffmpeg 在 CentOS Web 服务器上处理用户上传的视频。我需要将每个视频转换为标准大小和格式,然后从每个视频中提取 30 秒的示例剪辑。我想在提取命令中使用“-vcodec copy”标志以避免第二次编码。
此命令适用于我的初始转换:
ffmpeg -i uploaded.mov -f mp4 -vcodec libx264 -vpre medium -acodec libfaac -r 15 -b 360k -ab 48k -ar 22050 -s 480x320 formatted.mp4
Run Code Online (Sandbox Code Playgroud)
这有时适用于提取:
ffmpeg -i formatted.mp4 -vcodec copy -acodec copy -ss 0 -t 30 formatted_sample.mp4
Run Code Online (Sandbox Code Playgroud)
但是,当我对某些视频运行提取命令时,提取的示例剪辑以几秒钟的空白视频开始。音频立即开始,但视频在 3-6 秒内没有开始。
为了演示这个问题,我上传了两个视频片段并在它们上运行上述命令。我在 Final Cut Express 中创建了第一个剪辑,并在上传到 Web 服务器之前使用 Handbrake 对其进行了编码:
1a)上传的剪辑
1b)用第一个命令转换
相比之下,第二个剪辑来自Apple的网站并没有显示问题:
2a)上传的剪辑
2b)用第一个命令转换
2c)用第二个命令提取,没问题
谁能看出这两个源剪辑有什么不同?如果是这样,我可以在我的转换命令中做些什么,以便在提取命令运行时,设置剪辑以避免丢失视频?
顺便说一句,我最初从 yum 安装 ffmpeg 0.6.1 时遇到了问题,但我升级到最新的 git …