- 1、本文档共11页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于Android平台的ffmpeg的移植和应用
张寅昊
江苏润和软件股份有限公司
E-mail:zhang_yinhao@
摘要:随着Android平台引爆新的潮流,Android上的应用也火热起来。为了弥补Android
平台本身对多媒体支持的薄弱,本文介绍了将目前成熟的开源多媒体框架ffmpeg移植到
Android中的技术要点。
关键词:Android,ffmpeg,ffserver,jni,makefile,ndk,多媒体
1
1 引言
11
随着Google公司2007年11月5日宣布新一代基于linux平台的开源手机操作系统名称
为Android后,短短几年,Android系统便引爆了移动互联网的热潮。2011年初数据显示,
仅正式上市两年的操作系统Android已经超越称霸十年的塞班系统,使之跃居全球最受欢迎
的智能手机平台。现在,Android系统不但应用于智能手机,也在平板电脑市场急速扩张,
在智能MP4方面也有较大发展。采用Android系统主要厂商包括中国台湾的HTC(第一台谷
歌的手机G1由HTC 生产代工)、韩国三星、韩国原道、美国摩托罗拉、索尼爱立信等,中
国大陆厂商如:首派(A101、A100、A80、A60S 及未上市的A70),魅族(M9),华为、中
兴、联想、蓝魔等。
本论文基于公司项目,因为Android本身的多媒体框架opencore支持的视频格式只有
3gp和mp4两种,因此项目将移植ffmpeg来扩展android平台编解码,并利用ffserver 作为
流媒体服务器,以实现通过摄像头拍摄的视频能直接远程连接观看。论文将着重讲解ffmpeg
的移植,jni的调用,ffserver的配置以及ffmpeg和ffserver间的通信。
2
2 项目设计
22
2.1
2.1
22..11 项目总体结构图
PC
播放 或其它
网络设
备
传输
编码
手 机 端
camera 采集
2.2
2.2
22..22 各部分详细说明
2.2.1
2.2.1
22..22..11 采集
通过Android摄像头采集原始数据。摄像头数据的采集共有两种方法。一是利用ffmpeg
的v4l2 接口,找到系统的摄像头文件,在Linux系统中,摄像头文件一般为/dev/video0,但
在Android系统中各厂商的通常自己实现摄像头得驱动,因此摄像头文件都不一样,这样如
果使用ffmpeg的v4l2接口从底层抓取数据的话,就会造成软件的通用性变差,故弃而不用。
Android中另一种取得摄像头数据的方法是通过上层Google 提供的统一API,在摄像头
的Preview 通过回调函数onPreviewFrame可以得到原始数据,一般是yuv420sp。
2.2.2
2.2.2
22..22..22 编码
在java 层得到的数据,通过jni传递给c层,在c层调用ffmpeg对其编码。
2.2.3
2.2.3
22..22..33 传输
传输前先要启动ffserver,然后调用ffmpeg将视频流化后传给ffserver。
2.2.4
2.2.4
22..22..44 播放
Ffserver接受视频流后将其存储在feed1.ffm中,当网络上或者本地有播放请求时进行播
放。
3ffmpeg
3ffmpeg的移植
33ffffmmppeegg
FFmpeg是一个开源免费跨平台的
文档评论(0)