資源簡介
采用ffmpeg把任意MPEG4文件解碼后,打入DVD碼流,寫入VOB文件,支持DVD播放。提供源碼和測試程序。ffmpeg可以自行下載。

代碼片段和文件信息
#include?
#include?
#include?
#include?
extern?“C“??
{???????????????????????????????
????#include?“libavformat/avformat.h“
????#include?“libavdevice/avdevice.h“
????#include?“libavcodec/avcodec.h“
}
#pragma?comment(lib?“avcodec.lib“)
#pragma?comment(lib?“avformat.lib“)
#pragma?comment(lib?“avutil.lib“)
#pragma?comment(lib?“swscale.lib“)
#pragma?comment(lib?“avdevice.lib“)
#pragma?comment(lib?“avfilter.lib“)
#undef?exit
/****************************************************************************************************************************************/
#define?STREAM_DURATION??5.0
#define?STREAM_frame_RATE??3.0
#define?STREAM_NB_frameS?((int)(STREAM_DURATION*STREAM_frame_RATE))
#define?STREAM_PIX_FMT??PIX_FMT_YUV420P??????//????對于YUV420的結構
AVframe?*picture*tmp_picture;?????//AVframe為結構體,具體的定義在line?846?of?file?avcodec.h
uint8_t?*video_outbuf;?????????????//關于uint8_t的解釋???網址:http://blog.163.com/luokun_9/blog/static/20818832200761033146831/
int?frame_countvideo_outbuf_size;
main(int?argcchar?**argv)
{
????int?a;
const?char?*input_file_name=“d:/aaa.m4v“;
av_register_all();???//初始化的作用??注冊庫中所有可用的文件格式和編碼器??????Definition?at?line?597?of?file?avformat.h
AVFormatContext?*ic;??????//為結構體,在其中定義了編解碼所需要的變量???Definition?at?line?401?of?file?avformat.h
/**
?*?Allocate?an?AVFormatContext.
?*?Can?be?freed?with?av_free()?but?do?not?forget?to?free?everything?you
?*?explicitly?allocated?as?well!
*/
ic=av_alloc_format_context();?//?Allocate?an?AVFormatContext.???Definition?at?line?646?of?file?avformat.h
if(av_open_input_file(&icinput_file_nameNULL0NULL)!=0)???//open?input?file???Definition?at?line?637?of?file?avformat.h
{
printf(“can?not?open?the?file?%s\n“input_file_name);
exit(1);
}//檢驗是否成功的打開文件
if(av_find_stream_info(ic)<0)???//Read?packets?of?a?media?file?to?get?stream?information.????Definition?at?line?660?of?file?avformat.h??
{
printf(“can?not?find?suitable?codec?parameters\n“);
exit(1);
}//檢驗視頻文件中,是否有數據流,并檢驗是否能成功取出
dump_format(ic0input_file_name0);??//列出輸入文件的相關流信息?????Definition?at?line?884?of?file?avformat.h???最后一位:判斷是否是輸出,若是輸出則該位為1
/******************************************************************************************************************************************/
int?i;
int?videoindex=-1;??????????
int?audioindex=-1;
for(i=0;inb_streams;i++)
{
if(ic->streams[i]->codec->codec_type==CODEC_TYPE_VIDEO)?????//指針數組stream[i]的類型是結構體AVStream??表示音頻和視頻的數據流???Definition?at?line?295?of?file?avformat.h?
????????????????????????????????????????????????????????//codec的數據類型是結構體AVCodecContext???表示關于編解碼的標準位????Definition?at?line?800?of?file?avcodec.h
{
videoindex=i;
printf(“video\n“);
}
else?if(ic->streams[i]->codec->codec_type==CODEC_TYPE_AUDIO)
{
audioindex=i;
printf(“audio\n“);
}
}
/*******************************************************************************************
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????14929??2009-11-23?09:46??testsrc\23.cpp
?????文件???????3353??2009-11-23?09:46??testsrc\23.dsp
?????文件????????529??2009-11-23?09:47??testsrc\23.dsw
?????文件??????33792??2009-11-23?09:47??testsrc\23.ncb
?????文件??????48640??2009-11-23?09:47??testsrc\23.opt
?????文件????????726??2009-11-23?09:46??testsrc\23.plg
?????文件?????163961??2009-11-23?09:46??testsrc\Debug\23.exe
?????文件?????207968??2009-11-23?09:46??testsrc\Debug\23.ilk
?????文件??????23297??2009-11-23?09:46??testsrc\Debug\23.obj
?????文件?????235796??2009-11-23?09:46??testsrc\Debug\23.pch
?????文件?????369664??2009-11-23?09:46??testsrc\Debug\23.pdb
?????文件??????50176??2009-11-23?09:46??testsrc\Debug\vc60.idb
?????文件??????69632??2009-11-23?09:46??testsrc\Debug\vc60.pdb
?????文件?????163961??2009-11-23?09:46??bin-test\23.exe
?????文件????7276032??2008-04-12?22:21??bin-test\avcodec.dll
?????文件??????10752??2008-04-12?22:21??bin-test\avdevice.dll
?????文件??????14336??2008-04-12?22:21??bin-test\avfilter.dll
?????文件?????666624??2008-04-12?22:21??bin-test\avformat.dll
?????文件??????57344??2008-04-12?22:21??bin-test\avutil.dll
?????文件??????89273??2008-02-16?17:18??bin-test\pthreadGC2.dll
?????文件????1760356??2008-02-16?17:03??bin-test\SDL.dll
?????文件?????158208??2008-04-12?22:21??bin-test\swscale.dll
?????文件?????742220??2008-03-02?20:40??bin-test\xvidcore.dll
?????目錄??????????0??2009-11-23?09:52??testsrc\Debug
?????目錄??????????0??2009-11-23?09:52??testsrc
?????目錄??????????0??2009-11-23?09:54??bin-test
-----------?---------??----------?-----??----
?????????????12161569????????????????????26
- 上一篇:二代身份證讀卡器API接口
- 下一篇:微信小程序完整Demo--支持人工智能對話查詢
評論
共有 條評論