搭建简单hls直播测试服务

2024-06-02 11:08

本文主要是介绍搭建简单hls直播测试服务,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

经过实践,通过h5 video 直接m3u8直播, ios 是都没有问题的。android 4.2以上才基本上没问题。4.2以下的各品牌有些问题需要做不同的兼容。

HTTP Live Streaming(缩写是 HLS)是一个由苹果公司提出的基于HTTP的流媒体网络传输协议。是苹果公司QuickTime X和iPhone软件系统的一部分。它的工作原理是把整个流分成一个个小的基于HTTP的文件来下载,每次只下载一些。当媒体流正在播放时,客户端可以选择从许多不同的备用源中以不同的速率下载同样的资源,允许流媒体会话适应不同的数据速率。在开始一个流媒体会话时,客户端会下载一个包含元数据的extended M3U (m3u8) playlist文件,用于寻找可用的媒体流。

在测试直播各种兼容性时, 为了测试方便,可以自己搭建一个直播服务器来输入视频流供测试。

rtmp直播流会被动态切分为ts片段和一个不断刷新的u3m8文件, 这个正是h5直播时的方式,因此我们通过配置nginx 的rtmp 模块来支持 rtmp 流媒体直播服务。

主要以下几步, 一些具体的安装步骤就不细说了:

1. 安装强大的音视频转换工具ffmpeg , 相信你对这个不陌生.

2.安装nginx 以及 nginx-rtmp-module 模块(自行搜索下载)

进入你的nginx源码目录, 执行以下命令, 注意, 之前安装的模块如果有其他配置需要带上

./configure --prefix=/usr/local/nginx --add-module=/usr/local/src/nginx-rtmp-module --with-debug
make
make install

 3.配置 nginx 以支持rtmp

在nginx.conf配置文件末尾加上以下配置:

