`

ffmpeg转码器移植VC的工程:ffmpeg for MFC

 
阅读更多

本文介绍一个自己做的FFMPEG移植到VC下的开源工程:ffmpeg for MFC。本工程将ffmpeg工程中的ffmpeg转码器(ffmpeg.c)移植到了VC环境下。并且使用MFC做了一套简单的界面。它可以完成一个视频转码的基本功能:封装格式以及编码格式的转换。通过本程序可以学习视频转码器的原理,以及Windows的消息机制等知识。

平台:VC2010

类库:FFmpeg,MFC

目前正在完善中,先不上传到CSDN下载了。在SourceForge上建立了一个项目。

SourceForge项目主页:

https://sourceforge.net/projects/ffmpegformfc

 

更新记录==============================

1.1版(2014.7.12)

* 更换了部分界面

* 原工程支持Unicode编码

* 修复了一部分内存泄露的问题

* 修正了ffmpeg.c中的exit_program()函数。保证在转码结束后可以释放资源。

* 修正了一部分“任务列表”的功能

* 修正了添加任务的时候“要用按钮去选输入文件,不能自己直接输入”的问题。

 

1.2版(2014.8.16)

*增加了“内部转码”和“外部转码”选项。“内部转码”即通过原先移植的ffmpeg.c进行转码。“外部转码”支持作为一个GUI直接调用ffmpeg.exe进行转码。

 

发现SourceForge速度很慢,有的时候几乎访问不了,因此还是打算在CSDN上上传了一下源代码和编译后的可执行程序。结果昨天传了一晚上竟然没有传上去。。。每次上传完在自己资源列表里面都看不到,很是郁闷。结果今天早上起来猛然发现资源列表里面竟然有好几份。。。这个延迟有点大啊,不过好歹传上去了。

地址:http://download.csdn.net/detail/leixiaohua1020/7764529

 

 

 

一.主界面

程序的主界面如图所示。主界面中包含一个任务列表,其中包含了需要转码的任务。下方是转码的控制按钮,并且包含了转码的进度信息。

1.1.任务列表

任务列表包含了需要转码的任务。列表的上方包含了4个按钮,包含了对任务列表的4种操作:添加,编辑,删除,清空。此外,在任务列表中选择一个任务然后单击右键,也可以在右键菜单中选择这4项操作。这4项操作如下:

添加:新增加一个任务。

编辑:修改现有的一个任务。

删除:删除一个任务。

清空:删除所有的任务。

列表显示了任务的信息。包含:序号,输入,大小,输出,状态。含义如下:

序号:编号。

输入:输入文件名称。

大小:输入文件大小。

输出:输出文件名称。

状态:该任务所处的状态(准备,处理中,已完成)。

1.2.控制按钮

控制按钮完成了对转码过程的控制功能。包含:开始,暂停,停止。

开始:系统开始转码。

暂停:系统暂停转码。

停止:系统停止转码。

 

 

 

二.任务信息窗口

任务信息窗口用于配置一条任务信息。其中包含了三个部分:输入和输出,输入文件信息,输出配置。

2.1.输入和输出

输入和输出部分用于指定该任务的输入文件和输出文件。输入文件即准备进行转码的文件,输出文件即转码后生成的文件。可以直接在输入框中输入文件路径,也可以单击输入框右侧的“文件”按钮选择文件。此外还可以直接将文件拖拽至对话框的方式选择输入文件。

选择输入文件后,程序会检查输入文件的格式信息。如果输入文件不是视音频文件,程序会报出错误信息。如果输入文件为视音频文件,程序会检测该文件的参数信息,包括封装格式,视频编码,音频编码等信息。并将检测结果显示在“输入文件信息”部分。

为了方便起见,选择输入文件后,程序会在输入文件的目录下生成名为“{输入文件名称}_ffmfc.mkv”的输出文件。可以对该输出文件路径和名称进行更改。

 

2.2.输入文件信息

包含:封装格式,视频比特率,时长,输出像素格式,视频编码方式,帧率,画面大小,采样率,音频编码方式,声道数。

 

 

2.3.输出配置

封装格式

输入封装格式:强制指定输入文件的格式。默认情况下ffmpeg是通过输入文件的后缀判断文件格式的。如果指定了这个选项,则按照该指定的格式对文件进行解析。

输出封装格式:强制指定输出文件的格式。默认情况下ffmpeg是通过输出文件的后缀判断文件格式的。如果指定了这个选项,则按照该指定的格式对文件进行转码。

视频

比特率:视频的码率,默认800kbps。

编码器:视频编码使用的编码器。

帧率:视频编码使用的帧率,默认25fps。

音频

比特率:音频的码率,默认64kbps。

编码器:音频编码使用的编码器。

采样率:音频的采样率,默认44100Hz。

声道数:音频的声道数,默认是2。

 

 

输出的封装格式,视频编码格式,音频编码格式以列表的形式显示出来,可以自行选择。

 

 

三.系统支持信息窗口

系统支持信息窗口列表显示了系统的支持信息。包括系统支持的:协议,输入封装格式,输出封装格式,视频解码器,音频解码器,以及其他解码器(字幕解码器)。例如从视频解码器列表中可以看出本程序支持的视频编码器包含libx264,libvpx等等。

 

 

四.菜单

程序上端的菜单中包含了更丰富的选项。一共分成5部分的功能:任务,控制,视图,语言,帮助。下面分别介绍。

任务:对任务列表进行添加,编辑,删除,清空操作。

 

 

控制:控制转码的开始,暂停,停止。

 

语言:设置界面的语言。

 

 

五.英文界面

英文界面截图如下所示。

主界面

 

任务信息窗口

 

系统支持信息窗口

 

 

 

分享到:
评论

相关推荐

    ffmpeg for MFC 1.2 (源代码)

    自己做的FFMPEG移植到VC下的开源工程:ffmpeg for MFC。 本工程将ffmpeg工程中的ffmpeg转码器(ffmpeg.c)移植到了VC环境下。并且使用MFC做了一套简单的界面。它可以完成一个视频转码的基本功能:封装格式以及编码...

    ffplayformfc-code.zip_ffmpeg_ffmpeg MFC_ffmpeg vc_ffmpeg播放器mfc_f

    在这个名为 "ffplayformfc-code.zip_ffmpeg_ffmpeg MFC_ffmpeg vc_ffmpeg播放器mfc_f" 的压缩包中,开发者已经将 FFmpeg 的原生命令行播放器 `ffplay` 移植到了 Microsoft Visual C++ (VC++) 的环境中,并结合了 MFC...

    ffmpeg for MFC 1.2 测试版

    FFMPEG移植到VC下的开源工程:ffmpeg for MFC。本工程将ffmpeg工程中的ffmpeg转码器(ffmpeg.c)移植到了VC环境下。并且使用MFC做了一套简单的界面。它可以完成一个视频转码的基本功能:封装格式以及编码格式的转换...

    最简单的基于FFMPEG的转码器(源代码)

    FFMPEG工程浩大,可以参考的书籍又不是很多...尽管该视频转码器的代码十分简单,但是几乎包含了使用FFMPEG转码一个视频所有必备的API。十分适合FFmpeg的初学者。 工程基于VC2010。 使用了2014.5.6版本的FFmpeg类库。

    基于FFMPEG的转码器(源代码)

    FFMPEG工程浩大,可以参考的书籍又不是很多,... 尽管该视频转码器的代码十分简单,但是几乎包含了使用FFMPEG转码一个视频所有必备的API。十分适合FFmpeg的初学者。 工程基于VC2010。 使用了2014.5.6版本的FFmpeg类库。

    ffmpeg转码截取、截图、合并

    在Java环境中,我们可以通过调用FFmpeg的命令行接口来实现对视频的各种处理,包括转码、截取、截图以及合并等功能。以下是对这些功能的详细讲解。 1. **视频转码**: 转码是指将视频文件从一种编码格式转换为另一...

    ffmpeg视频转码器

    FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec,为了...

    FFMPEG 转码

    FFMPEG 转码,说明如何使用FFMPEG技术对视频进行转码操作

    ffmpeg转码为hls代码

    ffmpeg转码为hls的代码,里面涉及具体的转码流程以及参数设置.ffmpeg转码为hls的代码,里面涉及具体的转码流程以及参数设置

    FFmpeg视频转码压缩

    1. FFmpeg组件:FFmpeg主要由ffmpeg命令行工具、libavcodec编码库、libavformat封装库、libavfilter滤镜库和libavutil通用工具库组成。在Android上,我们通常通过JNI接口调用这些库来实现视频处理。 2. 视频转码:...

    ffmpeg转码推流

    FFmpeg是一款强大的开源工具,主要用于音视频处理,包括但不限于转码、封装、解码、剪辑、合并等操作。在IT行业中,FFmpeg是音视频处理领域的标准工具,广泛应用于视频流媒体服务、多媒体开发、内容创作等多个领域。...

    ffmpeg教程 C++ MFC VC

    在C++环境中,尤其是在MFC(Microsoft Foundation Classes)或VC++(Visual C++)的开发中,FFmpeg库可以帮助开发者实现音视频的编码、解码、转码、播放等功能。本教程将引导你了解如何在C++中使用FFmpeg进行多媒体...

    VC ffmpeg 视频编码工程:ffmpeg_Encode.zip

    这个名为“VC ffmpeg 视频编码工程:ffmpeg_Encode.zip”的压缩包文件提供了一个使用 VC(Visual C++)在 64 位环境下构建的工程示例,它利用 FFmpeg 库实现了 h264 视频编码。下面我们将深入探讨相关的技术知识点。...

    ffmpeg 音视频转码

    FFmpeg 是一个开源的音视频处理工具,广泛应用于音视频的转码、剪辑、合并、提取、格式转换等操作。在Windows环境下,它提供了一套静态编译的版本,使得用户无需安装额外的编译环境,即可直接使用。本文将深入探讨...

    使用ffmpeg转码pcm至aac格式

    一个使用使用ffmpeg转码pcm至aac格式的完整工程,VS可打开直接编译运行的。 理论上! 介绍:http://blog.csdn.net/arbboter/article/details/43058363

    ffmpeg使用教程及VC可编译代码

    首先,FFmpeg的使用涵盖了许多领域,包括视频编码、解码、转码、格式转换以及流媒体处理。其强大的功能使得开发者能够轻松处理各种音视频格式,实现复杂的多媒体应用。FFmpeg库提供了丰富的API,允许开发者深入底层...

    ffmpeg转码Windows

    标题“ffmpeg转码Windows”表明我们将讨论如何在Windows操作系统上使用FFmpeg进行视频和音频的转码操作。描述中的"ffmpeg-20190107-038d291-win64-static"是FFmpeg的一个特定版本,为Windows 64位系统提供的静态编译...

    ffmpeg-0.5_VC 自己用VC编译的ffmpeg 可调试

    ffmpeg-0.5_VC 自己用VC编译的ffmpeg 可调试 方便学习ffmpeg框架原理 文档介绍: http://hi.baidu.com/sonyps201314/blog/item/b13b88d3ddfbd6f2562c8472.html

    易语言ffmpeg进度转码源码

    易语言ffmpeg进度转码源码是一个使用易语言编程实现的示例,主要目的是演示如何利用ffmpeg库进行视频或音频的转码,并同时显示转码的进度。ffmpeg是一个强大的跨平台多媒体处理工具,它支持多种编码格式,能进行音...

    ffmpeg转theora的VC程序

    本项目"ffmpeg转theora的VC程序"显然涉及到使用FFmpeg库在VC环境中将视频文件转换为Theora格式。 在实际操作中,首先需要确保你的开发环境已经配置好,包括安装了Visual Studio和必要的编译器支持。然后,你需要...

Global site tag (gtag.js) - Google Analytics