- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Android FFMPEG Player
目 录
TOC \o 1-3 \h \z \u HYPERLINK \l _Toc392775628 第一章 总体概述 PAGEREF _Toc392775628 \h 3
HYPERLINK \l _Toc392775629 1.1 简介 PAGEREF _Toc392775629 \h 3
HYPERLINK \l _Toc392775630 1.2 重要功能列表 PAGEREF _Toc392775630 \h 3
HYPERLINK \l _Toc392775631 第二章 技术方案 PAGEREF _Toc392775631 \h 4
HYPERLINK \l _Toc392775632 2.1总体框架 PAGEREF _Toc392775632 \h 4
HYPERLINK \l _Toc392775633 2.2 FFMPEG PAGEREF _Toc392775633 \h 4
HYPERLINK \l _Toc392775634 2.2.1简介 PAGEREF _Toc392775634 \h 4
HYPERLINK \l _Toc392775635 2.2.2主要数据结构 PAGEREF _Toc392775635 \h 5
HYPERLINK \l _Toc392775636 2.2.3解码流程 PAGEREF _Toc392775636 \h 6
HYPERLINK \l _Toc392775637 2.3播放器widget重要接口 PAGEREF _Toc392775637 \h 6
第一章 总体概述
1.1 简介
移动视频业务具有使用场景多,行业客户广,定制化需求高等特点,因此通用的移动web视频解决方案以及利用android、ios系统提供的mediaplayer组件二次开发的方式都无法满足客户在安全,流量统计等深度定制化方面的需求。为了提高平台在移动端的定制化能力,研发了基于ffmpeg的安卓播放器,该技术方案能够实现在下载、解码、显示、协议等重要方面的深度定制。
1.2 重要功能列表
RTSP (RTP, SDP), RTMP
HTTP progressive streaming
HLS - HTTP live streaming (M3U8)
FLV
TS
MP4
3GP
H.264/AVC、H.263、 MPEG4?
aes加密
hls下载速度统计
第二章 技术方案
2.1总体框架
整个软件框架分4层,底层核心层是ffmpeg多媒体C语言开源库,这一层完成了下载,解码,协议解析这三个重要方面的工作。第二层是android player接口封装层,这一层利用sdl开源图形库实现了基于opengl的图像显示、变换等功能,这一层还对底层的ffmpeg做了jni接口封装。widget层通过调用player层的jni接口包含了下载、解码、协议解析、显示功能,并实现了定制化的surfaceview和进度控制栏,widget层已经包含播放器所有的功能,上层application层可以通过调用少量的widget层接口完成流媒体播放功能。
2.2 FFMPEG
2.2.1简介
?ffmpeg(Fast Forward Moving Pictures Experts Group)是音视频的分离,转换,编码解码及流媒体的完全解决方案,其中最重要的就是libavcodec库,是一个集录制、转换、音/视频编码解码功 能为一体的完整的开源解决方案。ffmpeg的开发是基于Linux操作系统,但是可以在大多数操作系统中编译和使用。FFmpeg支持MPEG、 DivX、MPEG4、AC3、DV、FLV等40多种编码,AVI、MPEG、OGG、Matroska、ASF等90多种解码. TCPMP, VLC, MPlayer等开源播放器都用到了FFmpeg。
2.2.3解码流程
1. 注册所有容器格式和CODEC:av_register_all()
2. 打开文件:av_open_input_file()
3. 从文件中提取流信息:av_find_stream_info()
4. 穷举所有的流,查找其中种类为CODEC_TYPE_VIDEO
5. 查找对应的解码器:avcodec_find_decoder()
6. 打开编解码器:avcodec_open()
7. 为解码帧分配内存:avcodec_alloc_frame()
8. 不停地从码流中提取出帧数据:av_read_frame()
9. 判断帧的类型,对于视频帧调用:avcodec_decode_video()
10. 解码完后,释放解码器:avcodec_close()
11. 关闭输入文件:av_close_
文档评论(0)