資源簡介
基于FFMPEG SDK流媒體開發1---解碼媒體文件流信息 沒有下載積分了 ,,都施舍點吧
代碼片段和文件信息
//?ffmpeg_test.cpp?:?定義控制臺應用程序的入口點。
//
#include?“stdafx.h“??
#include?
#ifdef?_CPPRTTI
extern?“C“??
{
#endif
#include?“libavcodec/avcodec.h“??//編解碼器
#include?“libavformat/avformat.h“?//格式上下文?
#include?“libavformat/avio.h“??//音視頻IO
#include?“libavutil/file.h“??//處理文件
#ifdef?_CPPRTTI??
};
#endif
void??SetStdClr(WORD?wd)
{
SetConsoleTextAttribute(::GetStdHandle(STD_OUTPUT_HANDLE)wd?);
}
int?_tmain(int?argc?_TCHAR*?argv[])
{???
//注冊所有?編碼器??解析器?二進制流過濾器
?av_register_all();
?avcodec_register_all();
?SetStdClr(FOREGROUND_RED?|???FOREGROUND_GREEN);
?AVFormatContext?*pContext=NULL;//格式上下文
?int?errNo=0?;
?pContext=avformat_alloc_context();
?//打開輸入文件?新接口
?if(0==avformat_open_input(&pContext“.\\test.mp4“nullptrNULL)){
?printf(“打開文件輸入成功!\n“);
?}else
?return??0;
?//從上下文檢索流信息
if(0==avformat_find_stream_info(pContextNULL))
{
printf(“獲取流信息成功!\n“);
}else
return?0?;
//循環多個流
?SetStdClr(FOREGROUND_RED?|???FOREGROUND_BLUE);
for?(unsigned?int?i=0;inb_streams;i++)
{???
//媒體流?
AVStream?*pStream?=?pContext->streams[i];
//幀率信息?為有理數/無理數
AVRational?frame?=pStream->r_frame_rate;??
//?時間比率單位
AVRational?timebase?=?pStream->time_base;?
//流的持續時間??比特率
int64_t?duration=???pStream->duration?;?
printf(“媒體持續時間%d\n“duration);
//獲取編碼類型
AVCodecContext?*pCodecContext=pStream->codec?;
//獲取?媒體類型
/************************************************************************/
/*?
enum?AVMediaType?{
AVMEDIA_TYPE_UNKNOWN?=?-1??/// AVMEDIA_TYPE_VIDEO
AVMEDIA_TYPE_AUDIO
AVMEDIA_TYPE_DATA??????????/// AVMEDIA_TYPE_SUBtitle
AVMEDIA_TYPE_ATTACHMENT????/// AVMEDIA_TYPE_NB
};
?????????????????????????????????????????????????????????????????????*/
/************************************************************************/
AVMediaType?avMediaType=pCodecContext->codec_type;
//編碼器ID
AVCodecID?codecID=pCodecContext->codec_id?;
if(avMediaType?==?AVMEDIA_TYPE_AUDIO)
{
//如果是視頻
int?audioChannels?=?pCodecContext->channels;
int?samplerate?=?pCodecContext->sample_rate;
PixelFormat?pixelFormat?=?pCodecContext->pix_fmt;
printf(“Stream%d音頻\n“i);
printf(“音頻采樣頻率%d/%d\n“timebase.numtimebase.den);
printf(“音頻時間單位%d/%d\n“timebase.numtimebase.den);
printf(“音頻通道數%d\n“audioChannels);
}
else?if(avMediaType?==?AVMEDIA_TYPE_VIDEO)
{
//如果是音頻
int?videoWidth?=?pCodecContext->width;
int?videoHeight?=?pCodecContext->height;
AVSampleFormat?sampleFmt?=?pCodecContext->sample_fmt;
printf(“Stream%d視頻\n“i);
printf(“幀率幀率%d/%d\n“frame.denframe.num);
printf(“視頻時間單位%d/%d\n“timebase.numtimebase.den);
printf(“圖像寬度:%d\t高度:%d\t%\n“videoWidthvideoHeight);
printf(“圖像寬度:%d\t高度:%d\t%\n“videoWidthvideoHeight);
}
switch(codecID)
{
case??
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件?????179942??2014-12-16?15:50??ffmpeg_test\ffmpeg\include\libavcodec\avcodec.h
?????文件???????3111??2014-12-16?15:50??ffmpeg_test\ffmpeg\include\libavcodec\avfft.h
?????文件???????3998??2014-12-16?15:50??ffmpeg_test\ffmpeg\include\libavcodec\dv_profile.h
?????文件???????2358??2014-12-16?15:50??ffmpeg_test\ffmpeg\include\libavcodec\dxva2.h
?????文件??????10623??2014-12-16?15:50??ffmpeg_test\ffmpeg\include\libavcodec\old_codec_ids.h
?????文件???????4007??2014-12-16?15:50??ffmpeg_test\ffmpeg\include\libavcodec\vaapi.h
?????文件???????5437??2014-12-16?15:50??ffmpeg_test\ffmpeg\include\libavcodec\vda.h
?????文件???????7094??2014-12-16?15:50??ffmpeg_test\ffmpeg\include\libavcodec\vdpau.h
?????文件???????6340??2014-12-16?15:50??ffmpeg_test\ffmpeg\include\libavcodec\version.h
?????文件???????2317??2014-12-16?15:50??ffmpeg_test\ffmpeg\include\libavcodec\vorbis_parser.h
?????文件???????6062??2014-12-16?15:50??ffmpeg_test\ffmpeg\include\libavcodec\xvmc.h
?????文件??????16642??2014-12-16?15:50??ffmpeg_test\ffmpeg\include\libavdevice\avdevice.h
?????文件???????1859??2014-12-16?15:50??ffmpeg_test\ffmpeg\include\libavdevice\version.h
?????文件???????3321??2014-12-16?15:50??ffmpeg_test\ffmpeg\include\libavfilter\asrc_abuffer.h
?????文件???????2390??2014-12-16?15:50??ffmpeg_test\ffmpeg\include\libavfilter\avcodec.h
?????文件??????56887??2014-12-16?15:50??ffmpeg_test\ffmpeg\include\libavfilter\avfilter.h
?????文件????????975??2014-12-16?15:50??ffmpeg_test\ffmpeg\include\libavfilter\avfiltergraph.h
?????文件???????7539??2014-12-16?15:50??ffmpeg_test\ffmpeg\include\libavfilter\buffersink.h
?????文件???????4899??2014-12-16?15:50??ffmpeg_test\ffmpeg\include\libavfilter\buffersrc.h
?????文件???????2918??2014-12-16?15:50??ffmpeg_test\ffmpeg\include\libavfilter\version.h
?????文件?????102499??2014-12-17?01:46??ffmpeg_test\ffmpeg\include\libavformat\avformat.h
?????文件??????18871??2014-12-16?15:50??ffmpeg_test\ffmpeg\include\libavformat\avio.h
?????文件???????2391??2014-12-16?15:50??ffmpeg_test\ffmpeg\include\libavformat\version.h
?????文件???????1584??2014-12-16?15:50??ffmpeg_test\ffmpeg\include\libavutil\adler32.h
?????文件???????1834??2014-12-16?15:50??ffmpeg_test\ffmpeg\include\libavutil\aes.h
?????文件???????4230??2014-12-16?15:50??ffmpeg_test\ffmpeg\include\libavutil\attributes.h
?????文件?????????82??2014-12-16?15:50??ffmpeg_test\ffmpeg\include\libavutil\audioconvert.h
?????文件???????4475??2014-12-16?15:50??ffmpeg_test\ffmpeg\include\libavutil\audio_fifo.h
?????文件???????2113??2014-12-16?15:50??ffmpeg_test\ffmpeg\include\libavutil\avassert.h
?????文件????????211??2014-12-16?15:50??ffmpeg_test\ffmpeg\include\libavutil\avconfig.h
............此處省略128個文件信息
評論
共有 條評論