- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章基于HLS创建Golang视频流服务器的优缺点由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
HLS 是 HTTP Live Streaming 的缩写,是苹果开发的一种基于 HTTP 的自适应比特率流媒体传输协议, 并于 2009 年. HLS 流媒体已经成为应用最广泛的实时视频协议。它是一种将流分解成基于文件小段的格式, 可以通过 HTTP 下载,HLS 可以通过标准的 HTTP 或代理服务器等,这和基于 UDP 的协议(例如 RTP)不同。既然 HLS 现在如此受欢迎,那么它有那些优点和缺点呢.
HLS 简单介绍完了,接下来演示一个小 Demo, 使用 FFmpeg,可以很轻易的将 mp3 文件转换为 HLS 格式,它由多个文件组成,其中一个包含元数据(.m3u8),元数据告诉客户端从哪里获取每个数据文件,以及数据文件中包含什么内容。数据文件拓展名是.ts,通常包含 10 秒的音频.
首先准备一个 mp3 文件。然后安装 FFmpeg,在 Mac 上安装 FFmpeg,如果速度很慢可以尝试切换镜像.
1
|
brew install ffmpeg
|
成功安装后,进入 mp3 所在文件夹,执行以下指令.
1
|
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 阶段.
代码如下 。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
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))
}
|
运行代码 。
1
|
go run main.go
|
打开浏览器地址 。
http://127.0.0.1:8888/outputlist.m3u8 。
恭喜你,你可以听到这段 mp3 动人的旋律了。但是如果你想进一步进行商业开发,或者个人开发,推荐使用比较成熟的解决方案,一是音视频不分家,音频需求往往伴随着视频需求,音视频往往是开发过程中的某一个子需求,如果在上面耗费大量时间,往往会耽误项目进度,而且处理起多个平台时往往有一些细节上的坑。使用市面上的 SDK,能够很大程度上节约开发成本。我个人在使用的声网,能够支持跨平台,最最最关键,每个月能够白嫖一定的额度,对于个人开发者来说十分友好。当然了,费用其实是一方面,还有相当重要的一点就是能够几行代码即可接入,大大较少了踩坑量! 。
正如你所见,HLS 广泛应用在各种平台,移动端,浏览器的普遍支持,让它成为开发者分发流给用户的一个很好的选择。但是,凡事都有但是,因为 HLS 是一个比较慢的协议,虽然苹果的规则似乎相当严格,当涉及到 IOS 流媒体需求时,实际上还是比较灵活的。如果你想通过它去构建一些实时通信的程序,那么它可能不太适合你。最后,如果想要实现比较实时的通信系统,最好借助于市面上其他比较成熟的解决方案,它更适合实时性要求不那么高的场景,在苹果的生态体系下构建的应用.
到此这篇关于基于 HLS 创建 Golang 视频流服务器的文章就介绍到这了,更多相关Golang 视频流服务器内容请搜索我以前的文章或继续浏览下面的相关文章希望大家以后多多支持我! 。
原文链接:https://blog.csdn.net/agora_cloud/article/details/119442733 。
最后此篇关于基于HLS创建Golang视频流服务器的优缺点的文章就讲到这里了,如果你想了解更多关于基于HLS创建Golang视频流服务器的优缺点的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
ODBC是一种连接数据库的开放标准。 ODBC(OpenDataBase Connectivity,开放数据库互连)是微软公司开放服务结构(WOSA,Windows OpenServices Ar
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
在我最近的 javascript 程序中(主要是为了好玩和概念验证)我有很多不同种类的对象,并且每种类型我都有相当数量的“实例”。所以我想我应该为这些使用类,但是由于它们非常简单,我可以直接构造它们而
我想知道图标(Material Design 图标)使用可绘制矢量形状(XML 文件)与图像资源(png 文件)的优缺点是什么? 最佳答案 正如我所见,这个问题是指光栅(例如 jpeg、png)和矢量
优点和缺点是什么使用 Plain Old Data (POD)structs\classes in C++ ? 在什么情况下应该更喜欢使用他们在非 POD 上? 具体来说,POD 在工作时有优势吗与序
我听说 Ctypes 会导致 Python 和 Windows 崩溃(或停止错误)。我应该远离他们的使用吗?我从哪里听到的?当我试图控制窗口的各个方面、自动化之类的东西时,它又回来了。 我听说过 sw
您能否解释一下在 iPhone 上存储数据的不同方式,以及每种方式的优缺点。 我已经阅读了很多关于 UserDefaults、CoreData、XML、plist 的内容……但我有点不知所措。 目前,
但对于关闭PING值后,网站能否被百度和GOOGLE等搜索引擎收录,很多人说法不一,有些说对收录没任何影响,也有人说影响不大,其实会不会影响,我也不是很清楚,我只能从我遇到情况的来分析一下。 7月
我正在寻找一个制作平台。我读过一些关于 gnu make 的文章,它在 Windows 平台上有一些问题(从斜杠/反斜杠到 shell 确定......)所以我想听听我有什么替代品? 如果重要的话,我
我是 Ubuntu Linux 用户,我仅将 Win XP 用于我的工作目的。 最近我用 XP + Visual Studio 2008(由 kvm-quemu 提供支持)设置了一个虚拟机。 我的问题
关闭。这个问题是opinion-based 。目前不接受答案。 想要改进这个问题吗?更新问题,以便 editing this post 可以用事实和引文来回答它。 . 已关闭 5 年前。 Improv
我对使用Grails Portlets plugin在Grails上开发 Liferay portlet的可能性感兴趣。我认为引入portlet框架(例如Spring Portlet API)将使开发
作为Photon的新手,有以下问题: 看起来 VMware 正在尝试创建与 Docker 并行的容器技术。由于现阶段docker比较成熟,使用photon有什么好处/优势吗? 我知道有人可以在内部使用
我只需要一些关于此布局的建议。我不是经验丰富的 CSS 用户,所以我遇到的唯一技术是将所有内容包装到一个 div 中,设置宽度和自动左/右边距。这种方法是面向 future 的吗? 在我开始之前我应该
我正在使用 jQuery Mobile 和 Phonegap 开发 HTML5 移动应用程序。它将部署在多个平台上。 我在下面有一个横幅 png: 我的问题是: 1)直接用这张图片做背景还是用CSS动
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
这个问题在这里已经有了答案: When is it necessary or convenient to use Spring or EJB3 or all of them together? (2
我最近听说了 JavaScript 对象表示法 (JSON),在查找之后,它似乎作为可扩展标记语言 (XML) 的替代品变得相当流行。 我继续 this页面以获取更多信息,但它似乎更像是一个 XML
这个问题在这里已经有了答案: 9年前关闭。 Possible Duplicate: EF 4.1 Code-first vs Model/Database-first 我刚刚开始学习 EF 4.0 C
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我是一名优秀的程序员,十分优秀!