資源簡(jiǎn)介
自己做的FFMPEG移植到VC下的開源工程:ffmpeg for MFC。
本工程將ffmpeg工程中的ffmpeg轉(zhuǎn)碼器(ffmpeg.c)移植到了VC環(huán)境下。并且使用MFC做了一套簡(jiǎn)單的界面。它可以完成一個(gè)視頻轉(zhuǎn)碼的基本功能:封裝格式以及編碼格式的轉(zhuǎn)換。通過本程序可以學(xué)習(xí)視頻轉(zhuǎn)碼器的原理,以及Windows的消息機(jī)制等知識(shí)。
更新記錄==============================
1.1版(2014.7.12)
* 更換了部分界面
* 原工程支持Unicode編碼
* 修復(fù)了一部分內(nèi)存泄露的問題
* 修正了ffmpeg.c中的exit_program()函數(shù)。保證在轉(zhuǎn)碼結(jié)束后可以釋放資源。
* 修正了一部分“任務(wù)列表”的功能
* 修正了添加任務(wù)的時(shí)候“要用按鈕去選輸入文件,不能自己直接輸入”的問題。
1.2版(2014.8.16)
*增加了“內(nèi)部轉(zhuǎn)碼”和“外部轉(zhuǎn)碼”選項(xiàng)。“內(nèi)部轉(zhuǎn)碼”即通過原先移植的ffmpeg.c進(jìn)行轉(zhuǎn)碼。“外部轉(zhuǎn)碼”支持作為一個(gè)GUI直接調(diào)用ffmpeg.exe進(jìn)行轉(zhuǎn)碼。
代碼片段和文件信息
/*
?*?Various?utilities?for?command?line?tools
?*?Copyright?(c)?2000-2003?Fabrice?Bellard
?*
?*?This?file?is?part?of?FFmpeg.
?*
?*?FFmpeg?is?free?software;?you?can?redistribute?it?and/or
?*?modify?it?under?the?terms?of?the?GNU?Lesser?General?Public
?*?License?as?published?by?the?Free?Software?Foundation;?either
?*?version?2.1?of?the?License?or?(at?your?option)?any?later?version.
?*
?*?FFmpeg?is?distributed?in?the?hope?that?it?will?be?useful
?*?but?WITHOUT?ANY?WARRANTY;?without?even?the?implied?warranty?of
?*?MERCHANTABILITY?or?FITNESS?FOR?A?PARTICULAR?PURPOSE.??See?the?GNU
?*?Lesser?General?Public?License?for?more?details.
?*
?*?You?should?have?received?a?copy?of?the?GNU?Lesser?General?Public
?*?License?along?with?FFmpeg;?if?not?write?to?the?Free?Software
?*?Foundation?Inc.?51?Franklin?Street?Fifth?Floor?Boston?MA?02110-1301?USA
?*/
#include?
#include?
#include?
#include?
/*?Include?only?the?enabled?headers?since?some?compilers?(namely?Sun
???Studio)?will?not?omit?unused?inline?functions?and?create?undefined
???references?to?libraries?that?are?not?being?built.?*/
#include?“config.h“
#include?“compat/va_copy.h“
#include?“l(fā)ibavformat/avformat.h“
#include?“l(fā)ibavfilter/avfilter.h“
#include?“l(fā)ibavdevice/avdevice.h“
#include?“l(fā)ibavresample/avresample.h“
#include?“l(fā)ibswscale/swscale.h“
#include?“l(fā)ibswresample/swresample.h“
#if?CONFIG_POSTPROC
#include?“l(fā)ibpostproc/postprocess.h“
#endif
#include?“l(fā)ibavutil/avassert.h“
#include?“l(fā)ibavutil/avstring.h“
#include?“l(fā)ibavutil/mathematics.h“
#include?“l(fā)ibavutil/imgutils.h“
#include?“l(fā)ibavutil/parseutils.h“
#include?“l(fā)ibavutil/pixdesc.h“
#include?“l(fā)ibavutil/eval.h“
#include?“l(fā)ibavutil/dict.h“
#include?“l(fā)ibavutil/opt.h“
#include?“cmdutils.h“
//#include?“version.h“
#if?CONFIG_NETWORK
#include?“l(fā)ibavformat/network.h“
#endif
#if?HAVE_SYS_RESOURCE_H
#include?
#endif
struct?SwsContext?*sws_opts;
SwrContext?*swr_opts;
AVDictionary?*format_opts?*codec_opts;
const?int?this_year?=?2012;
static?FILE?*report_file;
const?AVPixFmtDescriptor?av_pix_fmt_descriptors[PIX_FMT_NB];
void?init_opts(void)
{
????/*if(CONFIG_SWSCALE)
????????sws_opts?=?sws_getContext(16?16?0?16?16?0?SWS_BICUBIC
??????????????????????????????NULL?NULL?NULL);
????if(CONFIG_SWRESAMPLE)
????????swr_opts?=?swr_alloc();*/
}
void?uninit_opts(void)
{
#if?CONFIG_SWSCALE
????sws_freeContext(sws_opts);
????sws_opts?=?NULL;
#endif
?//???if(CONFIG_SWRESAMPLE)
?//???????swr_free(&swr_opts);
????av_dict_free(&format_opts);
????av_dict_free(&codec_opts);
}
void?log_callback_help(void?*ptr?int?level?const?char?*fmt?va_list?vl)
{
????vfprintf(stdout?fmt?vl);
}
static?void?log_callback_report(void?*ptr?int?level?const?char?*fmt?va_list?vl)
{
????va_list?vl2;
????char?line[1024];
????static?int?print_prefix?=?1;
????va_copy(vl2?vl);
????av_log_default_callback(ptr?level?fmt?vl);
????av_log_format_line(ptr?level?fmt?vl2?line?sizeof(line)?&print_prefix);
????va_end(vl2);
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2014-08-16?00:20??ffmpegmfc\
?????文件??????????44??2014-06-05?19:14??ffmpegmfc\.gitignore
?????文件?????????326??2014-08-16?00:21??ffmpegmfc\ChangeLog
?????目錄???????????0??2014-08-16?00:22??ffmpegmfc\ffmpegmfc\
?????文件?????????894??2014-05-27?21:37??ffmpegmfc\ffmpegmfc.sln
?????文件???????50176??2014-08-16?00:14??ffmpegmfc\ffmpegmfc.suo
?????文件??????????27??2014-06-05?19:14??ffmpegmfc\ffmpegmfc\.gitignore
?????文件????15042560??2012-10-11?07:22??ffmpegmfc\ffmpegmfc\avcodec-54.dll
?????文件??????390656??2012-10-11?07:22??ffmpegmfc\ffmpegmfc\avdevice-54.dll
?????文件?????1737728??2012-10-11?07:22??ffmpegmfc\ffmpegmfc\avfilter-3.dll
?????文件?????2900480??2012-10-11?07:22??ffmpegmfc\ffmpegmfc\avformat-54.dll
?????文件??????235008??2012-10-11?07:22??ffmpegmfc\ffmpegmfc\avutil-51.dll
?????文件???????52814??2014-01-24?14:52??ffmpegmfc\ffmpegmfc\cmdutils.c
?????文件???????15774??2014-01-24?12:52??ffmpegmfc\ffmpegmfc\cmdutils.h
?????文件????????4265??2012-10-12?15:56??ffmpegmfc\ffmpegmfc\cmdutils_common_opts.h
?????文件???????26500??2012-10-12?16:31??ffmpegmfc\ffmpegmfc\config.h
?????文件??????116850??2014-07-09?22:53??ffmpegmfc\ffmpegmfc\ffmpeg.c
?????文件????27388928??2014-04-20?10:07??ffmpegmfc\ffmpegmfc\ffmpeg.exe
?????文件???????12767??2014-07-09?22:53??ffmpegmfc\ffmpegmfc\ffmpeg.h
?????文件??????529744??2014-08-16?00:14??ffmpegmfc\ffmpegmfc\ffmpegmfc.aps
?????文件????????3237??2014-08-15?18:08??ffmpegmfc\ffmpegmfc\ffmpegmfc.cpp
?????文件?????????885??2014-06-07?13:19??ffmpegmfc\ffmpegmfc\ffmpegmfc.h
?????文件???????66528??2014-08-16?00:14??ffmpegmfc\ffmpegmfc\ffmpegmfc.rc
?????文件????????8304??2014-07-12?15:51??ffmpegmfc\ffmpegmfc\ffmpegmfc.vcxproj
?????文件????????3293??2014-06-07?15:40??ffmpegmfc\ffmpegmfc\ffmpegmfc.vcxproj.filters
?????文件?????????143??2014-05-10?11:39??ffmpegmfc\ffmpegmfc\ffmpegmfc.vcxproj.user
?????文件???????31077??2014-08-15?23:59??ffmpegmfc\ffmpegmfc\ffmpegmfcDlg.cpp
?????文件????????4414??2014-08-15?18:09??ffmpegmfc\ffmpegmfc\ffmpegmfcDlg.h
?????文件???????32466??2012-10-12?16:34??ffmpegmfc\ffmpegmfc\ffmpeg_filter.c
?????文件???????98813??2014-06-06?11:13??ffmpegmfc\ffmpegmfc\ffmpeg_opt.c
?????目錄???????????0??2014-08-16?00:16??ffmpegmfc\ffmpegmfc\include\
............此處省略204個(gè)文件信息
評(píng)論
共有 條評(píng)論