首页 > 其他分享 >M3U8 格式:为什么直播回放都用这个格式?

M3U8 格式:为什么直播回放都用这个格式?

时间:2023-12-15 22:33:22浏览次数:28  
标签:文件 回放 M3U8 直播 播放列表 格式 播放

M3U 文件是一种纯文本文件,可以指定一个或多个多媒体文件的位置。它的设计初衷是为了播放音频文件,但后来越来越多的用于播放视频文件列表。而 M3U8 则是用 UTF-8 编码的 M3U。M3U、M3U8 文件都是苹果公司使用的 HLS(HTTP Live Streaming) 协议的基础。

在实际应用场景中,由于 HLS/M3U8/TS 这套方案在控制直播延时上不太理想,所以一般实时直播场景不会选择使用 M3U8 媒体格式。但是,对于直播回放这种场景,由于使用 M3U8/TS 这套方案能够在直播过程中就持续生成和存储切片,所以直播回放基本上都会选择 M3U8 媒体格式。

M3U8 格式概览
M3U8 文件其实是一个播放列表,这个列表可能是一个媒体播放列表(Media Playlist),也可能是一个主播放列表(Master Playlist)。但无论是哪种播放列表,其内部文字使用的都是 utf-8 编码。

1、媒体播放列表
当 M3U8 文件作为媒体播放列表(Meida Playlist)时,其包含的信息记录的是一系列多媒体资源切片,顺序播放这些切片,即可完整呈现多媒体资源。

第一行的 #EXTM3U 表示文件格式。第二行的 #EXT-X-TARGETDURATION:10 表示后面的各个资源切片时长都小于或等于 10 秒。接下来,我们看到有 3 个资源切片,时长分别是 9.009 秒、9.009 秒、3.003 秒。

在点播时,客户端首先下载 M3U8 文件,然后按照 M3U8 列表下载各个资源切片依次播放即可。在直播时,客户端则需要定时重新请求 M3U8 文件,从而检查是否有新的媒体切片需要进行下载播放。所有的这些数据都通过 HTTP 协议传输。

2、主播放列表
当 M3U8 文件作为主播放列表(Master Playlist)时,其包含的信息是同一个媒体资源的多路流资源列表。不同的流可能有着不同的码率,不同的格式,不同的分辨率。不同的流也可以指定不同语言的音频,不同视角的视频等等。

客户端应该根据网络状况来选择合适的流来播放,也应该根据用户的偏好来选择合适的语言和视角的流来播放。

M3U8的优点

1)多码率适配:M3U8格式可以实现多码率的适配,根据网络带宽,客户端会自动选择适合自己码率的文件进行播放,保证视频流的流畅。这种自适应码率流播对于移动设备网络状况不稳定的情况下保障流畅播放非常有帮助。

2)降低源服务器负载压力:M3U8的特点是将流媒体切分为若干TS片段,并通过一个扩展的M3U列表文件将这些TS片段集中起来供客户端播放器接收。相比使用RTSP协议,M3U8的分发过程不需要额外使用任何专门软件,只需使用普通的网络服务器即可,大大降低了CDN边缘服务器的配置要求,可以使用任何现成的CDN。

3)支持非实时视频:M3U8格式同样适用于非实时视频。通过使用HTTP协议的单个MP4格式的视频文件,客户端可以根据需要进行播放,而无需使用额外的专门软件。

总结:

M3U8是一种常见的流媒体格式,以文件列表的形式存在,支持直播和点播。它是一种UTF-8编码格式的M3U文件,用于记录索引的纯文本文件。M3U8格式具有多码率适配、降低源服务器负载压力和支持非实时视频等优点。通过M3U8格式,可以实现流畅的在线视频播放体验。打开M3U8文件时,播放软件并不是直接播放它,而是根据它的索引找到对应的音视频文件的网络地址进行在线播放。

标签:文件,回放,M3U8,直播,播放列表,格式,播放
From: https://www.cnblogs.com/beatle-go/p/17904295.html

