【问题标题】:ffprobe filter videos by duration, command prints but does not return durationffprobe 按时长过滤视频,命令打印但不返回时长
【发布时间】:2021-09-29 11:56:20
【问题描述】:

我正在尝试使用 ffprobe 按时长过滤视频。我正在使用:

vid_length = subprocess.call(f"ffprobe -i {local_vids_2[count]} -show_entries format=duration -v quiet -of csv='p=0'", shell = True)
print("VIDEO LENGTH IS:", vid_length, "FOR: ", count)

虽然我确实通过 shell 命令将持续时间打印到我的命令提示符,但我注意到我没有像我需要的那样将它作为变量返回。相反,它返回 0,所以我得到类似:VIDEO URL IS: 100_scaled.mp4 FOR: 0 11.883000 VIDEO LENGTH IS: 0 FOR: 0 VIDEO URL IS: 101_scaled.mp4 FOR: 1 56.171000 VIDEO LENGTH IS: 0 FOR: 1 等。

根据我在this post 中读到的内容,我也尝试过vid_length = subprocess.call(f"ffprobe -i {local_vids_2[count]} -show_entries format=duration -v quiet -of csv=%s % ('p=0')", shell = True),但这也没有奏效。

有没有办法让这个命令返回任何东西?还是我需要其他可以返回视频长度以用于编码目的的东西?谢谢。

【问题讨论】:

    标签: python shell ffmpeg video-processing ffprobe


    【解决方案1】:

    子进程允许捕获标准输出(打印)。如果您执行以下操作,则可以以字节形式获取它:

    completedProcess = subprocess.run(myCommandHere, capture_output=True)
    print(completedProcess.stdout)
    data_as_str = completedProcess.stdout.decode()
    

    然后你可以解析数据的标准输出

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-02-17
      • 2019-08-05
      • 2022-11-07
      • 1970-01-01
      • 2013-02-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多