c语言如何实现读取flv格式的视频文件,或者用opencv也行 5
展开全部
#include "stdafx.h"
#include "highgui.h"
int main( int argc ,char ** argv){
CvCapture * capture = cvCreateFileCapture ("tree.avi"); //读取视频
if(capture==NULL) {
printf("NO capture"); //读取不成功,则标识
return 1;
};
double fps=cvGetCaptureProperty(capture, CV_CAP_PROP_FPS ); //读取视频的帧率
int vfps = 1000 / fps; //计算每帧播放的时间
printf("%5.1f\t%5d\n",fps,vfps);
double frames=cvGetCaptureProperty(capture,CV_CAP_PROP_FRAME_COUNT);//读取视频中有多少帧
printf("frames is %f\n",frames);
cvNamedWindow("example",CV_WINDOW_AUTOSIZE); //定义窗口
IplImage * frame;
while(1){
frame = cvQueryFrame( capture ); //抓取帧
float ratio = cvGetCaptureProperty(capture, CV_CAP_PROP_POS_AVI_RATIO); //读取该帧在视频中的相对位置
printf("%f\n",ratio);
if(!frame)break;
cvShowImage("example",frame); //显示
char c = cvWaitKey(vfps);
if(c == 27 )break;
}
cvReleaseCapture(&capture);
cvDestroyWindow("example");
}
#include "highgui.h"
int main( int argc ,char ** argv){
CvCapture * capture = cvCreateFileCapture ("tree.avi"); //读取视频
if(capture==NULL) {
printf("NO capture"); //读取不成功,则标识
return 1;
};
double fps=cvGetCaptureProperty(capture, CV_CAP_PROP_FPS ); //读取视频的帧率
int vfps = 1000 / fps; //计算每帧播放的时间
printf("%5.1f\t%5d\n",fps,vfps);
double frames=cvGetCaptureProperty(capture,CV_CAP_PROP_FRAME_COUNT);//读取视频中有多少帧
printf("frames is %f\n",frames);
cvNamedWindow("example",CV_WINDOW_AUTOSIZE); //定义窗口
IplImage * frame;
while(1){
frame = cvQueryFrame( capture ); //抓取帧
float ratio = cvGetCaptureProperty(capture, CV_CAP_PROP_POS_AVI_RATIO); //读取该帧在视频中的相对位置
printf("%f\n",ratio);
if(!frame)break;
cvShowImage("example",frame); //显示
char c = cvWaitKey(vfps);
if(c == 27 )break;
}
cvReleaseCapture(&capture);
cvDestroyWindow("example");
}
追问
这个读不了flv格式的视频呀
追答
CvCapture * capture = cvCreateFileCapture ("tree.avi");
括号里的视频名字要加上后缀.flv
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询