博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【转】Android下录制的mp4视频以http流媒体的形式播放不了
阅读量:4927 次
发布时间:2019-06-11

本文共 830 字,大约阅读时间需要 2 分钟。

mp4基本知识: 

  mp4的文件结构中主要包含moov 部分是视频的元数据信息和mdat部分是视频的内容信息 
  在http协议播放MP4的时候,需要moov这个atom,否则报错退出,但是在以文件形式播放的时候没有这项判断。 实际情况是播放mp4的时候必须首先获得moov的数据,否则没法解析mdat中的audio/video数据 对于http协议播放MP4的情况,是因为moov在mdat后面,也就是在文件末尾,要播放这个文件意味要先把mdat下载下来才能下载到moov,也就是说没法直接获得moov,所以不能通过http的方式在线播放这个文件 并不是以本地文件的形式就不判断moov了,而是文件形式下moov无论在文件头还是文件尾部播放器都可以instant获得moov的数据,而http的方式下不能随意的seek到文件尾部,所以也就无法立即获得moov数据,当然无法播放了 . 
关于拖动播放的问题:拖动播放首先就是要找到位置,也就是seek position.seek是定位时间,但时间定位在可以拖动的flv或者mp4文件中都在MetaData事件中传递了keyframes 给播放器,这个keyframes 就是时间和文件数据头定位的对应关系依据。下载数据已经缓冲数据的范围是开始位置off1 和下载缓冲数据量 buffer来确定, 即范围在 [off1,off1+butt]是已经缓冲的数据。还要注意的是这个定位精度是有限制的,最多到1秒精度。 
  查看mp4文件结构信息的工具,见附件 
  如果要将mp4文件的末尾的moov atom信息放在文件的起始位置,可以使用qt-faststart  见附件 
   用法:qt-faststart 源文件  转换后的新文件 
这样转换后的mp4文件的就能支持http下的流媒体形式的播放了

转载于:https://www.cnblogs.com/niuxiaohao/archive/2011/12/29/2306503.html

你可能感兴趣的文章
通过sqlserver日志恢复误删除的数据
查看>>
adb连接手机的两种方式
查看>>
知识点
查看>>
CentOS7 安装Redis 3.2.3
查看>>
识别chrome浏览器
查看>>
ci之 core下CodeIgniter源码分析(1)
查看>>
《Computer age statistical inference》学习笔记-Part I
查看>>
Repeater分页
查看>>
qlikview 地图插件制作教程
查看>>
JavaWeb学习记录(二十六)——在线人数统计HttpSessionListener监听实现
查看>>
Fibonacci数列 与 杨辉三角
查看>>
音频视频播放(jquery中将jquery方法转化成js方法)
查看>>
Linux设备驱动开发基础--阻塞型设备驱动
查看>>
Hadoop综合大作业
查看>>
ES6 语法之import export
查看>>
网页上实现 Project 甘特图
查看>>
AttributeError: '_csv.reader' object has no attribute 'next'
查看>>
八大排序算法
查看>>
Meteor部
查看>>
WindowsPhone 在 根据公历 获取月球日期数据
查看>>