使用FFmpeg接口获取视频信息
2017-10-06 11:34
1726 查看
目录
1. 现在可以根据pts来计算一桢在整个视频中的时间位置:2. 计算视频长度的方法:
3. 视频的时长可以转换成HH:MM:SS的形式
4. 获取视频信息
现在可以根据pts来计算一桢在整个视频中的时间位置:
AVStream *pstream = pFormatCtx->streams[videoindex];timestamp(秒) = pkt.pts * av_q2d(st->time_base)
av_q2d(st->time_base) = (1/帧率 *1000)ms,时间基的单位是毫秒
连续两帧之间pkt2.pts-pkt1.pts = pkt.duration(pkt.duration为整型)
计算视频长度的方法:
time(秒) = st->duration * av_q2d(st->time_base)视频的时长可以转换成HH:MM:SS的形式
AVFormatContext *pFormatCtx; CString timelong; ... //duration是以微秒为单位 //转换成hh:mm:ss形式 int tns, thh, tmm, tss; tns = (pFormatCtx->duration)/1000000; thh = tns / 3600; tmm = (tns % 3600) / 60; tss = (tns % 60); timelong.Format("%02d:%02d:%02d",thh,tmm,tss);
获取视频信息
视频的原数据(metadata)信息可以通过AVDictionary获取,元数据存储在AVDictionaryEntry结构体中typedef struct AVDictionaryEntry { char *key; char *value; } AVDictionaryEntry;
每一条元数据分为key和value两个属性。
在ffmpeg中通过av_dict_get()函数获得视频的原数据。
下列代码显示了获取元数据并存入meta字符串变量的过程,注意每一条key和value之间有一个”\t:”,value之后有一个”\r\n”
//MetaData------------------------------------------------------------ //从AVDictionary获得 //需要用到AVDictionaryEntry对象 //CString author,copyright,description; CString meta=NULL,key,value; AVDictionaryEntry *m = NULL; //不用一个一个找出来 /* m=av_dict_get(pFormatCtx->metadata,"author",m,0); author.Format("作者:%s",m->value); m=av_dict_get(pFormatCtx->metadata,"copyright",m,0); copyright.Format("版权:%s",m->value); m=av_dict_get(pFormatCtx->metadata,"description",m,0); description.Format("描述:%s",m->value); */ //使用循环读出 //(需要读取的数据,字段名称,前一条字段(循环时使用),参数) while(m=av_dict_get( 926b pFormatCtx->metadata,"",m,AV_DICT_IGNORE_SUFFIX)){ key.Format(m->key); value.Format(m->value); meta+=key+"\t:"+value+"\r\n" ; }
相关文章推荐
- php使用FFmpeg接口获取视频的播放时长、码率、缩略图以及创建时间
- php使用ffmpeg获取视频信息并截图的实现方法
- PHP使用FFmpeg获取视频播放总时长与码率等信息
- asp.net 使用ffmpeg.exe获取视频信息并截图方法类
- php使用ffmpeg获取视频信息并截图的实现方法
- PHP使用FFmpeg获取视频播放总时长与码率等信息
- PHP使用FFmpeg获取视频信息
- 使用ffmpeg获取视频总时长
- php调用第三方插件ffmpeg获取上传视频信息方法
- Android——使用Volley+fastJson在新线程中读取网络接口获取天气信息
- 使用ffmpeg获取视频流后如何封装存储成mp4文件
- C++中使用MediaInfo库获取视频信息
- 视频版(如何访问接口(URL)/传递参数/获取参数/使用参数)
- 使用ffmpeg获取影片信息
- 使用WebService获取天气信息接口信息
- ffmpeg使用Json简洁显示视频的音频信息
- J2EE中使用MediaInfo库获取视频信息
- java调用ffmpeg获取视频信息函数代码
- java通过使用ffmpeg获取视频的码率