资源简介
自己做的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个文件信息
相关资源
- 基于MFC的图像的拼接系统
- C++ 通过FFmpeg将rtsp视频流到本地mp4文件
- windows下的ffmpeg、MFC制作的播放器
- FFmpeg x86 x64库
- 基于VC++利用MFC做的图书管理系统
- MFC智能停车场管理系统
- VC++用MFC做选课系统
- MFC VC++实现Sierpinski分形图像
- MFC基于对话框的气体浓度检测系统
- 功能强大的多条曲线绘制类 (MFC,
- MFC_带进度条的状态栏
- 用C++写的FTP客户端
- c++编写的十字路口交通灯程序
- 禁忌搜索算法30城市TSP问题C++源代码
- MFC多人聊天室
- MFC深入浅出带目录完整版
- C++实现AES、DES加密算法含MFC界面
- MFC写的一个汉字取模软件
- MFC Tab control 重绘便签边框和主框 背景
- High-speed Charting ControlMFC绘图控件
- VC6.0MFC界面美化
- 基于MFC的无线串口调试工具-哈工大威
- 24点应用游戏MFC版
- 页面置换算法用MFC实现了
- win7风格的mfc界面美化源代码
- MFC 绘制指针式钟表
- BCGControlBar Professional v.28 Full Source
- MFC游戏编程几款经典小游戏的详细代
- 网络调试助手C++源码(VS 2008开发)
- MFC 官方API文档 MSDN原版
评论
共有 条评论