资源简介
一个含界面窗口的程序,调用FFmpeg API读取视音频文件信息(MP4、AVI、MKV...),可以读取文件播放时长、码率、视音频编码格式,视频分辨率,帧率,音频属性等信息。
代码片段和文件信息
/**
** 作者:pengwz
** http://blog.csdn.net/zhoubotong2012
** 邮箱:1795387053@qq.com
**/
#include “stdafx.h“
#include “FFMediaInfoReader.h“
#include
//#include
string to_string(int n)
{
std::ostringstream stm;
string str;
stm << n;
str = stm.str();
//std::cout << str << std::endl;
return str;
}
//////////////////////////////////////////////////////////////
FFMediaInfoReader::FFMediaInfoReader()
{
m_stop_status = false;
m_inputAVFormatCxt = nullptr;
m_videoStreamIndex = -1;
m_audioStreamIndex = -1;
m_bInited = FALSE;
m_width = m_height = 0;
m_frame_rate = 25;
m_video_frame_count = 0;
m_audio_samplerate = 0;
m_audio_channels = 0;
/* register all codecs demux and protocols */
avcodec_register_all();
av_register_all();
}
FFMediaInfoReader::~FFMediaInfoReader()
{
CloseFileStream();
}
BOOL FFMediaInfoReader::OpenFileStream(const char* szFilePath)
{
m_filePath = szFilePath;
m_video_frame_count = 0;
m_videoStreamIndex = -1;
m_audioStreamIndex = -1;
m_vcodec_name = ““;
m_acodec_name = ““;
m_width = m_height = 0;
m_audio_samplerate = 0;
m_audio_channels = 0;
m_video_frame_count = 0;
m_bInited = FALSE;
return openMediaFile();
}
void FFMediaInfoReader::CloseFileStream()
{
m_stop_status = true;
closeMediaFile();
m_bInited = FALSE;
}
//打开输入文件
BOOL FFMediaInfoReader::openMediaFile()
{
if (m_inputAVFormatCxt)
{
TRACE(“already has input avformat \n“);
return FALSE;
}
int res = 0;
if ((res = avformat_open_input(&m_inputAVFormatCxt m_filePath.c_str() 0 NULL)) < 0)
{
}
if(res < 0)
{
string strError = “can not open file:“ + m_filePath + “errcode:“ + to_string(res) + “err msg:“ + av_make_error_string(m_tmpErrString AV_ERROR_MAX_STRING_SIZE res);
TRACE(“--------------%s \n“ strError.c_str());
return FALSE;
}
if (avformat_find_stream_info(m_inputAVFormatCxt 0) < 0)
{
TRACE(“can not find stream info \n“);
return FALSE;
}
TRACE(“filepath: %s format: %s Bitrate: %d Kbps \n“ m_filePath.c_str() m_inputAVFormatCxt->iformat->name m_inputAVFormatCxt->bit_rate/1000);
av_dump_format(m_inputAVFormatCxt 0 m_filePath.c_str() 0);
for (int i = 0; i < m_inputAVFormatCxt->nb_streams; i++)
{
AVStream *in_stream = m_inputAVFormatCxt->streams[i];
if (in_stream->codec->codec_type == AVMEDIA_TYPE_VIDEO)
{
m_videoStreamIndex = i;
m_width = in_stream->codec->width;
m_height = in_stream->codec->height;
if(in_stream->avg_frame_rate.den != 0 && in_stream->avg_frame_rate.num != 0)
{
m_frame_rate = in_stream->avg_frame_rate.num/in_stream->avg_frame_rate.den;//每秒多少帧
}
m_video_frame_count = in_stream->nb_frames; //视频帧数
//m_vcodec_name = in_stream->codec->codec_name; //获取编码器名称。不行,
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2019-10-27 10:29 MediaFileInfoList\
目录 0 2019-10-27 10:29 MediaFileInfoList\Debug\
文件 22285824 2018-04-15 08:51 MediaFileInfoList\Debug\avcodec-57.dll
文件 6437376 2018-04-15 08:51 MediaFileInfoList\Debug\avfilter-6.dll
文件 3991552 2018-04-15 08:51 MediaFileInfoList\Debug\avformat-57.dll
文件 693248 2018-04-15 08:51 MediaFileInfoList\Debug\avutil-55.dll
文件 23730 2019-10-27 10:00 MediaFileInfoList\Debug\BuildLog.htm
文件 388096 2019-10-27 10:28 MediaFileInfoList\Debug\MediaFileInfoList.exe
文件 116224 2018-04-15 08:51 MediaFileInfoList\Debug\postproc-54.dll
文件 324096 2018-04-15 08:51 MediaFileInfoList\Debug\swresample-2.dll
文件 504320 2018-04-15 08:51 MediaFileInfoList\Debug\swscale-4.dll
文件 7002 2019-10-27 10:00 MediaFileInfoList\FFMediaInfoReader.cpp
文件 2907 2019-10-27 09:51 MediaFileInfoList\FFMediaInfoReader.h
文件 5694 2016-05-12 11:36 MediaFileInfoList\FileInfo.cpp
文件 1285 2016-05-12 09:48 MediaFileInfoList\FileInfo.h
文件 1209 2019-10-26 17:21 MediaFileInfoList\FuncUtils.cpp
文件 549 2019-10-26 17:21 MediaFileInfoList\FuncUtils.h
目录 0 2019-10-26 16:44 MediaFileInfoList\include\
文件 5729 2018-04-15 08:48 MediaFileInfoList\include\inttypes.h
目录 0 2019-10-26 16:44 MediaFileInfoList\include\libavcodec\
文件 217772 2018-04-15 08:48 MediaFileInfoList\include\libavcodec\avcodec.h
文件 2570 2018-04-15 08:48 MediaFileInfoList\include\libavcodec\avdct.h
文件 3111 2018-04-15 08:48 MediaFileInfoList\include\libavcodec\avfft.h
文件 2853 2018-04-15 08:48 MediaFileInfoList\include\libavcodec\d3d11va.h
文件 4044 2018-04-15 08:48 MediaFileInfoList\include\libavcodec\dirac.h
文件 3715 2018-04-15 08:48 MediaFileInfoList\include\libavcodec\dv_profile.h
文件 2361 2018-04-15 08:48 MediaFileInfoList\include\libavcodec\dxva2.h
文件 1650 2018-04-15 08:48 MediaFileInfoList\include\libavcodec\jni.h
文件 2825 2018-04-15 08:48 MediaFileInfoList\include\libavcodec\mediacodec.h
文件 3763 2018-04-15 08:48 MediaFileInfoList\include\libavcodec\qsv.h
文件 4550 2018-04-15 08:48 MediaFileInfoList\include\libavcodec\vaapi.h
............此处省略137个文件信息
相关资源
- 使用FFmpeg采集摄像头图像和麦克风音
- opencv_ffmpeg249.dll
- FFmpeg-3.1 windows vs2013编译动态库静态库
- 基于FFmpeg4.0.2的AAC编码器
- FFmpeg获取网络摄像头数据解码
- Qt写的Windows下屏幕录制程序源码
- Windows下使用FFMPEG解码AAC文件并使用
- ffmpeg转换MP4为JPG帧图片
- ffmpeg解码sdl播放h264
- 最简单的利用ffmpeg获取视频的图片
- 最简单的基于FFmpeg的编码器 1.2
- vs2012调试ffmpeg.c
- 基于FFMPEG SDK流媒体开发1---解码媒体文
- ffmpeg 源码demo
- 最简单的基于FFMPEG的AVDevice的 1.2
- 最简单的基于FFMPEG的音频编码器 1.1
- 最简单的基于FFMPEG+SDL的视频播放器
- ffmpeg提取mp4关键帧保存为jpg.zip
- ffmpeg+qt的简单播放器
- 使用ffmpeg将多张图片生成H264裸流并获
- ffmpeg h264 转换jpg
- 利用FFmpeg将Jpeg图片转为任意视频容器
- ffmpeg exeWINXP的最后一个可运行版本
- 最简单的基于FFMPEG的视频编码器修正
- ffmpeg-vs2013
- 基于FFMPEG_SDL2_音视频播放_参考音频时
- ffmpeg-3.2-win32-shared.zip
- ffmpeg录音
- ffmpeg资料全
- ffmpeg_windows屏幕录制并编码成H264
评论
共有 条评论