如何利用HLS创建一个Golang视频流服务器

发布时间:2021-08-09 11:33:21 作者:Leah
来源:亿速云 阅读:99

这篇文章给大家介绍如何利用HLS创建一个Golang视频流服务器,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

HLS 是 HTTP Live Streaming 的缩写,是苹果开发的一种基于 HTTP 的自适应比特率流媒体传输协议, 并于 2009 年. HLS 流媒体已经成为应用最广泛的实时视频协议。它是一种将流分解成基于文件小段的格式, 可以通过 HTTP 下载,HLS 可以通过标准的 HTTP 或代理服务器等,这和基于 UDP 的协议(例如 RTP)不同。

优点

缺点

HLS 简单介绍完了,接下来演示一个小 Demo, 使用 FFmpeg,可以很轻易的将 mp3 文件转换为 HLS 格式,它由多个文件组成,其中一个包含元数据(.m3u8),元数据告诉客户端从哪里获取每个数据文件,以及数据文件中包含什么内容。数据文件拓展名是.ts,通常包含 10 秒的音频。

首先准备一个 mp3 文件。然后安装 FFmpeg,在 Mac 上安装 FFmpeg,如果速度很慢可以尝试切换镜像。

brew install ffmpeg

成功安装后,进入 mp3 所在文件夹,执行以下指令。

ffmpeg -i 江南.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

执行完毕后应该会看到一些结果,大致内容如下.

1 output000.ts  output008.ts  output016.ts  output024.ts
2 output001.ts  output009.ts  output017.ts  output025.ts
3 output002.ts  output010.ts  output018.ts  output026.ts
4 output003.ts  output011.ts  output019.ts  outputlist.m3u8
5 output004.ts  output012.ts  output020.ts  江南.mp3
6 output005.ts  output013.ts  output021.ts
7 output006.ts  output014.ts  output022.ts
8 output007.ts  output015.ts  output023.ts

到这一步你已经完成了文件格式转换,接下来进入 Coding 阶段。

项目结构

如何利用HLS创建一个Golang视频流服务器

代码如下

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

 func main() {  
  // 设置文件目录
  const songsDir = "song"  
  const port = 8888

  http.Handle("/", http.FileServer(http.Dir(songsDir)))  
  log.Printf("Serving %s on HTTP port: %v\n", songsDir, port)

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

运行代码

go run main.go

关于如何利用HLS创建一个Golang视频流服务器就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

推荐阅读:
  1. golang怎么创建目录
  2. 使用golang怎么创建一个WebSocket服务

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

golang

上一篇:docker安装mysql5.7的过程

下一篇:Intellij IDEA 2017.3如何使用Lombok

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》