HLS视频详解

发布时间:2023-05-23

一、hls视频库基本数据结构的模板类

HLS协议中的视频库是用来管理HLS视频的,它采用template实现。HLS的视频库由三个主要部分组成:M3U8文件、媒体文件和密钥文件。其中,M3U8文件是存储视频清单的文本文件,媒体文件包括视频、音频和字幕等,密钥文件用来保护HLS媒体文件。 下面是一个基本的数据结构模板类代码示例:

template<typename K, typename V>
class HLSMap {
public:
    HLSMap() = default;
    ~HLSMap() = default;
    void put(const K& key, const V& value) {
        m_map[key] = value;
    }
    V get(const K& key) {
        auto it = m_map.find(key);
        if (it != m_map.end()) {
            return it->second;
        } else {
            return V();
        }
    }
private:
    std::map<K, V> m_map;
};

二、hls视频格式

HLS视频格式是一种基于HTTP协议的流媒体传输协议,它是苹果公司推出的一种流媒体技术,广泛应用于iOS和macOS中。HLS采用分片(segment)的方式来传输媒体数据,每个分片可以是视频、音频或字幕等。 分片通常是TS(transport stream)格式或AAC(Advanced Audio Coding)格式,TS是一种常用的视频压缩格式,可以支持多个音频和视频流的传输;AAC是一种音频压缩格式,比MP3更高效,更适合在网络上传输音频数据。

三、视频hls是什么意思

视频HLS是一种基于HTTP的流媒体传输协议,是苹果公司推出的一种流媒体技术。HLS采用分片(segment)的方式来传输媒体数据,每个分片可以是视频、音频或字幕等。HLS协议将一个长时间的视频流切分成一些小的HTTP流,在网络上通过HTTP协议传输,从而实现“即传即播”或边下载边播放。

四、hls视频下载

在浏览器上下载HLS视频是一种常见的操作,它可以帮助用户离线观看视频、保存视频资源等。通常情况下,最简单的方式是使用软件或在线下载工具,如比特彗星、闪电下载等。 另一种下载HLS视频的方式是使用Python语言编写一个下载器,并使用FFmpeg工具将HLS视频转换为MP4格式。

import requests
import m3u8
import subprocess
import os
def download_hls(video_url):
    res = requests.get(video_url, verify=False, timeout=30)
    m3u8_obj = m3u8.loads(res.content.decode("utf-8"))
    video_ts_path = os.getcwd() + os.sep + "ts" + os.sep
    if not os.path.exists(video_ts_path):
        os.makedirs(video_ts_path)
    ts_files = []
    for playlist in m3u8_obj.playlists:
        res = requests.get(playlist.uri, verify=False, timeout=30)
        m3u8_obj_playlist = m3u8.loads(res.content.decode("utf-8"))
        for uri in m3u8_obj_playlist.segments.uri:
            ts_file_name = uri.split("/")[-1]
            ts_files.append(ts_file_name)
            if ts_file_name not in os.listdir(video_ts_path):
                res = requests.get(uri, verify=False, timeout=30)
                with open(video_ts_path + ts_file_name, "ab") as f:
                    f.write(res.content)
    if ts_files:
        mp4_file_path = os.getcwd() + os.sep + "video.mp4"
        if os.path.exists(mp4_file_path):
            os.remove(mp4_file_path)
        for ts_file in ts_files:
            ts_file_full_path = video_ts_path + ts_file
            if not os.path.exists(ts_file_full_path):
                continue
            cmd = "ffmpeg -i " + ts_file_full_path + " -c copy -bsf:a aac_adtstoasc -y -loglevel error -threads 4 -f mp4 " + mp4_file_path
            subprocess.Popen(cmd, shell=True)
download_hls("https://example.com/video.m3u8")

五、hls视频播放器

在Web开发中,HLS视频播放器也是一个非常重要的组件。目前,市面上主流的HLS视频播放器有HLS.js、Video.js、JW Player等。 下面是一个使用HLS.js播放HLS视频的示例:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>HLS Video Player</title>
    <!-- 导入HLS.js -->
    <script src="https://cdn.jsdelivr.net/npm/hls.js@latest/dist/hls.min.js"></script>
</head>
<body>
    <video id="video" controls preload="none"></video>
</body>
<script>
    //获取video Dom
    var video = document.getElementById("video");
    //判断HLS.js是否支持当前浏览器
    if (Hls.isSupported()) {
        var hls = new Hls();
        hls.loadSource("http://example.com/video.m3u8");
        hls.attachMedia(video);
        hls.on(Hls.Events.MANIFEST_PARSED, function() {
            video.play();
        });
    } else if (video.canPlayType("application/vnd.apple.mpegurl")) {
        video.src = "http://example.com/video.m3u8";
        video.addEventListener("loadedmetadata", function() {
            video.play();
        });
    }
</script>
</html>

六、手机中腾讯视频的hls文件是

腾讯视频使用的HLS视频通常被保存在app安装目录中的cache文件夹里。用户可以通过一些越狱工具或者第三方文件管理器获取该文件,然后通过HLS视频播放器或者视频编辑软件播放或编辑。

七、hls视频是什么意思

hls视频全称是HTTP Live Streaming视频,是一种基于HTTP协议的流媒体传输协议,用于实现边下边播、直播等功能。HLS的流媒体传输方式采用了分段的方式,将一个长时间的视频流切分成一些小的HTTP流,从而实现“即传即播”。

八、hls视频下载工具

针对大多数普通用户而言,最简单的HLS视频下载工具是比特彗星、闪电下载等第三方下载工具。而对于开发者,可使用Python语言编写自己的下载器,通过FFmpeg将HLS视频转换为MP4格式。当然,也可以使用诸如FFMpegGUI等可视化工具。

九、hls视频传输协议

HLS视频传输协议是基于HTTP协议的流媒体传输协议,属于苹果公司推出的一种流媒体技术。HLS的流媒体传输方式采用了分段的方式,将一个长时间的视频流切分成一些小的HTTP流,从而实现“即传即播”或边下载边播放的功能。

十、hls视频流是什么意思

hls视频流指由HLS协议分段切分的流媒体数据。HLS的流媒体传输方式采用了分段的方式,将一个长时间的视频流切分成一些小的HTTP流,从而实现“即传即播”或边下载边播放等功能。