我正在尝试为我正在编写的程序添加一项功能,以确定视频文件的宽度和高度(可以使用浏览..按钮进行选择)。我正在使用Python和Qt,我看了一遍,似乎无法找到任何帮助。视频格式目前是.flv,但将来会扩展到包括其他格式,如H.264。
如果我右键单击该文件并选择属性,Windows资源管理器可以告诉我视频维度,然后选择摘要选项卡并单击高级。显示的宽度和高度正是我所需要的。
有什么想法吗?
由于
马龙
答案 0 :(得分:2)
Windows资源管理器会读取此信息的文件标题。
我看到3个选项:
我假设你想做的更容易。我认为围绕像mediainfo这样的cmd-line工具编写一个包装器,用于显示视频文件的信息,然后解析它的输出以捕获视频属性会更容易。如果您的系统上已经安装了ffmpeg,那么您也可以使用它。
另一种方法是使用第三方库(如libavformat(ffmpeg的一部分))来读取视频属性。有关完整演示,请查看tutorial01.c:
// Register all formats and codecs
av_register_all();
// Open video file
if(av_open_input_file(&pFormatCtx, argv[1], NULL, 0, NULL)!=0)
return -1; // Couldn't open file
// Retrieve stream information
if(av_find_stream_info(pFormatCtx)<0)
return -1; // Couldn't find stream information
// Find the first video stream
videoStream=-1;
for(i=0; i<pFormatCtx->nb_streams; i++)
if(pFormatCtx->streams[i]->codec->codec_type==CODEC_TYPE_VIDEO) {
videoStream=i;
break;
}
if(videoStream==-1)
return -1; // Didn't find a video stream
// Get a pointer to the codec context for the video stream
pCodecCtx=pFormatCtx->streams[videoStream]->codec;
// The relevant structure here is: pCodecCtx
// More precisely: pCodecCtx->width and pCodecCtx->height