Go根据流地址判断流媒体协议类型
日期: 2020-11-29 分类: 跨站数据测试 348次阅读
目录
问题
如何根据一个流媒体地址URL判断对应的流媒体协议,比如RTMP、RTSP协议等。
解决
这里提供一个方法,可以直接拿来用。
func getProtocol(url string) (string, error) {
if url != "" {
index := strings.Index(url, ":")
if index > 0 {
return strings.ToUpper(url[0:index]), nil
} else {
return "", ErrorInvalidURL
}
}
return "", ErrorNullURL
}
getProtocol() 方法会输出流媒体协议的大写字符串标识,最后给出完整的代码:
package main
import(
"fmt"
"strings"
)
var (
ErrorNullURL = fmt.Errorf("url is null")
ErrorInvalidURL = fmt.Errorf("url is not valid")
)
func getProtocol(url string) (string, error) {
if url != "" {
index := strings.Index(url, ":")
if index > 0 {
return strings.ToUpper(url[0:index]), nil
} else {
return "", ErrorInvalidURL
}
}
return "", ErrorNullURL
}
func main() {
url1 := "rtmp://172.0.0.1:1935/test/live"
url2 := "rtsp://172.0.0.1:1554/live"
if pro, err := getProtocol(url1); err == nil {
fmt.Println("url1 protocol: ", pro)
}
if pro, err := getProtocol(url2); err == nil {
fmt.Println("url2 protocol: ", pro)
}
}
运行结果如下:
url1 protocol: RTMP
url2 protocol: RTSP
截图:
Data-Mining
CSDN博客专家
敲代码,搞开发。本人深耕音视频技术,走全栈路线,前后端通吃,兼顾各端与流媒体服务器。博客主页地址:https://liuzhen.blog.csdn.net/。欢迎沟通交流学习!
除特别声明,本站所有文章均为原创,如需转载请以超级链接形式注明出处:SmartCat's Blog
精华推荐