使用ffprobe从视频中获取帧号和时间戳

时间:2017-10-31 15:49:53

标签: video ffmpeg timestamp ffprobe

我可以使用以下代码使用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. 如何使输出具有帧编号,(所以我知道当第一个时间戳属于哪个帧时)。
  3. 编辑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
        },
    

    在结果中,框架no似乎不正确。

1 个答案:

答案 0 :(得分:0)

使用

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帧条目进行同步。