关于mp4 在线播放加载时间长的问题

简介: 关于mp4 在线播放加载时间长的问题

问题描述

有时候我们会遇到一些mp4视频,一开始加载播放的时候很慢,大家都会以为是网络问题导致,其实不是的。

问题原因

分析原因前,需要下载一个工具mp4info 打开加载慢的mp4文件

image.png

可以看到这个mp4视频的moov是在mdat后边,这样的视频文件如果较大,通过网络流加载播放的时候,就会在开始播放时候需要较长时间加载后才能播放

由于moovatom中包含了metadata (可以简单理解为音视频流的编码格式,码率,分辨率,等等),当moovatom 在mdatatom后边位置的时候,就会导致加载网络流的时候,客户端先要下载完mdatatom 数据才能下载到moovatom数据,那由于客户端播放器解码是要根据metadata中的信息来解码的时候,就要等moov下载数据加载完才可以,这个时候的现象就比较慢。那如何解决这个问题呢?

解决方案

可以用ffmpeg 工具来进行转码

示例命令

ffmpeg -i 源.mp4 -codec copy -movflags faststart 目标.mp4

image.png

这样转码后,moov就在mdat 的前边了,网络流播放可以加载较小的数据,获取到metadata信息后就可以解码边下载边播放了。大大提升播放体验。

 

适用范围

  • OSS
  • VOD
相关文章
|
数据安全/隐私保护
亲测可行!!!将下载好的优酷文件kux格式转为MP4格式
亲测可行!!!将下载好的优酷文件kux格式转为MP4格式
亲测可行!!!将下载好的优酷文件kux格式转为MP4格式
|
编解码
如何解决虚拟主机MP4格式的视频播放黑屏
如何解决虚拟主机MP4格式的视频播放黑屏
|
Java Maven
获取MP3音频时长 | Java工具类
获取MP3音频时长 | Java工具类
获取MP3音频时长 | Java工具类
|
Ubuntu Linux
FFMPEG音频开发: Linux下采集摄像头(使用V4L2框架)数据录制成MP4视频保存到本地
FFMPEG音频开发: Linux下采集摄像头(使用V4L2框架)数据录制成MP4视频保存到本地
1467 0
FFMPEG音频开发: Linux下采集摄像头(使用V4L2框架)数据录制成MP4视频保存到本地
|
编译器 C语言 Windows
FFMPEG视频开发:Window系统下载部署FFMPEG库并获取摄像头数据保存为MP4文件存放到本地(使用FFMPEG本身接口获取摄像头数据)
FFMPEG视频开发:Window系统下载部署FFMPEG库并获取摄像头数据保存为MP4文件存放到本地(使用FFMPEG本身接口获取摄像头数据)
467 0
FFMPEG视频开发:Window系统下载部署FFMPEG库并获取摄像头数据保存为MP4文件存放到本地(使用FFMPEG本身接口获取摄像头数据)
|
编解码 移动开发 Android开发
一文分析 mp4对比m3u8 第一帧加载慢的原因
公司要求对视频的 秒开率(1秒内成功加载的播放数 / 播放总数)、失败率 (播放失败的次数 / 播放总数) 等进行优化。经过线上AB测试发现,`m3u8视频(第一段切片为1~3秒)`在秒开率、失败率等性能指标上均优于`普通mp4视频`。这里探究一下,m3u8视频(第一段切片为1~3秒) 在秒开率上均优于 普通mp4视频 的原因。
1130 0
|
编解码 Ubuntu
FFMPEG音频视频开发: 视频转码、合并、修改分辨率、比特率
FFMPEG音频视频开发: 视频转码、合并、修改分辨率、比特率
1268 0
|
C语言 Android开发
【音视频连载-005】基础学习篇-SDL 加载 YUV 文件并显示
在前面的文章中已经完成了图片的加载和显示,接下来要做的就是加载 YUV 文件并显示
360 0
【音视频连载-005】基础学习篇-SDL 加载 YUV 文件并显示