乐知付加密服务平台

如果你有资源, 平台可以帮你实现内容变现, 无需搭建知识付费服务平台。

点击访问官方网站 https://lezhifu.cc

扫码关注公众号 乐知付加密服务平台-微信公众号
如何制作m3u8视频流媒体文件 | chenzuoli's blog

如何制作m3u8视频流媒体文件

利用ffmpeg生成m3u8流媒体文件。

ffmpeg的安装和基本介绍,可移步这篇文章:
ffmpeg安装

生成m3u8流媒体文件

命令:

1
ffmpeg -i video_subclip.mp4 -vcodec copy -acodec copy -bsf:v h264_mp4toannexb -hls_time 10 -hls_list_size 0 -f hls m3u8/video.m3u8

输出的结果文件:
ts

参数释义:
ffmpeg命令是用来将一个名为video_subclip.mp4的MP4视频文件转换成HLS(HTTP Live Streaming)流媒体格式的。下面是命令中每个参数的含义:

  1. -i video_subclip.mp4:指定输入文件是video_subclip.mp4。
  2. -vcodec copy:指定视频编解码器使用复制模式,即不转换视频,直接使用原始视频流。
  3. -acodec copy:指定音频编解码器使用复制模式,即不转换音频,直接使用原始音频流。
  4. -bsf:v h264_mp4toannexb:使用比特流过滤器(bitstream filter)将H.264视频码流从MP4格式转换为AnnexB格式。这是因为HLS通常使用AnnexB格式的H.264码流。
  5. -hls_time 10:设置每个HLS视频分块(segment)的时间长度为10秒。
  6. -hls_list_size 0:设置HLS播放列表(m3u8文件)中包含的分块数量。如果设置为0,表示不限制列表中的分块数量,将包含所有生成的分块。
  7. -f hls:指定输出格式为HLS。
  8. m3u8/video.m3u8:指定输出文件的基本路径和文件名。video.m3u8是播放列表文件,它将包含指向实际媒体数据分块的引用。

总结来说,这个命令会创建一个HLS流,其中视频和音频码流不做任何转换,直接复制原始MP4文件中的流,并将H.264视频码流转换为AnnexB格式以兼容HLS标准。生成的HLS流将由一个播放列表文件(video.m3u8)和多个媒体数据分块组成,每个分块时长为10秒。

运行结果如下:
result

html加载m3u8流媒体文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>视频流媒体播放</title>
</head>

<body>
<script src="https://cdn.jsdelivr.net/npm/hls.js@latest"></script>

<video id="video" controls></video>
<script>
if (Hls.isSupported()) {
var video = document.getElementById('video');
var hls = new Hls();
hls.loadSource('m3u8/video.m3u8');
hls.attachMedia(video);
hls.on(Hls.Events.MANIFEST_PARSED, function() {
video.play();
});
}
</script>
</body>
</html>

好记性不如烂笔头。

欢迎关注微信公众号,你的资源可变现:【乐知付加密平台】
乐知付加密平台

一起学习,一起进步。

-------------本文结束感谢您的阅读-------------