当前位置: 首页 > news >正文

视频文件切片

1.为什么网络点播系统使用m3u8更有优势?为何点播要用M3U8来搞?存成一个文件不更好吗?

        一个MP4文件可能几百M或几个G,如果读取整个MP4文件的信息并且需要下载一段内容,首次打开播放超慢(加载时间长)。如果把MP4文件切片播放,每个分片100多KB,播放会更快。

2.M3U8+MPEGTS分片播放的优势?

  • 播放速度块:MP4文件播放在开始加载的时,会读取很大的文件信息,可能会导致卡顿很长时间才能播放。而m3u8分片,则会瞬间读取整个视频文件信息,马上开始加载第一片ts视频文件播放,不管是开始播放还是拖拽播放的加载速度都比MP4快N倍。
  • 缓解磁盘IO:高清视频文件一般都是G级别的,对于大文件下载来说,单盘的IO压力较大。如果能在磁盘上将大文件打散分片存储,需要播放的部分才下载,不需要播放的部分则不下载,这样硬盘IO将会大大缓解。
  • 容错简单:下载或存储过程中,1G的文件中任一字节出错将可能会导致整个视频失效,而被切成小碎片后,容错将变得相对简单,只需补全出错的切片即可。
  • 分发简单:大文件分发起来相对小文件比较困难,下载耗时长,特别是在服务初期,源服务器需要承受极高的磁盘IO请求。基本上很少看到超大文件做cdn分发的,而ts分片文件做cdn缓存就很容易了,文件小缓存速度快,基本上没有缓存失败的可能。
  • 缓存下载优秀:MP4在HTTP状态下会一直下载文件,不管用户是否需要播放后面的内容都会一直下载直到完全下载完成。而分片文件则不存在这个问题,通过播放器或服务器端的控制,只下载需要播放的部分内容,不播放则不下载。

3.CDN对m3u8点播需要做哪些支持?

        受限于播放器与源站之间的交互行为的不确定性,给M3U8做缓存和加速服务时,最好先抓包分析下播放器与源站直接交互时的请求与响应头,这样会加速解决在经过CDN时遇到的故障。

4.需要注意

  • 源站明确告诉播放器哪些内容不能缓存,明确cache-control:no-cache的,尽量不要与源站配置一致,如可能影响到播放器的xml控制文件及M3U8文件(分析其内容是否会变化)
  • 长连接:源站与播放器直接的交互是开启长连接,Connection:keep-alive,如果是长连接的话,在拿wireshark 打开包时,点击follow stream时,将可以看到一个stream流中有多次GET请求及响应。一般的播放及拖拽卡顿,很有可能是长连接没有打开,注意开启CDN设备到播放器,及CDN到源站的长连接。这样可以将miss时对用户的体验降到最低。 

5.M3U8支持中遇到的一些问题,及优化措施

  • 提前预加载,获取所有m3u8列表,跑个脚本,先全部预加载到CDN设备上。比较土,但不影响后续观看体验。
  • 实时预加载,在CDN设备上首次获取M3U8文件时,在CDN端对M3U8进行解析,自行在CDN内部完成对视频文件的预热。相对更理想,但在CDN端做解析,会让M3U8从源站到客户端加大延迟。相对1来说稍复杂点。

6.切片测试指令

ffmpeg -i HD1080P_FinalOutput.mp4 -hls_time 5 -hls_list_size 0 -c copy -f hls  HD1080P_FinalOutput.m3u8

http://www.lryc.cn/news/63134.html

相关文章:

  • 维生素的缺乏与生理功能,是否需要补充维生素【持续学习】
  • CUDA下载,以及下载GPU版本的pytorch
  • 学习笔记:c存储类
  • 236. 二叉树的最近公共祖先【190】
  • 即时配送,即时很重要!商家能不能盈利,“快”是源头
  • ChatGPT原理剖析
  • 「C/C++」C/C++软件跨平台思维
  • c# 通过界面上填写的信息输出到对应的word中,并另存为一个新的文件
  • HTML+CSS+JS 学习笔记(四)———jQuery
  • TryHackMe-Mnemonic(boot2root)
  • Nacos注册中心的使用
  • 项目中别用 “! = null“ 做判空了
  • MySQL数据库——MySQL子查询
  • 工具链和其他-超级好用的web调试工具whistle
  • ROS第四十三节——定位
  • 2023年第二十届五一数学建模竞赛题目 C题详细思路
  • 模块化编程原理示意图--CommonJS 模块编程--ES6 模块编程思路分析/图解--三种导出形式--全部代码示例
  • Ansys Zemax | 如何模拟双折射偏振器件
  • Java关键字之:this
  • 嵌入式Linux驱动开发(九)Linux中断
  • 数据库系统-并发控制
  • Java8 教程_编程入门自学教程_菜鸟教程-免费教程分享
  • 从零开始学架构——高可用存储架构
  • 连ChatGPT都不懂的五一调休,到底怎么来的?
  • AES工作流程
  • C++11
  • ubuntu18.04 配置zlmediakit 支持ffmpeg转码记录
  • H68K配置路由功能
  • *2.5 迭代法的收敛阶与加速收敛方法
  • 仪表板展示 | X-lab开放实验室GitHub开源项目洞察大屏