前段时间在翻看电脑里面资料时,发现了以前做的在嵌入式硬件上面运行以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即可关注,我们可以在线交流。
相关推荐
1. **搭建交叉编译环境**:由于Android系统使用的是Linux内核,但其架构与常见的桌面系统不同,因此需要建立一个能针对Android平台进行编译的环境,通常包括NDK(Native Development Kit)和GCC或Clang编译器。...
综上,这个资源包为在Windows 64位环境下编译和使用OpenCV3.3.1和3.4.0提供了关键的第三方组件,帮助开发者快速搭建环境,进行图像和视频处理的相关开发工作。正确配置和使用这些组件,可以极大地提升OpenCV应用的...
搭建流媒体服务器的第一步是环境的准备。通常情况下,我们会选择Linux操作系统,如本文中提到的CentOS release 6.7(Final)。准备工作还包括安装ffmpeg和nginx两个基础组件。 接下来,我们需要按照官方文档指导...
qt+mingw64+windows10+ffmpeg2.5.2 64位+rtsp保证编译可用 1.ui界面 labvideo1 通道1 ...第三节开发环境搭建 第四节ffmpeg的使用 第五节使用FFMPEG解码视频之保存成图片 第六节FFMPEG Qt视频播放器之显示图像
二、NDK开发环境搭建 2.1 安装与配置 设置NDK开发环境需要下载并安装NDK,然后配置Android Studio使其能够识别和使用NDK。此外,还需要设置PATH环境变量,以便在命令行中使用NDK工具。 2.2 CMake与ndk-build CMake...
"1.0.2"是版本号,表明这是该软件的第1个主要版本的第2次小更新。在软件开发中,版本号通常用于追踪和管理软件的不同迭代。 "绝对可用"可能是指这个版本的Java已经经过测试,可以在各种操作系统上稳定运行,用户...
#### 第一部分:嵌入式开发基础强化训练 本部分作为课程的入门阶段,旨在帮助学生建立起扎实的Linux基础与嵌入式开发技能,为后续深入学习奠定基石。 **1. Linux操作系统基础** - **Linux系统安装与配置**:学习...
总结起来,通过Eclipse+CDT、MinGW和MSYS的组合,开发者可以在Windows环境中搭建一个类似Linux的开发环境,从而实现对FFmpeg这样的开源项目进行编译和开发。整个过程涉及的步骤包括安装、环境配置、源码导入以及项目...
SRS(Simple Real-Time Streaming)是一款高性能、轻量级的实时流媒体服务器,主要用于搭建互联网直播系统。在本文中,我们将深入探讨SRS 3.0版本的主要特性、功能以及如何在Linux环境下进行部署和使用。 SRS 3.0...
包括mingw-w64(一个适用于Windows的GCC编译器),cmake(一个跨平台的构建工具),OpenCV 3.1.0库,以及在配置OpenCV时可能需要的ffmpeg库。让我们逐步了解如何使用这些资源来搭建开发环境。 首先,确保你已经安装...
在Java编程环境中,调用摄像头并进行视频流推送到服务器是一项常见的需求,特别是在实时互动应用如线上抓娃娃游戏中。在Mac系统中,由于其x86处理器架构为64位,开发者需要找到适用于该环境的解决方案。下面我们将...
Python库安装文件.zip是一个...这个压缩包的实用性在于为Python开发者提供了快速获取和安装特定库的途径,减少了配置环境的繁琐过程,尤其是对于初学者或是需要快速搭建开发环境的人来说,是一个非常方便的资源集合。
这对于开发者进行功能验证和调试非常有帮助,可以快速搭建起一个运行环境,测试RTSP服务器的功能是否正常。 关于Live555,其主要特点和关键技术包括: 1. **多协议支持**:Live555不仅支持RTSP,还支持RTCP(Real-...
【PHP实例开发源码—筱瞳影视CMS】是一款基于PHP编程语言开发的视频内容管理系统,专为搭建在线视频网站提供了一套完整的解决方案。这个系统涵盖了从用户管理、视频上传、播放、分类到评论互动等一系列功能,是学习...
这一步骤对于成功编译和链接FFmpeg库至关重要。 在实际项目中,开发者应当熟练掌握这些类型和宏的用法,以编写出高效、可移植的代码。例如,在处理FFmpeg中的位移、索引或计数等数值时,使用`stdint`类型可以避免...
在项目实践中,我们首先需要设置开发环境,包括安装交叉编译工具链、配置QT for Embedded Linux环境、搭建STM32MP135的板级支持包(BSP)。然后,我们可以利用Qt Designer进行界面设计,拖拽各种控件如按钮、进度条...
标题中的“百度云下载地址_2022全新直播短视频系统源码_大小1.07G.zip”表明这是一个在2022年更新的、大小为1.07GB的压缩包,其中包含了用于构建直播和短视频系统的源代码。这个源码很可能是基于PHP编程语言开发的,...
【标题】"2019年11月最新高仿抖音短视频APP原生java双端源码.rar"指的是一个在2019年11月发布的、基于Java语言开发的、模仿抖音短视频应用的源代码。这个源码适用于Android和iOS两个主要移动平台,即所谓的“双端”...
在深入探讨这个项目的知识点之前,我们先要理解Go语言的基础特性,Go,也被称为Golang,是Google开发的一种静态类型、编译型、并发型且具有垃圾回收功能的编程语言。它设计简洁,注重效率,适合开发网络服务和系统...