• 大小: 14.66MB
    文件类型: .zip
    金币: 2
    下载: 0 次
    发布日期: 2024-02-03
  • 语言: 其他
  • 标签: ffmpeg  

资源简介

一个含界面窗口的程序,调用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个文件信息

评论

共有 条评论