Young87

SmartCat's Blog

So happy to code my life!

游戏开发交流QQ群号60398951

当前位置:首页 >跨站数据测试

Go根据流地址判断流媒体协议类型

目录

 

问题

解决


问题

如何根据一个流媒体地址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认证博客专家 CSDN博客专家
敲代码,搞开发。
本人深耕音视频技术,走全栈路线,前后端通吃,兼顾各端与流媒体服务器。
博客主页地址:https://liuzhen.blog.csdn.net/
欢迎沟通交流学习!

除特别声明,本站所有文章均为原创,如需转载请以超级链接形式注明出处:SmartCat's Blog

上一篇: 【Java开发环境配置】安装Navicat for MySQL

下一篇: 我的第一篇博客-前言

精华推荐