【问题标题】:How to cut videos automatically using Python with FFmpeg?如何使用带有 FFmpeg 的 Python 自动剪切视频?
【发布时间】:2022-01-10 15:21:44
【问题描述】:

我正在尝试使用带有 FFmpeg 的 Python 自动剪切视频,因此我不必每次想要新的视频剪切时都输入命令。我不确定我做错了什么,这里是代码:

导入操作系统

path = r'C:/Users/user/Desktop/folder'

    for filename in os.listdir(path):
       if (filename.endswith(".mp4")): 
           command = "ffmpeg - i" + filename + "-c copy -map 0 -segment_time 00:00:06 -f segment -reset_timestamps 1 output%03d.mp4"
           os.system(command)
       else:
           continue

【问题讨论】:

  • 你得到什么错误?
  • 什么也没发生!我也不确定“+ filename +”命令的语法是否正确。

标签: python ffmpeg


【解决方案1】:

错别字

首先,语法有错别字,正如您写的- i,而正确的语法是-i
" + filename + "的语法是正确的,但是前后必须有空格

command = "ffmpeg -i " + filename + " -c copy -map 0 -segment_time 00:00:06 -f segment -reset_timestamps 1 output%03d.mp4"

否则,您会收到类似的错误

Unrecognized option 'iC:\Users\user\Desktop\folder\filename.mp4-c'.
Error splitting the argument list: Option not found

解决方案

我认为其他所有论点都是正确的,对我来说一开始它不起作用,我只需要添加
-fflags +discardcorrupt
但也许这只是我的文件。

这是正确的代码,但我建议您阅读this

注意:我使用 os.path.join() 将输出文件保存在同一目录中,因为我的 python 文件在另一个目录中。

import os

path = r'C:\Users\user\Desktop\folder'

for filename in os.listdir(path):
    if filename.endswith(".mp4"): 
        command = "ffmpeg -fflags +discardcorrupt -i " + os.path.join(path, filename) + " -c copy -map 0 -segment_time 00:00:03 -f segment -reset_timestamps 1 " + os.path.join(path, "output%03d.mp4")
        os.system(command)
    else:
        continue

【讨论】:

    【解决方案2】:

    您可以使用 ffmpeg 剪切视频文件。

    ffmpeg -i 1.mp4 -vcodec copy -acodec copy -ss 00:03:20 -t 00:10:24 out.mpt
    

    -ss:开始时间

    -to:结束时间

    -t:持续时间

    【讨论】:

      猜你喜欢
      • 2014-01-18
      • 2020-04-04
      • 2015-08-19
      • 2017-10-01
      • 1970-01-01
      • 2012-08-03
      • 2018-11-08
      • 2018-01-15
      • 1970-01-01
      相关资源
      最近更新 更多