Golang根据URL判断媒体协议

liuzhen007 等级 128 0 0

目录

问题

解决

问题

如何根据一个流媒体地址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

截图: Description

预览图
收藏
评论区