python/video - 删除帧而不重新编码

标签 python video ffmpeg moviepy

我知道这可能是一个微不足道的问题,但到目前为止,我尝试过的各种解决方案都没有运气,我确信必须有一种方便的方法来实现这一点。

如何在不切片、合并和重新编码的情况下从视频文件中删除帧/毫秒?
我发现的所有解决方案都涉及将不同时间导出为各种格式,我希望没有必要这样做。

ffmpeg/avconv有必要将临时流转换为 .ts ,然后连接,最后以原始格式重新编码。

Python 库 MoviePy似乎完全符合我的需要,但是:

  • cutout函数返回一个无法导出的文件,如 write_videofile函数尝试获取删除的帧但失败
  • 如果我将原始文件分割成各种剪辑,然后将它们与 concatenate_videoclips 合并,导出不会失败,但需要两倍的视频长度。生成的视频具有更快的帧速率,只有连接视频的提示点被及时放置,音频以正常速度播放。还值得注意的是,输出文件尽管持续时间缩短了 5-7%,但大约大了 15%。

  • 还有其他我不知道我可能会研究的图书馆吗?
    我试图想象的是一个抽象层,可以轻松访问最常见的视频格式,让我能够弹出不需要的帧并更新文件头,而无需深入研究每种格式的细节。

    最佳答案

    为什么不使用

    #import os
    start = '00:00:08.345' # HH:MM:SS[.xxx] format
    duration = '00:00:10'
    
    os.system('ffmpeg -i path/to/input.mp4 -vcodec copy -acodec copy -ss ' + start + ' -t ' + end + ' path/to/file.mp4')`
    

    这应该需要 input.mp4 并从 8.345 秒开始缩短 10 秒,而无需重新编码文件。您可能想要使用许多 FFMPEG python 包装器,但这是我能想到的最简单的方法。

    关于python/video - 删除帧而不重新编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42313951/

    相关文章:

    wpf - 使用 WPF MediaElement 渲染 HDVideo 是否成功? WPF 有更好的视频播放器选项吗?

    ios - Avplayer 不播放来自 url 的视频

    FFMPEG - 制作稳定且零填充的帧计数器

    bash - 变量中的转义引号问题(我认为)

    python - 如何在 Pandas 的时间序列图上绘制垂直线?

    jquery - 带有多个选择的 web.py Json

    javascript - 无法使用javascript播放一系列视频

    ffmpeg - 使用 libavcodec 读取 .mkv 视频文件

    python - 在 Python 中进行模糊键查找的最佳方法?

    python - Mac OS 上的 pybluez 安装错误