文章目录

  • 视频:
    • 视频播放形式
    • 视频格式的组成
    • 视频工作过程
    • 视频处理
      • FFmpeg
      • 将moov移动到mdat前面
  • 总结一下

视频:

视频播放形式

  1. 使用网络url播放视频
    使用网络url播放视频分为两种情况:
    A:流视频:对流形式的视频而言,Android原生的Mediaplayer等播放控件可以实现在线播放功能。
    B:非流视频:需要把视频下载到本地,再进行播放,但是这里有个缺陷,不能实现边播边下。
  2. 使用本地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边下边播相关推荐

  1. Android 视频边下边播,MP4头信息在后调整头信息

    mp4视频有两种格式,一种视频头信息在前,这种直接可以先缓存头信息,然后直接边下边播,还有一种是头信息在最后,这种情况下则需要处理mp4的头信息,并调整mp4的格式. mp4文件的格式如下图 图1 从 ...

  2. 关于Android HTTP边下边播

    本文简单地分享一下在Android平台做HTTP边下载边播放的一些经验,希望对初学者有所帮助. 1. 为什么播放器在播放视频文件的时候,都知道该怎么去解码.该以怎样的时间间隔去显示每一帧呢? 因为无论 ...

  3. 迅雷 android下载地址 http,Android HTTP边下边播

    本文简单地分享一下在Android平台做HTTP边下载边播放的一些经验,希望对初学者有所帮助. 1. 为什么播放器在播放视频文件的时候,都知道该怎么去解码.该以怎样的时间间隔去显示每一帧呢? 因为无论 ...

  4. Android HTTP边下边播

    本文简单地分享一下在Android平台做HTTP边下载边播放的一些经验,希望对初学者有所帮助. 1. 为什么播放器在播放视频文件的时候,都知道该怎么去解码.该以怎样的时间间隔去显示每一帧呢? 因为无论 ...

  5. php中fopen打开mp4边下边播,解决mp4流媒体转换不能边下边播

    近期项目需要,把N个MP4文件压缩处理为流媒体格式,并放至服务器,使用CDN加速供WEB播放器点播.出现几个问题,作下记录. 问题:MP4格式非流媒体,即不能边下载边播放,用户体验非常差. 原因: 由 ...

  6. 边下载边播放的播放器Android边下边播

    看到很多朋友有提问到Android边下载边播放的播放器,小编在这里给大家做个关于这方面的分享. 首先作为一款播放器,支持转码或者支持各种视频格式是必须的,比如常见的视频格式:MP4/FLV/M3U8/ ...

  7. Android安卓手机能不能实现BT文件边下边播?

    Android安卓手机能不能实现BT文件边下边播?Android安卓手机实现类似pc端的bt边下载边播放技术的可行性分析 PC端实现对BT文件的边下载边播放功能,已经有很长时间,也在很多领域得到了很好 ...

  8. java 视频边下边播,VideoViewDemo android 播放器,支持边下边播 238万源代码下载- www.pudn.com...

    文件名称: VideoViewDemo下载 收藏√  [ 5  4  3  2  1 ] 开发工具: Java 文件大小: 194 KB 上传时间: 2014-09-19 下载次数: 5 详细说明:a ...

  9. html实现边下边播mp4,WebTorrent:一款可边下边播磁力链接的播放器

    网页版可以直接嵌入网页,相当于一个p2p的在线播放器,在项目官网首页就可以体验. 体验网页版WebTorrent:https://webtorrent.io/ 桌面版为WebTorrent Deskt ...

  10. (转载)封装bilibili播放器,自定义边下边播和缓存功能

    感谢并转载自:https://www.jianshu.com/p/264324559c07 源码下载,欢迎star 演示Demo下载 image 本项目使用播放器是ijkplay, 并且进行封装和修改 ...

最新文章

  1. 突发!ASML断供中芯国际
  2. 14.Python抠图脚本
  3. [C#][Newtonsoft.Json] Newtonsoft.Json 序列化时的一些其它用法
  4. jquery选择器(转载)
  5. 在ATM取钱5000,查询余额却少了50000,怎么回事?
  6. 带弹出列表的EditText
  7. linux 监控网络IO、磁盘、CPU、内存
  8. java实验6 词频统计_Java实现的词频统计——单元测试
  9. Javascript找出所有没有重复的字符(优化)
  10. Laravel5.3之Container源码解析
  11. Flutter随记四:null safe之 ??= 和??和 ?使用区别
  12. LSD-SLAM运行过程及报错 “what(): Duration is out of dual 32-bit range“
  13. python绘制积分函数_Python超越函数积分运算以及绘图实现代码
  14. 小学计算机四年级教学计划,小学信息技术四年级第二学期教学计划
  15. 扭蛋机(bilibili)
  16. php- 秒的转换 (天 小时 分钟) (小时 分钟 )
  17. 英文打字自动空格如何解决?
  18. photoshop cs5 安装过程及序列号
  19. 翻译并添加 解析OV13850 datasheet
  20. php 上上级目录的表示

热门文章

  1. 计算机视觉 - python实现求解homography矩阵
  2. STM32——MPU6050六轴传感器
  3. FPGA编程语言--VHDL OR Verilog?
  4. JavaScript格式化日期和时间
  5. ubuntu上搭建wiki系统
  6. VBA-Excel重心法求解最优地址
  7. Quartz定时任务框架(二):Trigger触发器详解
  8. 二叉树非递归程序c语言,二叉树非递归遍历C语言实现
  9. WPF 启动屏幕键盘
  10. 一行Pandas代码制作数据分析透视表,太牛了!