相关文章

  • C++读取FY卫星遥感图像(HDF格式)
    转一下我自己的博客网上找了大概2周,艰难的实现了C++读取HDF图像,CSDN吃相真难看,好多文章都要会员。。。#include<cstdint>#include<hdf5.h>#include<iostream>#include<matplotlibcpp.h>#include<opencv2/opencv.hpp>#include<opencv2/core/core.hpp>#include<......
  • 像素格式转换
    使用ffmpeg,sws_scale接口做像素格式转换参考雷神:https://blog.csdn.net/leixiaohua1020/article/details/42134965**主要功能:**转换像素格式转换后的数据填充到AVFrame中#include<stdio.h>#include<unistd.h>#include<fstream>#include<iostream>/***最......
  • 电脑跟服务器都能读取的u盘格式是什么
    U盘的三种格式1、FAT32格式:FAT32格式兼容性相对好一些,几乎可以应对所有主流的操作系统(比如Windows、MacOS、Linux等),并且可以快速读写。但它的缺点是不能设置权限,安全等级较低;而且这个格式下的U盘最高只能支持4G以下的单个文件传输。linux下使用命令将U盘格式为FAT32:2、NTFS......
  • MySQL往数据库插时间格式的数据时,只保存年月日,不保存时分秒。
     MySQL往数据库插时间格式的数据时,只保存年月日,不保存时分秒。今天在写项目时候,需要将数据insert到数据库中。但是,看到插入数据库中的时间只有年月日,没有时分秒。 查看实体类没毛病 查看xml文件也没有问题  timestamp和datetime区别: 最后经过排查发现问题......
  • M3U8
    一、M3U8简介M3U8文件是指UTF-8编码格式的M3U文件(M3U使用Latin-1字符集编码)。M3U文件是一个记录索引的纯文本文件,打开它时播放软件并不是播放它,而是根据它的索引找到对应的音视频文件的网络地址进行在线播放。其流程如下:M3U8文件是指UTF-8编码格式的M3U文件。M3U文件是记录......
  • Excel-设定格式化条件
    1.设定格式化选取想筛选的栏位所在列--功能区右上角“条件格式”--自行设定条件和突出显示样式栏位下方单元格新增突出显示的内容会自动填充显示样式2.更改/删除条件选取要更改的列--条件格式--管理规则--编辑规则--可重新指定条件删除条件--在管理规则內直接选取规则--点“—”......
  • vscode格式化代码
    第一步:安装三个插件:​​Prettier-Codeformatter​​​、​​ESLint​​​、​​Vetur​​。第二步:修改配置文件MacOS使用​​Command+Sheft+P​​​,windows使用​​Ctrl+Sheft+P​​搜索首选项:打开设置(json),然后把下面配置粘贴进去:Preferences:OpenW......
  • 致命小问题:YYYY-MM-dd格式化时间
    开始日期格式化可以说是最常用的一个小知识了,例如格式化成"年-月-日"、"年-月-日时-分-秒"、“年/月/日”等等,随之也就出现了“yyyy-MM-dd”、"yyyy-MM-ddHH-mm-ss"等格式,使用不当就会一脸懵逼。运行publicstaticvoidmain(String[]args){Calendarcalendar=Cale......
  • 第七章 文件与数据格式化
    strip()方法删除多余空格:用户输入数据时,很有可能会无意中输入多余的空格,或者在一些场景中,字符串前后不允许出现空格和特殊字符,此时就需要去除字符串中的空格和特殊字符。这里的特殊字符,指的是制表符(\t)、回车符(\r)、换行符(\n)等。python中,字符串变量提供了3种方法来删除字符串......
  • get请求数组参数,格式转换
    get请求转码关于qs插件qs是一个增加了一些安全性的查询字符串解析和序列化字符串的库。可以进行对象与字符串之间的一个转换。安装qsaxios中自带qs无需下载,若单独下载只需npminstallqs即可使用组件中单独引入importqsfrom'qs'或者全局引入(main.js)Vue.prototyp......