爆款云主机2核4G限时秒杀,88元/年起!
查看详情

活动

天翼云最新优惠活动,涵盖免费试用,产品折扣等,助您降本增效!
热门活动
  • 618智算钜惠季 爆款云主机2核4G限时秒杀,88元/年起!
  • 免费体验DeepSeek,上天翼云息壤 NEW 新老用户均可免费体验2500万Tokens,限时两周
  • 云上钜惠 HOT 爆款云主机全场特惠,更有万元锦鲤券等你来领!
  • 算力套餐 HOT 让算力触手可及
  • 天翼云脑AOne NEW 连接、保护、办公,All-in-One!
  • 中小企业应用上云专场 产品组合下单即享折上9折起,助力企业快速上云
  • 息壤高校钜惠活动 NEW 天翼云息壤杯高校AI大赛,数款产品享受线上订购超值特惠
  • 天翼云电脑专场 HOT 移动办公新选择,爆款4核8G畅享1年3.5折起,快来抢购!
  • 天翼云奖励推广计划 加入成为云推官,推荐新用户注册下单得现金奖励
免费活动
  • 免费试用中心 HOT 多款云产品免费试用,快来开启云上之旅
  • 天翼云用户体验官 NEW 您的洞察,重塑科技边界

智算服务

打造统一的产品能力,实现算网调度、训练推理、技术架构、资源管理一体化智算服务
智算云(DeepSeek专区)
科研助手
  • 算力商城
  • 应用商城
  • 开发机
  • 并行计算
算力互联调度平台
  • 应用市场
  • 算力市场
  • 算力调度推荐
一站式智算服务平台
  • 模型广场
  • 体验中心
  • 服务接入
智算一体机
  • 智算一体机
大模型
  • DeepSeek-R1-昇腾版(671B)
  • DeepSeek-R1-英伟达版(671B)
  • DeepSeek-V3-昇腾版(671B)
  • DeepSeek-R1-Distill-Llama-70B
  • DeepSeek-R1-Distill-Qwen-32B
  • Qwen2-72B-Instruct
  • StableDiffusion-V2.1
  • TeleChat-12B

应用商城

天翼云精选行业优秀合作伙伴及千余款商品,提供一站式云上应用服务
进入甄选商城进入云市场创新解决方案
办公协同
  • WPS云文档
  • 安全邮箱
  • EMM手机管家
  • 智能商业平台
财务管理
  • 工资条
  • 税务风控云
企业应用
  • 翼信息化运维服务
  • 翼视频云归档解决方案
工业能源
  • 智慧工厂_生产流程管理解决方案
  • 智慧工地
建站工具
  • SSL证书
  • 新域名服务
网络工具
  • 翼云加速
灾备迁移
  • 云管家2.0
  • 翼备份
资源管理
  • 全栈混合云敏捷版(软件)
  • 全栈混合云敏捷版(一体机)
行业应用
  • 翼电子教室
  • 翼智慧显示一体化解决方案

合作伙伴

天翼云携手合作伙伴,共创云上生态,合作共赢
天翼云生态合作中心
  • 天翼云生态合作中心
天翼云渠道合作伙伴
  • 天翼云代理渠道合作伙伴
天翼云服务合作伙伴
  • 天翼云集成商交付能力认证
天翼云应用合作伙伴
  • 天翼云云市场合作伙伴
  • 天翼云甄选商城合作伙伴
天翼云技术合作伙伴
  • 天翼云OpenAPI中心
  • 天翼云EasyCoding平台
天翼云培训认证
  • 天翼云学堂
  • 天翼云市场商学院
天翼云合作计划
  • 云汇计划
天翼云东升计划
  • 适配中心
  • 东升计划
  • 适配互认证

开发者

开发者相关功能入口汇聚
技术社区
  • 专栏文章
  • 互动问答
  • 技术视频
资源与工具
  • OpenAPI中心
开放能力
  • EasyCoding敏捷开发平台
培训与认证
  • 天翼云学堂
  • 天翼云认证
魔乐社区
  • 魔乐社区

支持与服务

为您提供全方位支持与服务,全流程技术保障,助您轻松上云,安全无忧
文档与工具
  • 文档中心
  • 新手上云
  • 自助服务
  • OpenAPI中心
定价
  • 价格计算器
  • 定价策略
基础服务
  • 售前咨询
  • 在线支持
  • 在线支持
  • 工单服务
  • 建议与反馈
  • 用户体验官
  • 服务保障
  • 客户公告
  • 会员中心
增值服务
  • 红心服务
  • 首保服务
  • 客户支持计划
  • 专家技术服务
  • 备案管家

