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

HLS(HTTP Live Streaming)标准的视频及加密

.m3u8 是 HLS(HTTP Live Streaming) 协议的索引文件,用于分割后的 TS 分片的播放调度。制作核心是 将 MP4 转码为 TS 分片 + 生成对应的 m3u8 索引,主流工具是 ffmpeg

1. 前置准备

  • 安装 ffmpeg:Linux 可通过 yum install ffmpeg(CentOS/Rocky Linux)或 apt install ffmpeg(Debian/Ubuntu);Windows 需下载编译包并配置环境变量。
  • 准备待处理的 MP4 文件(建议先确保 MP4 编码为 H.264 + AAC,兼容性最佳)。

2. 单分辨率 HLS 转换(基础命令)

执行以下 ffmpeg 命令,即可生成 m3u8 和对应的 TS 分片:
ffmpeg -i input.mp4 \-c:v h264 \-c:a aac \-hls_time 10 \          # 每个 TS 分片的时长(单位:秒)-hls_list_size 0 \      # 0 表示保留所有分片,非 0 则只保留最新 N 个-hls_segment_filename "output_%03d.ts" \  # TS 分片命名规则output.m3u8             # 生成的 m3u8 文件名
  • 执行后,目录下会生成:
    • output.m3u8:核心索引文件,记录 TS 分片的顺序、时长、路径。
    • output_001.tsoutput_002.ts...:分割后的视频分片文件。 

3. 多分辨率 HLS 转换(自适应码率,可选)

如果需要支持不同网速自动切换清晰度,可生成多套 TS 分片 + 一个主 m3u8:
# 生成低清(480p)分片
ffmpeg -i input.mp4 -c:v h264 -c:a aac -vf "scale=854:480" -hls_time 10 -hls_list_size 0 -hls_segment_filename "480p_%03d.ts" 480p.m3u8# 生成高清(720p)分片
ffmpeg -i input.mp4 -c:v h264 -c:a aac -vf "scale=1280:720" -hls_time 10 -hls_list_size 0 -hls_segment_filename "720p_%03d.ts" 720p.m3u8# 生成主 m3u8(索引多分辨率)
echo "#EXTM3U
#EXT-X-STREAM-INF:BANDWIDTH=800000,RESOLUTION=854x480
480p.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=2000000,RESOLUTION=1280x720
720p.m3u8" > main.m3u8

二、服务器存放的文件

服务器必须同时存放 .m3u8 文件和对应的 .ts 分片文件,缺一不可:
 
  • .m3u8 是索引文件,本身很小(几 KB),仅记录 TS 分片的路径、时长、编码信息。
  • .ts 是实际的视频数据文件,播放器会先请求 m3u8,再根据索引逐个请求 TS 分片进行播放。
 
存放结构建议(以 Nginx 为例):
/var/www/html/hls/
├─ output.m3u8       # 索引文件
├─ output_001.ts     # TS 分片1
├─ output_002.ts     # TS 分片2
└─ ...

Nginx 需配置支持 HLS 的 MIME 类型(在 nginx.conf 或站点配置中添加):

http {types {application/vnd.apple.mpegurl m3u8;video/mp2t ts;}
}

三、原始 MP4 文件可以删除吗?

 
可以删除,但需满足一个前提:
 
已经成功生成了完整的 .m3u8 和所有 .ts 分片,且验证播放正常。
 
 
原因:
 
  • 播放 HLS 流时,播放器只依赖 .m3u8.ts 文件,与原始 MP4 无任何关联。
  • 若后续需要重新生成 HLS(如调整分片时长、增加分辨率),则需要保留原始 MP4;否则删除后无法再基于原视频重新转换。
 
 
 
加密下一章介绍。
 
 
 
 
http://www.jsqmd.com/news/272556/

相关文章:

  • 深入解析:安卓 Java线程八股文 (线程、多线程、线程池、线程安全)
  • HoRain云--LINQ查询语法全解析
  • 2026缠膜机品牌风云榜:哪些型号受市场青睐?缠绕包装机/横向打包机/封箱打包机/在线式缠绕包装机,缠膜机工厂怎么选择 - 品牌推荐师
  • Nacos核心功能 03,Nacos 命名空间与配置分组:优雅实现多环境配置隔离
  • FPGA系统架构设计实践10_时钟网络 - 教程
  • 非隔离式定时器倒计时器的制作之一----电路设计
  • Docker核心概念与实战指南
  • 2026年市面上知名的重型货架供应厂家推荐排行榜单,横梁货架/自动化立体库货架/重型货架,重型货架生产商口碑推荐榜单 - 品牌推荐师
  • WebRTC在对称NAT场景下无法穿透问题解析和方案
  • 基于PHP、asp.net、java、Springboot、SSM、vue3的基VUE的游戏商店系统的设计与实现
  • 佳信搬家是否有保险保障,服务靠谱度大揭秘 - 工业品牌热点
  • 基于PHP、asp.net、java、Springboot、SSM、vue3的基于Django和VUE的大学生云课堂的设计与实现
  • Docker - 使用Coturn实现WebRTC稳定连接
  • Thinkpad e495 Linux 下 ollama 使用AMD核显
  • 基于Spring Boot的蛋糕甜品销售系统的设计与实现(任务书)
  • 收缩膜包装机优选制造,2026年这些厂家靠谱,收缩膜包装机/三维透明膜包装机/纸箱封箱机,收缩膜包装机企业口碑排行 - 品牌推荐师
  • 亲测好用!9大AI论文网站测评:继续教育写作全攻略
  • 消防体质测试仪生产厂商哪家好?这份排名给你答案 - 工业品牌热点
  • 基于PHP、asp.net、java、Springboot、SSM、vue3的基于ASP.NET的高校实验室管理系统的设计与实现
  • 基于Spring Boot的蛋糕甜品销售系统的设计与实现(开题报告)
  • Ubuntu 使用 systemd + Nginx 部署 code-server(含 HTTPS)
  • 导师推荐2026 AI论文平台TOP10:本科生毕业论文写作全测评
  • 活动回顾丨 北大/清华/Zilliz/MoonBit共话开源,覆盖视频生成/视觉理解/向量数据库/AI原生编程语言 - 指南
  • AI智能名片S2B2C商城小程序品牌诞生原因与发展历程分析
  • 2026年周边知名的轮胎厂家排行榜单,客车轮胎/大车轮胎/货车轮胎/汽车维修/轿车轮胎/汽车轮胎,轮胎代理商排行榜单 - 品牌推荐师
  • 2026年国产信创邮件系统核心功能与选型指南 - U-Mail邮件系统
  • 2026年不错的化工厂板式换热器清洗服务商盘点,电力厂板式换热器清洗电话与服务商推荐 - 品牌策略师
  • 2026年国内引流推广公司推荐:技术纵深度与效果可衡量性评价涵盖B2B与大消费场景 - 十大品牌推荐
  • Thinkpad e495 ollama Linux 使用AMD核显
  • 2026年国内广告公司推荐:多行业应用横向评价,针对效果归因与数据合规痛点指南 - 十大品牌推荐