Android MP4边下边播
文章目录
- 视频:
- 视频播放形式
- 视频格式的组成
- 视频工作过程
- 视频处理
- FFmpeg
- 将moov移动到mdat前面
- 总结一下
视频:
视频播放形式
- 使用网络url播放视频
使用网络url播放视频分为两种情况:
A:流视频:对流形式的视频而言,Android原生的Mediaplayer等播放控件可以实现在线播放功能。
B:非流视频:需要把视频下载到本地,再进行播放,但是这里有个缺陷,不能实现边播边下。 - 使用本地url播放视频:直接在MediaPlayer或者VideoView放置一个url即可。
参考链接
视频格式的组成
简要地说,MP4文件主要由ftyp,mdat,moov这三部分组成。
ftyp 记录了mp4格式,编码格式之类的一些基本信息
mdat记录了视频媒体信息(mdat的体积往往非常的大,几乎等于MP4总大小)
moov是如同检索表一样的存在,里面记录了每一帧对应的数据在哪里等等
如果moov比较大,播放器需要较多的时间去解析,所以在播放之前可能会出现较长的缓冲时间,特别是视频文件较大的情况下,所以现在有些点播网站会采用每段mdat都有自己独立的metadata的封装方式,这样就可实现渐进式下载和快速缓冲的效果。
视频工作过程
- 读取ftype部分决定解码方式。
- 寻找并读取moov部分,获取视频总时长等信息。
- 根据moov的检索信息到mdat里面读取相应的媒体信息,进而播放。
参考连接
视频处理
FFmpeg
FFmpeg的是一个自由软件,可以运行音频和视频多种格式的录影,转换,流功能,包含了libavcodec–这是一个用于多个项目中音频和视频的解码器库,以及libavformat- - 一个音频与视频格式转换库。
维基百科
将moov移动到mdat前面
qt-faststart.exe 原视频文件路径 生成的视频文件路径
如果上面这句话抛出last atom in file was not a moov atom的异常错误
则使用
d:\ffmpeg.exe -i 原视频文件路径 -acodec copy -vcodec copy 生成的视频文件路径
然后在执行第一句话即可
总结一下
使用AndroidVideoCache框架播放,如果想像爱奇艺、优酷那样,下载完一半的视频,我断网之后还能播放,就需要把moov数据放置到mdat前面。
你还可以对这个框架进行优化。优化方案
#在视频播放中遇到的问题
我有一个视频在Android5.1播放很流畅,但是放在了Android4.4.2上面就变得很卡,甚至播放了一半,就无法继续播放了,后来发现是视频的编解码的问题。
developer.android.com
我视频编解码是H.264 AVC Main Profile (MP),这个在高版本的Android设备上播放是没有问题的,但是在低版本的设备上播放就会出现我上面说的那种问题。这时候需要转换成为H.264 AVC Baseline Profile (BP)编解码。
我使用的转换工具是——魔影工厂
微信公众号:
QQ群:365473065
Android MP4边下边播相关推荐
- Android 视频边下边播,MP4头信息在后调整头信息
mp4视频有两种格式,一种视频头信息在前,这种直接可以先缓存头信息,然后直接边下边播,还有一种是头信息在最后,这种情况下则需要处理mp4的头信息,并调整mp4的格式. mp4文件的格式如下图 图1 从 ...
- 关于Android HTTP边下边播
本文简单地分享一下在Android平台做HTTP边下载边播放的一些经验,希望对初学者有所帮助. 1. 为什么播放器在播放视频文件的时候,都知道该怎么去解码.该以怎样的时间间隔去显示每一帧呢? 因为无论 ...
- 迅雷 android下载地址 http,Android HTTP边下边播
本文简单地分享一下在Android平台做HTTP边下载边播放的一些经验,希望对初学者有所帮助. 1. 为什么播放器在播放视频文件的时候,都知道该怎么去解码.该以怎样的时间间隔去显示每一帧呢? 因为无论 ...
- Android HTTP边下边播
本文简单地分享一下在Android平台做HTTP边下载边播放的一些经验,希望对初学者有所帮助. 1. 为什么播放器在播放视频文件的时候,都知道该怎么去解码.该以怎样的时间间隔去显示每一帧呢? 因为无论 ...
- php中fopen打开mp4边下边播,解决mp4流媒体转换不能边下边播
近期项目需要,把N个MP4文件压缩处理为流媒体格式,并放至服务器,使用CDN加速供WEB播放器点播.出现几个问题,作下记录. 问题:MP4格式非流媒体,即不能边下载边播放,用户体验非常差. 原因: 由 ...
- 边下载边播放的播放器Android边下边播
看到很多朋友有提问到Android边下载边播放的播放器,小编在这里给大家做个关于这方面的分享. 首先作为一款播放器,支持转码或者支持各种视频格式是必须的,比如常见的视频格式:MP4/FLV/M3U8/ ...
- Android安卓手机能不能实现BT文件边下边播?
Android安卓手机能不能实现BT文件边下边播?Android安卓手机实现类似pc端的bt边下载边播放技术的可行性分析 PC端实现对BT文件的边下载边播放功能,已经有很长时间,也在很多领域得到了很好 ...
- java 视频边下边播,VideoViewDemo android 播放器,支持边下边播 238万源代码下载- www.pudn.com...
文件名称: VideoViewDemo下载 收藏√ [ 5 4 3 2 1 ] 开发工具: Java 文件大小: 194 KB 上传时间: 2014-09-19 下载次数: 5 详细说明:a ...
- html实现边下边播mp4,WebTorrent:一款可边下边播磁力链接的播放器
网页版可以直接嵌入网页,相当于一个p2p的在线播放器,在项目官网首页就可以体验. 体验网页版WebTorrent:https://webtorrent.io/ 桌面版为WebTorrent Deskt ...
- (转载)封装bilibili播放器,自定义边下边播和缓存功能
感谢并转载自:https://www.jianshu.com/p/264324559c07 源码下载,欢迎star 演示Demo下载 image 本项目使用播放器是ijkplay, 并且进行封装和修改 ...
最新文章
- 突发!ASML断供中芯国际
- 14.Python抠图脚本
- [C#][Newtonsoft.Json] Newtonsoft.Json 序列化时的一些其它用法
- jquery选择器(转载)
- 在ATM取钱5000,查询余额却少了50000,怎么回事?
- 带弹出列表的EditText
- linux 监控网络IO、磁盘、CPU、内存
- java实验6 词频统计_Java实现的词频统计——单元测试
- Javascript找出所有没有重复的字符(优化)
- Laravel5.3之Container源码解析
- Flutter随记四:null safe之 ??= 和??和 ?使用区别
- LSD-SLAM运行过程及报错 “what(): Duration is out of dual 32-bit range“
- python绘制积分函数_Python超越函数积分运算以及绘图实现代码
- 小学计算机四年级教学计划,小学信息技术四年级第二学期教学计划
- 扭蛋机(bilibili)
- php- 秒的转换 (天 小时 分钟) (小时 分钟 )
- 英文打字自动空格如何解决?
- photoshop cs5 安装过程及序列号
- 翻译并添加 解析OV13850 datasheet
- php 上上级目录的表示