rtmp{server{ listen 1935;chunk_size      4000;   # For HLS to work please create a directory in tmpfs (/tmp/app here)   # for the fragments. The directory contents is served via HTTP (see  # http{} section in config)  #       # Incoming stream must be in H264/AAC. For iPhones use baseline H264  # profile (see ffmpeg example).  # This example creates RTMP stream from movie ready for HLS:  #       # ffmpeg -loglevel verbose -re -i movie.avi  -vcodec libx264   #    -vprofile baseline -acodec libmp3lame -ar 44100 -ac 1   #    -f flv rtmp://localhost:1935/hls/movie  #       # If you need to transcode live stream use 'exec' feature.  #       application hls{live on;hls on; hls_path        /data/maxwellxwma/html5hls/html/hls;hls_fragment 5s;}       }       
}

 这样配置好后, 我们就可以对当前服务器生成rtmp 直播流了,执行以下命令会不断向/data/maxwellxwma/html5hls/html/hls下面写入ts片段和m3u8文件:

./ffmpeg -re -i /data/maxwellxwma/src/t.flv -vcodec copy -acodec copy -f flv rtmp://10.6.224.185/hls/mystream

 如下图所示:

边生成边播放边删除:

4. 配置vhosts支持外部调用m3u8文件播放:

server{listen 8080;server_name html5hls.qq.com;error_log /data/maxwellxwma/logs/nginx/hls.qq.com_error.log;index index.html index.php;root /data/maxwellxwma/html5hls/html;location        /hls{   #server HLS fragmentstypes{  text/html html htm;#application/vnd.apple.mpegurl m3u8;application/x-mpegurl m3u8;video/mp2t ts;}       root /data/maxwellxwma/html5hls/html;index index.html;expires -1;}       }

 这些配置可以直接加入到nginx.conf里, 但建立虚拟主机配置,增加可维护性

然后重启nginx  ,  直播服务就搭建好了。

用VLC播放器测试一下正常:

 

5. html5  video 标签嵌入播放测试:

<!DOCTYPE html>
<html>
<head><meta http-equiv="content-type" content="text/html; charset=utf-8"><title>HLS Player</title>
</head>
<body>
<video id="video" src="http://10.6.224.185:8080/hls/mystream.m3u8" width="100%" heigh="100%" autoplay="autoplay" controls="controls">不支持videos</video>
</body>
</html> 

 

m3u8文件记录了待播放的ts列表:

好了, 到此终于可以随心随地随时,随心所欲的测试直播了, 还有那些非常蛋疼的安卓兼容 性问题

这篇关于搭建简单hls直播测试服务的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1023792

相关文章

关于DNS域名解析服务

《关于DNS域名解析服务》:本文主要介绍关于DNS域名解析服务,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录DNS系统的作用及类型DNS使用的协议及端口号DNS系统的分布式数据结构DNS的分布式互联网解析库域名体系结构两种查询方式DNS服务器类型统计构建DNS域

Linux中SSH服务配置的全面指南

《Linux中SSH服务配置的全面指南》作为网络安全工程师,SSH(SecureShell)服务的安全配置是我们日常工作中不可忽视的重要环节,本文将从基础配置到高级安全加固,全面解析SSH服务的各项参... 目录概述基础配置详解端口与监听设置主机密钥配置认证机制强化禁用密码认证禁止root直接登录实现双因素

java向微信服务号发送消息的完整步骤实例

《java向微信服务号发送消息的完整步骤实例》:本文主要介绍java向微信服务号发送消息的相关资料,包括申请测试号获取appID/appsecret、关注公众号获取openID、配置消息模板及代码... 目录步骤1. 申请测试系统2. 公众号账号信息3. 关注测试号二维码4. 消息模板接口5. Java测试

使用Python进行GRPC和Dubbo协议的高级测试

《使用Python进行GRPC和Dubbo协议的高级测试》GRPC(GoogleRemoteProcedureCall)是一种高性能、开源的远程过程调用(RPC)框架,Dubbo是一种高性能的分布式服... 目录01 GRPC测试安装gRPC编写.proto文件实现服务02 Dubbo测试1. 安装Dubb

如何使用Haporxy搭建Web群集

《如何使用Haporxy搭建Web群集》Haproxy是目前比较流行的一种群集调度工具,同类群集调度工具有很多如LVS和Nginx,本案例介绍使用Haproxy及Nginx搭建一套Web群集,感兴趣的... 目录一、案例分析1.案例概述2.案例前置知识点2.1 HTTP请求2.2 负载均衡常用调度算法 2.

Python的端到端测试框架SeleniumBase使用解读

《Python的端到端测试框架SeleniumBase使用解读》:本文主要介绍Python的端到端测试框架SeleniumBase使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全... 目录SeleniumBase详细介绍及用法指南什么是 SeleniumBase?SeleniumBase

一文详解如何在idea中快速搭建一个Spring Boot项目

《一文详解如何在idea中快速搭建一个SpringBoot项目》IntelliJIDEA作为Java开发者的‌首选IDE‌,深度集成SpringBoot支持,可一键生成项目骨架、智能配置依赖,这篇文... 目录前言1、创建项目名称2、勾选需要的依赖3、在setting中检查maven4、编写数据源5、开启热

SpringBoot服务获取Pod当前IP的两种方案

《SpringBoot服务获取Pod当前IP的两种方案》在Kubernetes集群中,SpringBoot服务获取Pod当前IP的方案主要有两种,通过环境变量注入或通过Java代码动态获取网络接口IP... 目录方案一:通过 Kubernetes Downward API 注入环境变量原理步骤方案二:通过

基于Python实现一个简单的题库与在线考试系统

《基于Python实现一个简单的题库与在线考试系统》在当今信息化教育时代,在线学习与考试系统已成为教育技术领域的重要组成部分,本文就来介绍一下如何使用Python和PyQt5框架开发一个名为白泽题库系... 目录概述功能特点界面展示系统架构设计类结构图Excel题库填写格式模板题库题目填写格式表核心数据结构

如何搭建并配置HTTPD文件服务及访问权限控制

《如何搭建并配置HTTPD文件服务及访问权限控制》:本文主要介绍如何搭建并配置HTTPD文件服务及访问权限控制的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、安装HTTPD服务二、HTTPD服务目录结构三、配置修改四、服务启动五、基于用户访问权限控制六、