【问题标题】:How to get duration of webm video file when duration is not explicitly defined未明确定义持续时间时如何获取 webm 视频文件的持续时间
【发布时间】:2022-08-18 23:38:30
【问题描述】:

我有一个带有不完整标题的 webm 文件段,我想通过从文件前面修剪 x 秒来将此段缩短到 10 秒,但是我无法使用 -sseof 标记,因为结尾文件未定义。我发现如果我要求 ffmpeg 从文件中提取音频或视频,它会响应一些很长的数据行 size=212kB time=00:00:13.32 bitrate= 130.2kbits/s speed=1.79e+03x video:0kB audio:210kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.991311% 显示文件中有 13.32 秒的数据,但是如果我对文件使用 ffprobe它以N/A 回复的长度。有没有办法在不编码 webm 文件的情况下自行获得 13.32 值?

    标签: ffmpeg webm ffprobe


    【解决方案1】:

    您可以使用 python 和 opencv 获取视频的详细信息,然后将它们传递给:

    import cv2
    file = os.path.basename(filename)
    video_file = filename
    cap = cv2.VideoCapture(video_file)
    
    # get video details
    framespersecond= int(cap.get(cv2.CAP_PROP_FPS))
    video_total_frames = int(cap.get(cv2.CAP_PROP_FRAME_COUNT))
    duration = video_total_frames/framespersecond
    end_time = duration - 10
    
    # Something like this to clip with ffmpeg.
    ffmpeg_extract_subclip(file, start_time, end_time, targetname="test.mp4")
    

    【讨论】:

      【解决方案2】:

      尝试

      ffprobe -hide_banner -loglevel quiet \
              -of default=nk=1:nw=1 -show_entries format=duration INPUT_FILE
      

      此命令仅以秒为单位打印总持续时间。

      【讨论】:

      • 这是我使用的返回 N/A 的命令
      【解决方案3】:

      我被告知ffprobe -v 0 -hide_banner -of compact=p=0:nk=1 -show_entries packet=pts_time -read_intervals 99999%+#1000 input.webm | tail -1 将返回最后一包数据的时间戳,这就是我要找的。

      【讨论】:

        猜你喜欢
        • 2016-03-11
        • 1970-01-01
        • 2013-03-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-02-08
        • 2010-11-17
        相关资源
        最近更新 更多