M3U8 文件简介

m3u8 文件实质是一个播放列表(playlist),其可能是一个媒体播放列表(Media Playlist),或者是一个主列表(Master Playlist)。但无论是哪种播放列表,其内部文字使用的都是 utf-8 编码。

当 m3u8 文件作为媒体播放列表(Meida Playlist)时,其内部信息记录的是一系列媒体片段资源,顺序播放该片段资源,即可完整展示多媒体资源。其格式如下所示:

对于点播来说,客户端只需按顺序下载上述片段资源,依次进行播放即可。而对于直播来说,客户端需要 定时重新请求 该 m3u8 文件,看下是否有新的片段数据需要进行下载并播放。

大量TS文件合成一个文件,总时长变短或变长的问题

例子中的ts文件为本地路径,也可用网络路径。如果大量ts文件在本地,则需要在ts文件所在文件夹创建例子中的m3u8文件,使用ffmpeg命令将大量ts文件拼接成一个文件,文件时长变短或边长,命令如下:

ffmpeg.exe -f concat -safe 0 -i C:/HLS/1A03444D-128D-9A95-58EF-271C4B01A434/file.txt -c copy C:/HLS/1A03444D-128D-9A95-58EF-271C4B01A434/test.mp4

使用cancat 参数进行拼接,可能是拼接问题,导致时长不准确。

解决方法:

书写一个m3u8文件,将大量ts文件按上面的m3u8文件例子进行修改,保存后在使用ffmpeg命令可以合成某一封装格式例如(mp4、ts)等文件,命令如下:

ffmpeg.exe -i C:/HLS/4D26D71D-1834-1AF2-E3AF-317DC7E48F2B/1.m3u8 -c copy C:/HLS/4D26D71D-1834-1AF2-E3AF-317DC7E48F2B/test1.mp4

这时文件时长就会不大不小。

这里如果是通过m3u8下载到本地ts文件,最终需要合成一个大文件时,则用下载的m3u8格式重新书写ts路径。

在书写m3u8文件时,严格按照格式书写

#EXTINF:  代表这个ts文件的时长

#EXT-X-ENDLIST:表示PlayList的末尾了,它可以在PlayList中任意位置出现,但是只能出现一个。

#EXT-X-TARGETDURATION:指定最大的媒体段时间长(秒)。所以#EXTINF中指定的时间长度必须小于或是等于这个最大

#EXT-X-MEDIA-SEQUENCE:一个media URI并不是必须要包含的,如果没有,默认为0。

#EXT-X-ALLOW-CACHE:是否允许做cache,这个可以在PlayList文件中任意地方出现,并且最多出现一次,作用效果是所有的媒体段。

#EXT-X-VERSION: M3U8的版本号

M3U8文件格式说明及解决大量拼接ts文件时长不对问题相关推荐

  1. 关于FFmpeg将m3u8合并成mp4之后时长不对的解决方法

    关于FFmpeg将m3u8合并成mp4之后时长不对的解决方法 解决方法 导致时长不对的合并方法 concat方法会导致合并的视频时长有问题 ffmpeg -y -f concat -i ./downl ...

  2. 解决word转PDF文件时图片位置改变和字体格式改变的问题

    解决word转PDF文件时图片位置改变和字体格式改变的问题 在写论文的时候,使用word编辑完文本后将其导出为PDF总是出现图片位置改变或者字体格式改变的问题,好不容易在word中编辑好的格式却不能在 ...

  3. python无法打开文件filenotfounderror_解决Python在导入文件时的FileNotFoundError问题

    例如,在运行这段代码时 from keras.utils import plot_model plot_model(model, to_file='images/model_mnist.png', s ...

  4. 解决ServletFileUpload上传文件时,获取上传文件名出现中文乱码问题

    解决ServletFileUpload上传文件时,获取上传文件名出现中文乱码问题 在我们使用ServletFileUpload上传文件时,我们通常会获取其上传的文件名,然而当文件名包含中文时,便可能出 ...

  5. 音视频骚操作,FFmpeg 如何播放带「图片」的 M3U8 视频,IJKPlyaer 适配非标 TS 文件

    如果看到一个需要播放的视频链接显示是一张图片,你会不会感觉有点懵?如果这张图片写着 png,然后实际格式是 bmp ,你会不会更懵了?如果这个 bmp 还做了加密篡改呢?今天我们要聊的就是这样一个充满 ...

  6. vue3引入.vue文件以及.ts文件时提示找不到模块

    1.找不到vue文件的,是因为ts无法解析我们的vue结尾的文件,所以需要在src目录下, 新建一个d.ts结尾的文件(可以叫env.d.ts) 然后里面这样写就可以 /// <referenc ...

  7. C#使用读写锁三行代码简单解决多线程并发写入文件时线程同步的问题

    在开发程序的过程中,难免少不了写入错误日志这个关键功能.实现这个功能,可以选择使用第三方日志插件,也可以选择使用数据库,还可以自己写个简单的方法把错误信息记录到日志文件. 选择最后一种方法实现的时候, ...

  8. 解决IE下载DOCX文件时自动变为ZIP的方法

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 在公司开 ...

  9. 解决gitee提交大文件时,commit成功,push失败后无法再push成功问题

    我在提交一个大约50MB的文件是遇到的一个问题,代码无法push成功.报错信息如下: 此后,我在提交几KB大小的文件也push失败!!!报错信息也如上.在百度上找了很多方法依旧无法解决,最终找到一个回 ...

最新文章

  1. 路由器运行python脚本_写个Python脚本来登录小米路由器
  2. 第十六届全国大学智能车竞赛华北赛区成绩汇总
  3. python 词云_利用Python生成词云
  4. springboot打包时加入本地jar打包
  5. 机器学习从入门到精通50讲(四)-实时数仓应用实践案例
  6. stm32 GPIO
  7. 获取音频频响和失真_专业音响设备_音频功放失真的四大要点及改善方法
  8. 打印机添加或者设置流程
  9. greenplum数据迁移gpcopy
  10. 微信小程序地图与位置相关操作
  11. Python异方差的检验与修正
  12. SciPyCon 2018 sklearn 教程(下)
  13. 慈善基金会网站建设的步骤和流程
  14. chr计算机语言,Chr,ChrW函数
  15. anker2017拆_Anker的Eufy Genie与Amazon Echo Dot:值得吗?
  16. 网络渗透测试实验二(网络扫描与网络侦察)
  17. MinIO对象生命周期管理解析
  18. deepin外置键盘无法打开键盘背光灯的解决方法
  19. html5饼图颜色渐变,Highcharts 渐变饼图
  20. ISV在“淘宝”上淘宝

热门文章

  1. 误区:思维中常犯的6个基本错误
  2. 空格键 还是 Tab键?
  3. 【印刷行业】RICOH TH5241喷头(G5i)
  4. http://blog.csdn.net/guolin_blog/article/details/17482095/
  5. 【keras】一维卷积神经网络多分类
  6. (43)C#里使用WeifenLuo.WinFormsUI.Docking库时是怎么样保存当前布局?
  7. 仓央嘉措 ❤《见与不见》的全文 ❤
  8. Elasticsearch:Aggregation 简介
  9. 自动升降压5-40V多串超级电容充电芯片和解决方案
  10. WEEK(8)作业——差分约束、拓扑排序(Kahn算法)、SCC(强连通分量)、DFS序、Kosaraju算法