hls流媒体服务器_使用Go和HLS协议构建媒体流服务器

本教程介绍了如何使用Golang和HLS协议构建流媒体服务器。通过FFmpeg将媒体文件转换为HLS格式,简化了服务器端的任务,只需要提供.m3u8和.ts文件。在Go中设置服务器,确保文件路径正确,然后可以使用HTTP提供流媒体内容。通过运行示例代码,你可以启动服务器并使用在线客户端测试音乐播放。
摘要由CSDN通过智能技术生成

hls流媒体服务器

在本教程中,我将指导您使用Golang构建流API。 不用担心,构建强大的流服务器非常容易,特别是如果我们使用一种更现代的协议:HLS。

什么是HLS?
HTTP Live Streaming是Apple开发的基于HTTP的自适应比特率流通信协议。
https://zh.wikipedia.org/wiki/HTTP_Live_Streaming

HLS使我们可以将较大的媒体文件作为许多较小的文本文件来提供,这些文件分成约10秒的增量。 通过以这种方式分解它们,我们用户的客户端应用程序仅需要提前缓冲10秒钟,从而为他们节省了大量的潜在带宽,并使歌曲开始更快地播放。

使用FFmpeg ,我们可以轻松地将mp3文件转换为包含多个文件的HLS格式。 这些文件之一包含元数据(.m3u8),并且首先提供。 此元数据文件告诉客户端从何处获取每个数据文件以及每个数据文件包含的内容。 数据文件的扩展名为.ts。 数据文件通常包含约10秒钟的音频,并应客户的请求一次提供一次。

入门-格式化某些媒体

下载示例.mp3:

http://www.hubharp.com/web_sound/BachGavotteShort.mp3

安装FFmpeg 。 如果您使用的是Mac:

brew install ffmpeg

导航到mp3文件的目录并运行

ffmpeg -i BachGavotteShort.mp3 -c:a libmp3lame -b:a 128k -map 0:0 -f segment -segment_time 10 -segment_list outputlist.m3u8 -segment_format mpegts output%03d.ts

这将产生三个新文件:

output000.ts output001.ts outputlist.m3u8

恭喜你! 困难的部分完成了,您现在有了可以通过HTTP提供的简单文件。 任何现代的客户端媒体库都将知道如何读取HLS文件。

构建服务器

如上所述,HLS在服务器端非常简单。 我们要做的就是提供.m3u8文件的路径,并确保从同一路径提供.ts文件。 在传统的文件服务器体系结构中,这仅意味着它们需要位于同一目录中。

让我们使用以下文件夹结构设置我们的项目:

将以下代码复制到main.go中:

package main

import (
	"fmt"
	"log"
	"net/http"
)

func main () {
	// configure the songs directory name and port
	const songsDir = "songs"
	const port = 8080

	// add a handler for the song files
	http.Handle( "/" , addHeaders(http.FileServer(http.Dir(songsDir))))
	fmt.Printf( "Starting server on %v\n" , port)
	log.Printf( "Serving %s on HTTP port: %v\n" , songsDir, port)

	// serve and log errors
	log.Fatal(http.ListenAndServe(fmt.Sprintf( ":%v" , port), nil ))
}

// addHeaders will act as middleware to give us CORS support
func addHeaders (h http.Handler) http . HandlerFunc {
	return func (w http.ResponseWriter, r *http.Request) {
		w.Header().Set( "Access-Control-Allow-Origin" , "*" )
		h.ServeHTTP(w, r)
	}
}

现在运行您的服务器:

go run main.go

您的服务器已上线! 使用媒体客户端测试您的音乐播放。 您可以在这里找到免费的在线客户端: https : //hls-js-latest.netlify.com/demo/

只需粘贴您歌曲的URI并收听:

http:// localhost:8080 / bachgavotteshort / outputlist.m3u8

本文首次在Qvault看到

谢谢阅读! 祝您的媒体项目好运!

Twitter上的Lane Wagner: @wagslane

订阅Qvault文章: https ://qvault.io

Dev.to上的车道: wagslane

翻译自: https://hackernoon.com/building-a-media-streaming-server-using-go-and-hls-protocol-j85h3wem

hls流媒体服务器

一款免费的流媒体直播软件,主要用于流媒体直播,视频直播,视频点播,视频录制等应用,与FMS、WOWZA、RED5一道,作为用户流媒体直播应用的可选方案。 1、支持Windows/Linux等多种操作系统; 2、采用开发的流媒体协议,而非私有协议,可以与主系统对接,至少支持RTMP推,RTMP拉,RTSP拉三种方式获取直播,支持对获取的直播再按照TS组播或者单播,RTMP,RTSP,HLS,TS OVER HTTP,FLV OVER HTTP等标准流媒体协议的方式进行对外直播转发; 3、支持录制,可定时录制或手动录制,能录制MP4或者FLV格式文件,录制时支持生成新文件或者追加文件两种方式,支持录制超过4G的文件; 4、单台服务器可支持1000个以上并发用户,直播延时小于2秒; 5、支持RTMP转发功能,能够把AMS上的直播转发给其它AMS服务器或者第三方的RTMP服务器,例如RED5,FMS,WOWZA流媒体服务器; 6、 支持PC/手机/平板电脑等多终端访问,无论是windows,linux,或者andriod以及IOS系统访问收看直播时都无需下载插件,直接观看; 7、响应点播时间控制在100ms以内,支持暂停、拖动等特技操作; 8、支持文件直播,可把硬盘上存在的FLV文件编目后,按设定好的任务和顺序进行直播; 9、内置Web应用系统,无需复杂配置,可直接部署到用户服务器使用,也可以选配更复杂的媒资管理系统,完成类似优酷土豆的应用模式; 10、开放的系统架构,提供二次开发接口,可轻松的融入到用户已有的平台或网站平台中、或在此基础上进行二次开放等 ------------------------------------------------------------------------- 使用说明: 1、关于安装运行:软件解压到硬盘上后,执行AokuMServiceManager,即可完成AMS服务的安装,安装完成后,在Windows系统服务中会出现一个AokuMService服务; 2、关于端口:AMS默认的管理端口是9001,可通过浏览器登陆http://127.0.0.1:9001/main.html进行管理;AMS默认的RTMP端口是1935,默认的rtsp端口是5554,默认的flv over http端口是7000,默认的ts over http端口是8008,默认的hls端口也是9001; 3、关于推使用直播你需要有一个支持rtmp推的编码器,建议用奥酷全接口高清编码器,当然你也可以通过FME进行软编码来实现; 4、关于接收直播:AMS正常启动并发布上直播后,你可以在网络内的任一电脑上打开http://ip:9001,通过浏览器观看直播,若开启了hls功能,通过iphone或者ipad登陆http://ip:9001即可观看直播。 5、若开启了TS组播,请确认防火墙是否允许组播,另外您网络内的路由器是否支持组播,接收组播是需要用VLC播放器来完成; 6、接收flv over http也是通过VLC播放器或者支持类似协议的播放器来测试。 7、若使用中出现问题,你可以查看logs目录下的rtmpserver.log文件,里面有详细的错误日志描述。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值