我有一个33秒的视频,我正在尝试使用OpenCV处理.我的目标是确定每个帧对应的时间实例(相对于视频的开头).我这样做是为了能够比较以不同帧速率录制的同一场景的视频中的帧.
什么工作:
ffprobe报告一致,所以我很高兴相信这是正确的.我遇到的问题是:
CAP_PROP_POS_MSEC返回不正确的值.截至视频结束时,最高可达557924毫秒(超过9分钟).对于33s的视频,这可能不对.CAP_PROP_FRAME_COUNT也是不正确的.它被报道为33371,以59.75 fps的速度拍摄超过9分钟的镜头.与上述错误一致,但仍然不正确.CAP_PROP_POS_FRAME 同样不正确.视频可以在这里找到(大约10MB).
关于什么可能出错的任何想法?
ffprobe 输出:
FFprobe version SVN-r20090707, Copyright (c) 2007-2009 Stefano Sabatini
libavutil 49.15. 0 / 49.15. 0
libavcodec 52.20. 0 / 52.20. 1
libavformat 52.31. 0 / 52.31. 0
built on Jan 20 2010 00:13:01, gcc: 4.4.3 20100116 (prerelease)
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/home/misha/Dropbox/Public/sequence.mp4':
Duration: 00:00:33.37, start: 0.000000, bitrate: 2760 kb/s
Stream #0.0(und): Video: h264, yuv420p, 1920x1080, 59.75 tbr, 1k tbn, 2k tbc
Stream …Run Code Online (Sandbox Code Playgroud) 我想知道我执行"itoa"功能是否正确.也许你可以帮我把它变得更"正确",我很确定我错过了什么.(也许已经有一个库按我想要的方式进行转换,但是......找不到任何东西)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
char * itoa(int i) {
char * res = malloc(8*sizeof(int));
sprintf(res, "%d", i);
return res;
}
int main(int argc, char *argv[]) {
...
Run Code Online (Sandbox Code Playgroud)