【问题标题】:getting frame no and time stamp from a video using ffprobe使用 ffprobe 从视频中获取帧号和时间戳
【发布时间】:2018-04-12 20:41:24
【问题描述】:

我可以使用 ffprobe 使用以下代码获取视频的帧时间戳:

ffprobe inputVideo.avi -hide_banner -show_entries frame=frame_no,best_effort_timestamp_time -of json

它会生成类似这样的数据:

{
    "frames": [
        {
            "best_effort_timestamp_time": "1509110230.335000"
        },
        {
            "best_effort_timestamp_time": "1509110230.764000"
        },
        {
            "best_effort_timestamp_time": "1509110230.621000"
        },
        {
            "best_effort_timestamp_time": "1509110230.764000"
        },
        {
            "best_effort_timestamp_time": "1509110230.906000"
        },

结果不完整,但显示数据是json格式,也是从第一帧开始到视频结尾。

我怎样才能改变它:

  1. 我可以指定视频的持续时间(开始和结束或开始和持续时间,例如从开始 5 秒开始并获取 10 分钟的数据)
  2. 如何使输出具有帧号,(所以我知道第一个时间戳属于哪个帧)。

编辑 1

使用此代码后:

ffprobe inputVideo.avi -hide_banner -show_entries frame=coded_picture_number,best_effort_timestamp_time -of json

我得到了这个结果:

    {
        "best_effort_timestamp_time": "1509110236.763000",
        "coded_picture_number": 47
    },
    {
        "best_effort_timestamp_time": "1509110236.906000",
        "coded_picture_number": 46
    },
    {
        "best_effort_timestamp_time": "1509110237.049000",
        "coded_picture_number": 48
    },
    {
        "best_effort_timestamp_time": "1509110237.192000",
        "coded_picture_number": 45
    },
    {
        "best_effort_timestamp_time": "1509110237.335000",
        "coded_picture_number": 51
    },
    {
        "best_effort_timestamp_time": "1509110237.478000",
        "coded_picture_number": 50
    },

在结果中,帧号似乎不正确。

【问题讨论】:

    标签: video ffmpeg timestamp ffprobe


    【解决方案1】:

    使用

    ffprobe inputVideo.avi -hide_banner
     -show_entries frame=coded_picture_number,best_effort_timestamp_time -read_intervals 5%+10
     -of json
    

    -read_intervals 5%+10 从 5 秒开始并持续 10 秒。 -read_intervals 5%10 在 10 秒后结束。然而,寻找并不准确。

    coded_picture_number 会告诉你编码顺序。如果没有 B 帧,则与帧号相同。使用 B 帧,您最好自己数数。虽然您可以在条目中添加pict_type 并使用最后一个 I 帧条目进行同步。

    【讨论】:

    • 我收到此错误:无法寻找位置 5000000:不允许操作无法读取间隔 id:0 start:5 end:10 中的数据包
    • 它正在寻找绝对 TS,并且您的文件似乎从传输流中截取。
    • 那我该如何解决呢?
    • 提供绝对数字。我会看看是否可以从一开始就进行相对参考。
    猜你喜欢
    • 2018-05-24
    • 1970-01-01
    • 2019-02-09
    • 2015-03-03
    • 2022-11-10
    • 1970-01-01
    • 2016-02-13
    • 2017-07-02
    • 2019-10-10
    相关资源
    最近更新 更多