Проводник Windows читает заголовок файла для этой информации.
вижу 3 варианта:
- Вы можете разобрать заголовок вручную, ища информацию метаданных (о боже, пожалуйста, не надо)
- Используйте инструмент cmd-line и проанализируйте его вывод (отметьте popen () , чтобы узнать, как это сделать)
- Использование сторонней библиотеки для извлечения соответствующей информации из видеофайла
Я предполагаю, что вы хотите сделать то, что проще. Я думаю, что написать оболочку для инструмента cmd-line, такого как mediainfo , для отображения информации о видеофайлах и последующего анализа ее вывода для захвата свойств видео было бы проще. Если у вас уже есть 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