資源簡介
自己做的FFMPEG移植到VC下的開源工程:ffmpeg for MFC。
本工程將ffmpeg工程中的ffmpeg轉碼器(ffmpeg.c)移植到了VC環境下。并且使用MFC做了一套簡單的界面。它可以完成一個視頻轉碼的基本功能:封裝格式以及編碼格式的轉換。通過本程序可以學習視頻轉碼器的原理,以及Windows的消息機制等知識。
更新記錄==============================
1.1版(2014.7.12)
* 更換了部分界面
* 原工程支持Unicode編碼
* 修復了一部分內存泄露的問題
* 修正了ffmpeg.c中的exit_program()函數。保證在轉碼結束后可以釋放資源。
* 修正了一部分“任務列表”的功能
* 修正了添加任務的時候“要用按鈕去選輸入文件,不能自己直接輸入”的問題。
1.2版(2014.8.16)
*增加了“內部轉碼”和“外部轉碼”選項。“內部轉碼”即通過原先移植的ffmpeg.c進行轉碼。“外部轉碼”支持作為一個GUI直接調用ffmpeg.exe進行轉碼。
代碼片段和文件信息
/*
?*?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?“libavformat/avformat.h“
#include?“libavfilter/avfilter.h“
#include?“libavdevice/avdevice.h“
#include?“libavresample/avresample.h“
#include?“libswscale/swscale.h“
#include?“libswresample/swresample.h“
#if?CONFIG_POSTPROC
#include?“libpostproc/postprocess.h“
#endif
#include?“libavutil/avassert.h“
#include?“libavutil/avstring.h“
#include?“libavutil/mathematics.h“
#include?“libavutil/imgutils.h“
#include?“libavutil/parseutils.h“
#include?“libavutil/pixdesc.h“
#include?“libavutil/eval.h“
#include?“libavutil/dict.h“
#include?“libavutil/opt.h“
#include?“cmdutils.h“
//#include?“version.h“
#if?CONFIG_NETWORK
#include?“libavformat/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);
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????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個文件信息
評論
共有 條評論