前段时间在翻看电脑里面资料时,发现了以前做的在嵌入式硬件上面运行以ffmepg为基础,以嵌入式硬件解码的多媒体播放工作,发现都快忘记完了。今日得闲整理温习了一下ffmpeg在嵌入式上的运用,这里给大家分享一下,顺便做了一下记录以备以后使用时参考。
本文(记录)与目前网上很多关于ffmpeg的文章相比有两个特点:
一、重点不在于ffmpeg的解码部分(这个本来是ffmpeg最大的亮点),为什么?前面说了,这是我以前工作的一个整理。况且关于ffmpeg的解码相关文章非常多了,如果大家感兴趣的话,可以后面第五部分增加吧。
二、本文是不采用其他第三方的开源多媒体框架而在嵌入式硬件上做多媒体播放项目。第三方的多媒体框架软件隐藏了一些扩展数据的关键处理,很多初学者可能不清楚这些细节问题,所以当ffmepg在自己的解码移植上没有问题,真正在用嵌入式硬件进行解码时会遇到这种问题。
本文将分篇来完成,每篇只力求把基本和重要的点讲述清楚,其他细节和不重要的就不详细描述,具体真实应用在此基础上展开细化应该不难实现一个基本基于ffmpeg的嵌入式播放器的需求。文章具体分篇如下:
(一) FFmpeg基本环境搭建及编译
(二) FFmpeg的解封装基本处理
(三) FFmpeg用于硬件设备解码的关键扩展数据处理
(四) FFmpeg用于硬件的track mode基本控制
(五) 根据情况吧。。。。。。
一、虚拟机安装
由于是在自己家里,不是工作环境,电脑还是装的windows7系统,于是开始安装虚拟机,我平时一直都喜欢用VMWare这个虚拟机,上次买了新电脑后一直都没有安装,这次必须先安装上。先是安装了最新的VMWare Workstation 11 + Ubuntu14.04,发现跑起来巨慢无比,难道是我的电脑落伍了?没有办法,也不想去折腾这个事情,还是老老实实换了一个VMWare Workstation 10.0.1 build-1379776 + Ubuntu-12.04.4-alternate-i386,最好跑起来还凑合。具体虚拟机和Ubuntu的安装过程就不详述了,网上文章一大堆。
二、配置并编译
下载最新版本的ffmpeg,目前稳定版本是ffmpeg-2.6.1。进入虚拟机解压:
配置:
然后进行make编译,最后出现错误:
原来忽略了直接在windows的共享目录中,解压到Linux目录中便不会出现这个问题了。当然如果我们编译的不是共享库,而是静态库,也不会出现这个问题,因为没有Linux的链接文件。
在Linux目录下,编译成功,生成我们的动态库:
这样我们生产了我们需要的动态库和头文件。
大家可能糊涂了,我现在是在pc上编译的,不能用于嵌入式设备上。这个我知道,我也没有办法,现在我已经没有以前的那些ARM的编译环境。大家如果是在实际的交叉环境下,配置ffmpeg的configure时指定交叉编译参数,估计大概如下面的配置:
./configure --prefix=./install --disable-static --enable-shared --enable-gpl --enable-pthreads --cross-prefix=arm-none-linux-gnueabi- --enable-cross-compile --target-os=linux --extra-cflags="-mcpu=arm9 -W -Wall -Wpointer-arith -Wstrict-prototypes -Winline -Wundef -O2 -Wall" --arch=armv4l --cpu=arm9
当然这些既是根据具体的环境修改了。这里就不多说,本文只有在PC上来讲解。
转载请注明出处:谢谢合作!
第一时间获得博客更新提醒,以及更多技术信息分享,欢迎关注个人微信公众平台:程序员互动联盟(coder_online),扫一扫下方二维码或者搜索微信号coder_online即可关注,我们可以在线交流。
相关推荐
按照他步骤一步步的走,终于成功搭建了编译ffmpeg环境,走到11步时环境已经搭建成功了,在此小结下,给自己做个小备份,也希望能给刚接触的新手们提供点有用信息。新手们有问题记得看此文章下面的评论,小问题上面都...
播放器开发 2.7.7第一章 开发环境搭建FFmpeg编译和安装
第一章 多媒体概念介绍 6 第二章 FFmpeg框架 34 第三章 编译及简单应用 41 第四章 数据结构 57 第五章 重要模块 76 第六章 播放器 243 第七章 应用开发 275 第八章 关键函数介绍 280 第九章 ffmpeg相关工程 ...
1.ffmpeg+sdl+gcc环境搭建 2.用于后续ffmpeg开发 3.资源有ffmpeg+sdl2相关库文件+gcc编译器 4.后面的资源只提供代码
x264 x265 ffmpeg和aac的源码和编译工具。以下是文件夹的内容 编译的其他代码:包含编译的x264 x265和aac的代码 编译好的包:为最终ffmpeg编译过的代码 另一人编译:...
QT搭建FFMPEG环境,是最基本的环境搭建,不包含播放等功能性代码,经测试QT5导入FFMPEG头文件编译不会出错。
windows FFMPEG详细环境搭建 里面有所有的环境搭建包跟详细过程
ffmpeg window环境搭建
从https://ffmpeg.zeranoe.com/builds/win32/下载已经编译好的库文件和头文件,本次以ffmpeg3.2为例,说明环境搭建。
win7 64的系统。里面有使用说明,参考里面的步骤即可。注意:环境已经搭建好,只需将MinGW解压放在C盘,同时在path里添加MinGW/bin和msys/.10/bin的路径,然后设置msys.bat即可。具体可参考里面的说明。
Qt+FFMPEG环境搭建
参考里面的使用说明文档,使用提供的工具包就可以自己搭建VS2013编译ffmpeg的环境。
windows下基于MinGW编译ffmpeg之_初级篇_中级篇
ffmpeg源代码及编译方法,在windows下编译通过并结合媒体栈投入使用,运行稳定
ffmpeg编译与移植
资料包里包含了ffmpeg4.4,ffmpeg5.0的静态库。由emmc编译,可以编译成wasm文件由前端js调用,完成浏览器端的视频解码,转码等功能。 Linux下、windows 下均可调用。 与平台无关。 编译方法: emcc wasm_ffmpeg/...
由于FFmpeg官方只提供动态链接的lib和dll,对于需要静态链接的情况不适用,导致需要将FFmpeg的那一堆dll都需要和exe一起发布。 本压缩包中,包含了ffmpeg相关的lib和头文件。 lib清单如下: libavcodec.lib ...
ffmpeg基础库编程开发 pdf,ffmpeg 命令行介绍
ffmpeg基础编程WORD文档,视音频流媒体开发样例。
本资源为博主自己编译的,具有drawtext功能的FFmpeg。里面包含的ffmpeg.exe和dll,均具有drawtext功能。功能测试已通过。可在32位和64位系统运行。为根据博文《执行FFmpeg命令时报错:No such filter: 'drawtext'》...