前段时间在翻看电脑里面资料时,发现了以前做的在嵌入式硬件上面运行以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步时环境已经搭建成功了,在此小结下,给自己做个小备份,也希望能给刚接触的新手们提供点有用信息。新手们有问题记得看此文章下面的评论,小问题上面都...
本文将详细介绍如何在你的系统上搭建FFmpeg与SDL2结合的开发环境,并使用GCC进行编译。 首先,你需要确保你的系统已经安装了基础的开发工具和依赖项。这通常包括Git、Make、CMake等,因为FFmpeg和SDL2通常通过源码...
在嵌入式开发领域,尤其是涉及视频编码与解码时,Ffmpeg、libx264和libx265是重要的库。这些库在海思板上运行需要进行交叉编译,以便适应不同架构的处理器。以下是一个详细的步骤记录,教你如何在海思板上交叉编译并...
【FFmpeg】Windows 10 平台 FFmpeg 开发环境搭建 ④ ( FFmpeg 开发库内容说明 | 创建并配置 FFmpeg 项目 | 拷贝 DLL 动态库到 SysWOW64 目录 ) https://hanshuliang.blog.csdn.net/article/details/139172564 博客...
在嵌入式环境下,系统资源有限,因此需要对x264和ffmpeg进行适当的配置和优化,以适应嵌入式的处理能力和存储空间。嵌入式设备的处理器性能、内存大小以及存储空间通常不如桌面或服务器级别的硬件。因此,在嵌入式...
这个"Android 使用 FFmpeg (一)——编译.so文件Demo"项目代码,提供了从编译FFmpeg到创建简单应用的全程示例,可以帮助开发者快速理解和实践在Android上集成FFmpeg。通过这个Demo,你可以深入学习如何在Android...
在搭建Visual Studio 2013 (VS2013) 编译FFmpeg环境的过程中,你需要准备一些必要的工具和库。FFmpeg是一个开源的多媒体处理框架,它包含了音视频编码、解码、转码、播放等众多功能。在Windows平台上,使用VS2013...
本篇文章将详细介绍如何在Windows环境下搭建FFmpeg的开发环境,以FFmpeg3.2版本为例,以便进行自定义的FFmpeg应用程序开发。 首先,我们需要从官方提供的第三方编译源获取FFmpeg的预编译库和头文件。在这个例子中,...
在本项目中,“基于ffmpeg实现硬件解码功能”是利用FFmpeg库来实现视频的硬件加速解码,旨在提高视频处理效率,减少CPU负载,尤其对于高清和4K视频,硬件解码可以显著提升播放性能。 硬件解码是指将原本由CPU执行的...
本项目"msvc6+ffmpeg嵌入式播放"关注的是如何在Windows平台上利用Microsoft Visual C++ 6.0(MSVC6)集成开发环境,将FFmpeg库集成到一个应用程序中,以实现视频播放功能。FFmpeg是一款强大的开源多媒体框架,它包含...
在Linux环境下编译FFmpeg的WebAssembly库是一个技术性较强的过程,主要涉及到FFmpeg的源码编译和WebAssembly的交叉编译。FFmpeg是一个强大的开源多媒体处理框架,广泛用于音视频的编码、解码、转码等任务。而...
本篇文章将详细介绍FFmpeg的源码及其在Windows环境下的编译过程。 首先,我们需要了解FFmpeg的基本构成。FFmpeg 包含了多个组件,如libavcodec(编码/解码库)、libavformat(容器/格式库)、libavfilter(滤镜库)...
总之,本项目为英伟达Jetson平台的FFmpeg适配提供了全面的指南,不仅包括了源码和编译教程,还为开发者提供了一个在嵌入式系统上实现高效流媒体处理的实例。如果你正在寻找如何在Jetson上利用FFmpeg进行音视频处理,...
本文将详细介绍如何在Linux系统上编译FFmpeg,并将其移植到Android平台,以及如何通过命令行合并音视频。 首先,我们需要准备编译FFmpeg所需的环境。确保你的Linux系统安装了必要的依赖,如`sudo apt-get install ...
总之,“ffmpeg_vc”压缩包提供了一个在VC环境下成功编译FFmpeg的基础,帮助开发者快速地将FFmpeg集成到Windows应用中,同时也简化了编译过程,减少了对特定汇编优化的依赖。通过理解编译过程和FFmpeg的功能,开发者...
在Windows CE(wince)环境下编译 FFMPEG,是为了在嵌入式设备上实现多媒体功能,例如在智能手机或车载系统中播放音频和视频。 Windows CE 是微软为小型设备和嵌入式系统开发的操作系统,其API和开发环境与标准...
在 Android 平台上,FFmpeg 的库可以被嵌入到应用中,以实现复杂的多媒体操作,例如播放、录制或编辑音频和视频。 标题“ffmpeg6.0 android 编译库”表明这是一个针对 Android 平台编译的 FFmpeg 版本 6.0,意味着...
在"ffmpeg_x64 win10环境下编译工程"中,你需要执行以下步骤来构建FFmpeg项目: 1. **下载源代码**:首先,从FFmpeg的官方网站或GitHub仓库获取最新版本的源代码。 2. **安装依赖**:确保系统已安装Microsoft ...