我可以使用以下代码使用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格式,它也从第一帧开始,一直到视频结尾。
我该如何更改呢?
使用此代码后:
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似乎不正确。
答案 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帧条目进行同步。