首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >h.264无效裁剪

h.264无效裁剪
EN

Stack Overflow用户
提问于 2012-04-30 12:22:24
回答 1查看 1.3K关注 0票数 0

我有一个s3桶,里面有几百个视频文件。

这些文件是通过使用ffmpeg切割更大的视频文件来创建的。

我为此编写了一个脚本,它从另一个桶下载原始视频文件,运行ffmpeg来剪切文件,并将新文件上传到它的桶中。在从/上传到s3的下载和上传中,我使用了这个php库

我使用的ffmpeg语法:

代码语言:javascript
复制
ffmpeg -y -vsync 2 -async 1 -ss [time-in] -t [duration] -i [large-input-video.mp4] -vcodec copy -acodec copy [short-output-video.mp4]

它应该只在指定的时间之间剪切原始文件,而不对a/v编解码器进行任何更改。

所有原始视频文件都用h.264编码,这也是新文件所需的编码(这将通过CDN流到客户的闪存播放器)。

我的问题是,只有一小部分新文件是按h.264编码出来的,但大多数不是(h.264是必须的,否则文件不会在客户端播放)。

我无法将问题追溯到原始视频,因为当我手动使用相同的ffmpeg命令,具有相同的参数和相同的文件时,输出文件就很好了。这似乎是武断的。

我使用ff探头获取有关文件的编解码器的信息。

例如:

大(原始)视频文件之一的探针:

..。 视频: h264,yuv420p,640x352,499 kb/s,25 fps,25 tbr,90k tbn,50 tbc ..。

对应的新剪切文件的f探针:

..。 视频: mpeg4,yuv420p,640x352 PAR 1:1 DAR 20:11,227 kb/s,25 fps,25 tbr,25 tbn,25 tbc ..。

可以看出,不同的是'mpeg4‘和’H 264‘。

任何关于什么会导致新文件以错误的编码出现的洞察力,我们将不胜感激。

谢谢!

编辑:问题解决

在分析了所有的文件之后,我注意到大约三分之二的文件是错误的编解码器。

由于我在裁剪过程中使用了三台机器(三台独立的EC2服务器),我想到其中两台机器上安装了ffmpeg (正如@LordNeckbeard在他的答复中所建议的那样)。

我再次运行该进程,仅在无效文件上运行,仅在第三台计算机上运行--这将产生所需的结果。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-01 02:39:39

输出文件上的"mpeg4“最有可能表示ffmpeg正在重新编码,而不是复制视频流。我不能对音频说同样的话,因为你没有提供这些信息。旧的ffmpeg使用"mpeg4“视频编码器作为默认的输出使用MP4容器。检查您的脚本或库,因为当手动调用ffmpeg时,一切都按预期工作。

较少关注的是,-vsync 2 -async 1在使用-vcodec copy -acodec copy时可能会被忽略。

还请注意,您可能希望通过qt-faststart (它包含在ffmpeg源代码中)或MP4Box来运行您的剪切输出。这将将一些数据移动到文件的开头,这样视频就可以在客户端完全下载之前开始播放。

最后,-ss的位置很重要。作为一个输入选项(在-i之前),它的速度要快得多,因为它会立即找到您想要的时间,然后开始解码,但是它不像输出选项那样精确,因为输出选项在您需要的时间之前对所有内容都进行了彻底的解码。如果准确性比速度更重要,那么考虑测试-ss作为输出选项。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10383635

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档