Golang根据URL判断媒体协议

liuzhen007 等级 719 0 0
标签: Golang

目录

问题

解决

问题

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

截图: Golang根据URL判断媒体协议

收藏
评论区

相关推荐

Mac安装Golang和vscode
Mac第一次安装golang和vscode一起使用,遇到了不少的坑,下面介绍一下正确的安装方式。 1、使用brew安装Golang 如果不知道brew是什么,或怎么安装请看这里 brew官网(https://brew.sh/index_zhcn) brew install golang 安装完成后可以使用
golang 分析调试高阶技巧
layout: post title: “golang 调试高阶技巧” date: 2020603 1:44:09 0800 categories: golang GC 垃圾回收 golang 高阶调试 Golang tools nm compile
Go语言入门系列(一)之Go的安装和使用
1.安装环境 ====== 1. 进入[Golang官网](https://www.oschina.net/action/GoToLink?url=https%3A%2F%2Fgolang.org),进入下载页面。 (如果打不开可访问[Golang中国](https://www.oschina.net/action/GoToLink?u
Archlinux下Visual Studio Code配置Golang开发环境
一、Golang的安装 ----------- GoLang安装并验证一下: [cox@localhost ~]$ sudo pacman -S go [cox@localhost ~]$ go version go version go1.8.3 linux/amd64s 要注意,Golang的安装要确保两个环境变量,一个是G
Golang Gin实践 番外 请入门 Makefile
<h1>Golang Gin实践 番外 请入门 Makefile</h1> <p>原文地址:<a href="https://github.com/EDDYCJY/blog/blob/master/golang/gin/2018-08-26-Gin%E5%AE%9E%E8%B7%B5-%E7%95%AA%E5%A4%96-%E8%AF%B7%E5%85%A5
Golang In PingCAP
随着 Golang 在后端领域越来越流行,有越来越多的公司选择 Golang 作为主力开发语言。本次 GopherChina Beijing 2016 大会上,看到 Golang 在各家公司从人工智能到自动运维,从 Web 应用到基础架构都发挥着越来越多的作用。可以说 Golang 在这几年间,获得了长足的进步。 PingCAP 是一家由几名 Go
Golang 内存管理源码剖析
Golang 的内存管理基于 tcmalloc,可以说起点挺高的。但是 Golang 在实现的时候还做了很多优化,我们下面通过源码来看一下 Golang 的内存管理实现。下面的源码分析基于 go1.8rc3。 1.tcmalloc 介绍 ------------- 关于 tcmalloc 可以参考这篇文章 [tcmalloc 介绍](https://ww
Golang 开发环境搭建
Golang 是 Google 发布的开发语言,Go 编译的程序速度可以媲美 C/C++。 安装 -- sudo apt-get install golang sudo apt-get install golang-go.tools 使用 -- * 编译运行程序 go run main.go * 查看命令文
Golang 文章正文抽取(readability)
readability for golang Golang版本是根据[readabiliity for node.js](https://www.oschina.net/action/GoToLink?url=https%3A%2F%2Fgithub.com%2Fluin%2Freadability)以及[readability for python](h
Golang依赖管理工具:glide从入门到精通使用
介绍 -- 不论是开发Java还是你正在学习的Golang,都会遇到**依赖管理**问题。Java有牛逼轰轰的Maven和Gradle。 Golang亦有godep、govendor、glide、gvt、gopack等等,本文主要给大家介绍[gilde](https://www.oschina.net/action/GoToLink?url=https%3
Golang学习系列第一天:安装golang
0.  ssh连接linux(我用的centos7),略 ============================ 1.  golang下载 ============ 由于Golang官网[https://golang.org/](https://www.oschina.net/action/GoToLink?url=https%3A%2F%2Fgola
Golang面试题解析
最近在很多地方看到了[golang的面试题](https://www.oschina.net/action/GoToLink?url=https%3A%2F%2Fzhuanlan.zhihu.com%2Fp%2F26972862),看到了很多人对Golang的面试题心存恐惧,也是为了复习基础,我把解题的过程总结下来。 面试题 --- ### 1\. 写出
Golang(四)正则表达式使用
0\. 前言 ====== * 最近用到了 regexp 包,下面整理下正则表达式相关用法 * 参考 [基础知识 - Golang 中的正则表达式](https://www.oschina.net/action/GoToLink?url=https%3A%2F%2Fwww.cnblogs.com%2Fgolove%2Fp%2F3269099.htm
Goroutine并发调度模型深度解析之手撸一个协程池
[golang](https://www.oschina.net/action/GoToLink?url=http%3A%2F%2Fblog.taohuawu.club%2Ftag%2Fgolang)[goroutine](https://www.oschina.net/action/GoToLink?url=http%3A%2F%2Fblog.taohua
Sentinel
![9.28头图.png](https://ucc.alicdn.com/pic/developer-ecology/af7ab6c27c3c4c3aa5dc2cce3c9e8ab9.png) > \*\*导读:\*\*2020年,Sentinel 推出 Go 原生版本[Sentinel-Golang](https://www.oschina.net/ac