了解天翼云

天翼云秉承央企使命,致力于成为数字经济主力军,投身科技强国伟大事业,为用户提供安全、普惠云服务
品牌介绍
  • 关于天翼云
  • 智算云
  • 天翼云4.0
  • 新闻资讯
  • 天翼云APP
基础设施
  • 全球基础设施
  • 信任中心
最佳实践
  • 精选案例
  • 超级探访
  • 云杂志
  • 分析师和白皮书
  • 天翼云·创新直播间
市场活动
  • 2025智能云生态大会
  • 2024智算云生态大会
  • 2023云生态大会
  • 2022云生态大会
  • 天翼云中国行
天翼云
  • 活动
  • 智算服务
  • 产品
  • 解决方案
  • 应用商城
  • 合作伙伴
  • 开发者
  • 支持与服务
  • 了解天翼云
      • 文档
      • 控制中心
      • 备案
      • 管理中心

      小玩流媒体播放——HLS流媒体点播系统

      首页 知识中心 服务器 文章详情页

      小玩流媒体播放——HLS流媒体点播系统

      2023-06-29 08:30:10 阅读次数:79

      背景:此前一直接触的是RTMP流媒体,前一段时间帮助一个朋友研究了下HLS流媒体,感觉挺好玩的。现在把浅薄的尝试和总结分享给大家。

      一.HLS流媒体点播系统概述

      HTTP Live  Streaming最初是苹果公司针对其iPhone、iPod、iTouch和iPad等移动设备而开发的流媒体协议,后来在桌面QuickTime播放器中也得到了应用。HTTP  Live  Streaming允许内容提供者通过普通Web服务器向上述客户端提供接近实时的音视频流媒体服务,包括直播和点播。HTTP  Live Streaming支持将同一节目编码为不同码率的多个替换流,客户端软件可以根据网络带宽的变化在这些不同码率的替换流之间进行智能切换。此外,HTTP  Live  Streaming还支持通过媒体加密和用户认证等方式来达到媒体版权保护。目前HTTP  Live  Streaming已被提交成为IETF的Internet-Draft。

       

      一个典型的HTTP Live  Streaming流媒体系统由内容准备(流媒体服务)、内容分发(分发服务器)和客户端软件三部分组成,如图所示

      小玩流媒体播放——HLS流媒体点播系统

       

      1.1 内容准备服务

      内容准备服务(流媒体服务器)负责将输入的音视频媒体内容转换成为适合于内容分发服务进行传输的格式。对于视频源获取的或者上传的视利用视频编码器转化为MPEG-2系统层标准的传输流(TS)格式进行输出。流分割器负责将编码器输出的MPEG-2 TS流分割为一系列连续的、长度均等的小TS文件(后缀名为.ts),并依次发送至内容分发组件中的Web服务器进行存储。与此同时,流分割器还需创建一个含有指向这些小TS文件指针的索引文件(后缀为m3u8),同样放置于Web服务器之中进行存储。流分割器还可以对其生成的每个小TS文件进行加密,并生成相应的密钥文件。

       

      之所以采用MPEG-2 TS格式来对编码后的媒体流进行统一封装,是因为它能够将音视频媒体流严格按时序进行交织复用,任意截取和分段后,每一个分段都可能不依赖于之前的分段而独立进行解码和播放

       

      1.2内容分发服务

      内容分发服务(分发服务器)用于通过HTTP协议将分割后的小媒体文件及其索引文件递送至客户端播放器,可以采用一个普通的Web服务器(nginx,Apache)来实现。

       

      1.3 客户端

             通常情况下,客户端软件通过访问Web网页中的URL链接来获取和下载一个流媒体会话的索引文件。这个索引文件进一步指定了服务器上当前可用的TS格式媒体文件、解密密钥和其他替换流的位置。对于选定的媒体流,客户端依次下载索引文件中列出的每一个可用媒体文件。当这些媒体文件缓冲够一定数量后,客户端将它们按顺序重新拼装成一个连贯的TS流,然后发送至播放器进行解码和呈现。对于加密的媒体文件,客户端还负责根据索引文件的指引来获取解密密钥,提供用户认证接口,并按需进行解密。

       

      1.4 HTTP  Live Streaming协议介绍

      索引文件采用扩展的M3U播放列表格式,后缀名为.m3u8。M3U播放列表是一个由若干文本行组成的文本文件,其中每一行要么是一个URI,一个空行,或者是一个以注释符“#”起始的行。每个URI行指向一个分段的媒体文件,或者一个衍生的索引(播放列表)文件。除了以“#EXT”起始的行是标签行外,其他以“#”起始的行是注释,应予忽略。下面是一个简单的.m3u8索引文件例子,其所表示的媒体流由3个未加密的长度为10秒的TS文件组成

       

      #EXT-X-MEDIA-SEQUENCE:0 #EXT-X-TARGETDURATION:10 #EXTINF:10, http://media.example.com/segment1.ts #EXTINF:10, http://media.example.com/segment2.ts #EXTINF:10, http://media.example.com/segment3.ts #EXT-X-ENDLIST

      对于视频点播,直到客户端碰到索引文件中的#EXT-X-ENDLIST标签便会停止播放。

       

      二.HLS流媒体系统的优势

      部署方便,便于分发:一旦切分完成,之后的分发过程完全不需要额外使用任何专门软件,普通的网络服务器即可,大大降低了 CDN 边缘服务器的配置要求,可以使用任何现成的 CDN。分发使用的协议是最常见 HTTP,代理服务器对这个协议的缓存优化相当成熟。

       

      时移特性好:如果你要在一段长达一小时的视频中跳转,如果使用单个 MP4 格式的视频文件,并且也是用 HTTP 协议,那么需要代理服务器支持 HTTP range request 以获取大文件中的一部分。不是所有的代理服务器都对此有良好的支持。而 HTTP Live Streaming 则只需要根据列表文件中的时间轴找出对应的 TS 片段下载即可,不需要 range request,对代理服务器的要求小很多。所有代理服务器都支持小文件的高效缓存。

       

      自适应码率流播:效果就是客户端会根据网络状况自动选择不同码率的视频流,条件允许的情况下使用高码率,网络繁忙的时候使用低码率,并且自动在二者间随意切换。这对移动设备网络状况不稳定的情况下保障流畅播放非常有帮助。实现方法是服务器端提供多码率视频流,并且在列表文件中注明,播放器根据播放进度和下载速度自动调整。

       

      对网络环境支持好:HLS可以穿过任何允许HTTP数据通过的防火墙或者代理服务器。

       

      二.HLS流媒体系统的缺点

      具有时延性:HTTP  Live  Streaming并不是一个真正实时的流媒体系统,这是因为对应于媒体分段的大小和持续时间有一定潜在的时间延迟。在客户端中,至少在一个分段媒体文件被完全下载之后才能够开始播放,而通常要求下载完成两个分段媒体文件之后才开始播放以保证不同分段音视频之间的无缝连接。

       

      媒体数据码率相对较大:MPEG-TS流有比通常文件更多的头信息,会导致文件整体码率明显上升。

       

      三.技术选型

             内容准备服务中的编码器采用ffmpeg,流切片采用Segmenter,web服务器采用Nginx,客户端:对flash支持客户端的选用StrobeMedia Playback,ios利用Safari浏览即可,Android正在研究中,对于支持html5的浏览器可采用html5技术进行播放。

       

      四.流媒体服务器的安装配置

      系统环境:

      发行版本:CentOS release 6.3

      内核版本:2.6.32-279.el6.x86_64

       

      4.1 ffmpeg的安装

      • 4.1.1安装Yasm

      Yasm是一个完全重写的NASM汇编。目前,它支持x86和AMD64指令集,接受NASM和气体汇编语法,产出二进制, ELF32 , ELF64 ,COFF , Mach - O的( 32和64 ) , RDOFF2 ,的Win32和Win64对象的格式,并生成STABS 调试信息的来源,DWARF 2 ,CodeView 8格式。

      wget http://www.tortall.net/projects/yasm/releases/yasm-1.2.0.tar.gz tar zxvf yasm-1.2.0.tar.gz cd yasm-1.2.0 ./configure –prefix=/usr/local Make make install 查看yasm是否可以执行,不能执行就将/usr/local/bin加入可执行路径

      • 4.1.2 安装ffmpeg

      FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。它包括了目前领先的音/视频编码库libavcodec。可以轻易地实现多种视频格式之间的相互转换,例如在本例中可以把MP4,MOV等文件转成我们用来切片的MPEG-TS文件。

      wget http://ffmpeg.org/releases/ffmpeg-2.2.tar.gz tar zxvf ffmpeg-2.2.tar.gz cd ffmpeg-2.2 ./configure –prefix=/usr/local Make make install

       

      4.2 切片工具segmenter的安装

      我们使用segmenter工具获得m3u8的索引文件以及视频流切片文件。

       

      从http://httpsegmenter.googlecode.com/svn/  找到segmenter.c文件,采用如下编译方式

      gcc -Wall-g segmenter.c -o segmenter -lavformat -lavcodec -lavutil -lm -lz-lpthread  -std=c99

      建议之后把生成的二进制segmenter拷贝入/usr/local/bin方便使用。

       

      警告:针对网络上很多https://github.com/johnf/m3u8-segmenter这个解决方案,在我和王海涛的测试中发现切片不准确的情况,需要注意。

       

      4.3 web服务器nginx的安装

      4.3.1 可以直接安装官网提供的较新的稳定版本即可,也可以安装github上的加入nginx-rtmp-module模块的版本,https://github.com/arut/nginx-rtmp-module。

      4.3.2由于我们需要播放m3u8,ts类型的文件,所以要在nginx的conf/mime.types文件中加入

      application/x-mpegURL                 m3u8; video/MP2T                            ts;

      4.3.3另外对于nginx的http配置块中server配置块进行下简要说明

      http {      server {               listen 80;               server_name localhost;               location / {                              root /usr/local/html;                              index index.html index.htm;               }        } }

       

      listen 表示nginx的监听端口,建议配置为80,因为“允许HTTP数据通过的防火墙或者代理服务器”这个缘故。

       

      对Location进行讲解主要是为了指出今后我们的视频存储URL对应在web

      以root方式设置资源路径 语法:rootpath; 默认:roothtml; 配置块:http、server、location、if 例如,定义资源文件相对于HTTP请求的根目录。 location /download/ { .     root /opt/web/html/;   } 在上面的配置中,如果有一个请求的URI是/download/index/test.html,那么Web服务器将会返回服务器上/opt/web/html/download/index/test.html文件的内容。

       

      以root方式设置资源路径

      语法:rootpath;

      默认:roothtml;

      配置块:http、server、location、if

      例如,定义资源文件相对于HTTP请求的根目录。 

      location /download/ { 

      .     root /opt/web/html/;  

      } 

      在上面的配置中,如果有一个请求的URI是/download/index/test.html,那么Web服务器将会返回服务器上/opt/web/html/download/index/test.html文件的内容。

       

      五.如何采用HLS协议播放视频

       

      5.1 利用ffmpeg对视频文件进行转码  **文件 -- >ts文件。

      ffmpeg -y -i <infile> -vcodec copy -acodec copy -vbsf h264_mp4toannexb <output file> -y  覆盖输出文件,即如果nba.xxx文件已经存在的话,直接覆盖   -i   “filename”   指定需要转换的文件 -vcodec的意思是指定一个视频编码器,copy的意思就是不编码,直接复制到新文件。 -acodec的意思是指定一个音频编码器,copy的意思就是不编码,直接复制到新文件。 vbsf为过滤方法,即将mp4规定的H264组织方式转换回H264协议书规定的字节流格式。 h264_mp4toannexb 过滤器,很多×××只支持annexb这种模式,因此需要将mp4做转换 其中in file为待转换的视频文件,比如input.mov,outputfile为转换后的文件,要命名为output.ts

      5.2 利用segmenter将转换好的ts文件切割成多个ts片,并生成.m3u8的索引文件。

      小玩流媒体播放——HLS流媒体点播系统小玩流媒体播放——HLS流媒体点播系统

      • 对于苹果的设备可直接使用safari播放m3u8文件。

      • 对于支持flash的设备我们采用StrobeMediaPlayback实现播放音视频文件。

      • 对于支持hls的平台,在对html5支持的浏览器下,可直接使用浏览器进行视频播放。

       

       

      6.2 演示资源

      略

       

      6.3 测试结果

      • 对于苹果设备均支持m3u8文件的播放(iphone,ipad, mac os)。

      • 对于支持flash的设备均支持StrobeMediaPlayback播放(pc)。

      • 对于浏览器支持html5的浏览器均支持html5方式的播放(苹果设备,pc, android)。

       

      附录:

      1. 1.      关于StrobeMediaPlayback的配置方式:

      说明:StrobeMediaPlayback自身不支持hls视频的播放,但是利用第三方插件可以完成对hls视频播放的支持。

      配置方式:

      第三方插件地址https://github.com/denivip/osmf-hls-plugin,我们进行配置只需要将  

      小玩流媒体播放——HLS流媒体点播系统小玩流媒体播放——HLS流媒体点播系统

      将src改为hls索引文件的url,接着通过访问url就可以完成对hls视频的播放。

      版权声明:本文内容来自第三方投稿或授权转载,原文地址:https://blog.51cto.com/yaocoder/1435771,作者:一个叫大姚的工程师,版权归原作者所有。本网站转在其作品的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如因作品内容、版权等问题需要同本网站联系,请发邮件至ctyunbbs@chinatelecom.cn沟通。

      上一篇:使用VMware虚拟机安装windows10系统

      下一篇:Windows Server2016设置DHCP服务

      相关文章

      2025-05-07 09:08:23

      Qt中音频的使用

      于音频我们在使用的过程中一般是录制音频、播放音频。针对这两个需求介绍Qt中音频的使用。

      2025-05-07 09:08:23
      函数 , 对象
      2025-04-09 09:14:24

      javascript 西瓜一期 05-08 计算机的基本组成

      javascript 西瓜一期 05-08 计算机的基本组成

      2025-04-09 09:14:24
      cpu , 内存 , 存储 , 数据 , 硬盘
      2024-12-05 08:49:34

      SpringCloud天机学堂:高并发优化(五)

      SpringCloud天机学堂:高并发优化(五)

      2024-12-05 08:49:34
      Redis , 延迟 , 数据库 , 缓存 , 记录
      2024-10-21 09:43:21

      流媒体协议HLS

      HLS 全称是 HTTP Live Streaming,是一个由 Apple 公司提出的基于 HTTP 的媒体流传输协议,用于实时音视频流的传输。目前HLS协议被广泛的应用于视频点播和直播领域。

      2024-10-21 09:43:21
      ts
      2024-06-24 07:23:24

      FFmpeg hls生成切片时间不准确问题排查

      调用FFmpeg接口将AVPacket生成HLS切片文件,生成的切片时间不准确

      2024-06-24 07:23:24
      FFmpeg
      2024-06-24 07:23:24

      FFmpeg4.4 代码读取MP4文件生成HLS切片文件

      FFmpeg4.4 代码读取MP4文件生成HLS切片文件

      2024-06-24 07:23:24
      FFmpeg
      查看更多
      推荐标签

      作者介绍

      天翼云小翼
      天翼云用户

      文章

      33561

      阅读量

      5247983

      查看更多

      热门标签

      服务器 linux 虚拟机 Linux 数据库 运维 网络 日志 数据恢复 java python 配置 nginx centos mysql
      查看更多

      相关产品

      弹性云主机

      随时自助获取、弹性伸缩的云服务器资源

      天翼云电脑(公众版)

      便捷、安全、高效的云电脑服务

      对象存储

      高品质、低成本的云上存储服务

      云硬盘

      为云上计算资源提供持久性块存储

      • 7*24小时售后
      • 无忧退款
      • 免费备案
      • 专家服务
      售前咨询热线
      400-810-9889转1
      关注天翼云
      • 旗舰店
      • 天翼云APP
      • 天翼云微信公众号
      服务与支持
      • 备案中心
      • 售前咨询
      • 智能客服
      • 自助服务
      • 工单管理
      • 客户公告
      • 涉诈举报
      账户管理
      • 管理中心
      • 订单管理
      • 余额管理
      • 发票管理
      • 充值汇款
      • 续费管理
      快速入口
      • 天翼云旗舰店
      • 文档中心
      • 最新活动
      • 免费试用
      • 信任中心
      • 天翼云学堂
      云网生态
      • 甄选商城
      • 渠道合作
      • 云市场合作
      了解天翼云
      • 关于天翼云
      • 天翼云APP
      • 服务案例
      • 新闻资讯
      • 联系我们
      热门产品
      • 云电脑
      • 弹性云主机
      • 云电脑政企版
      • 天翼云手机
      • 云数据库
      • 对象存储
      • 云硬盘
      • Web应用防火墙
      • 服务器安全卫士
      • CDN加速
      热门推荐
      • 云服务备份
      • 边缘安全加速平台
      • 全站加速
      • 安全加速
      • 云服务器
      • 云主机
      • 智能边缘云
      • 应用编排服务
      • 微服务引擎
      • 共享流量包
      更多推荐
      • web应用防火墙
      • 密钥管理
      • 等保咨询
      • 安全专区
      • 应用运维管理
      • 云日志服务
      • 文档数据库服务
      • 云搜索服务
      • 数据湖探索
      • 数据仓库服务
      友情链接
      • 中国电信集团
      • 189邮箱
      • 天翼企业云盘
      • 天翼云盘
      ©2025 天翼云科技有限公司版权所有 增值电信业务经营许可证A2.B1.B2-20090001
      公司地址:北京市东城区青龙胡同甲1号、3号2幢2层205-32室
      • 用户协议
      • 隐私政策
      • 个人信息保护
      • 法律声明
      备案 京公网安备11010802043424号 京ICP备 2021034386号