Ubuntu 下使用go语言调用ffmpeg推流

 Ubuntu 下使用go语言调用ffmpeg推流Ubuntu 下使用go语言调用ffmpeg推流

  • win10 安装 Ubuntu

      Windows Subsystem for Linux(WSL)适用于 Linux 的 Windows 子系统是微软在Windows 10上提供的一项供用户快速运行Linux命令和工具的功能。相比前一代的WSL,WSL 2提供更全的兼容性,全内核的兼容。要求系统版本必须在Windows 10 2004 版本19041之上。

      开始菜单中找Microsoft Store商店,搜索ubuntu并安装完成Ubuntu.

      在window环境下安装ubuntu,如果不是特别清楚可以回看:《在windows 上构建你的linux 开发环》2021年5月25日,文龙老师的培训。

Windows下的ubuntu是直接挂载了windows的硬盘的,路径是/mnt

  • Go环境安装   
  1. Go压缩包    进入/mnt/? 解压go1.14.linux-amd64.tar.gz(文件在压缩包内)

        tar -C /usr/local -zxvf go1.10.3.linux-amd64.tar.gz

  1. 调整路径变量

      在/etc/profile 或 $HOME/.profile

        sudo vim /etc/profile

// 在文件后面添加下面两行

export GOROOT=/usr/local/go

export PATH=$PATH:$GOROOT/bin

// 按esc 输入:wq退出

// 在命令行执行

source /etc/profile

      执行 go version 。如果现实版本号,则Go环境安装成功

       

  • GoLand安装

1、Goland压缩包    进入/mnt/? 解压goland-2020.1.tar.gz(文件在压缩包内)

         tar -C /usr/local -zxvf goland-2020.1.tar.gz

2、启动goland

cd /usr/local/GoLand-2019.3/bin

 sudo ./goland.sh 

  1. 破解Goland  jetbrains-agent-latest.zip(文件在压缩包内)
  2. Ubuntu 下使用go语言调用ffmpeg推流_第1张图片

 

注册成功

Ubuntu 下使用go语言调用ffmpeg推流_第2张图片   

 

  • GCC环境安装

sudo apt update

 sudo apt install build-essential

 gcc --version

  • SVN 安装

Ubuntu 下使用go语言调用ffmpeg推流_第3张图片

 

  • Cgo 调用FFmpeg 库
  • go语言初期学习资料

推荐书籍:入门《695767 Go语言入门经典_张海燕译》

深入:go语言高级编程.pdf

  • 理解CGO

1、go的创始人

该项目的三位领导者均是著名的 IT 工程师:

罗伯特·格瑞史莫(Robert Griesemer)
罗勃特·派克(Rob Pike)
昵称为罗勃·派克(Rob Pike),来自加拿大的程序员,曾经加入贝尔实验室,为 UNIX小组的成员。曾经参与过贝尔实验室九号计划、Inferno,与编程语言 Limbo的开发。他与肯·汤普逊共同开发了UTF-8。

肯尼斯·汤普逊(Ken Thompson)
肯·汤普逊(英语:Ken Thompson),是美国计算机科学学者和工程师。黑客文化圈子通常称他为“ken”[1]。在贝尔实验室工作期间,汤普逊设计和实现了Unix操作系统。他创造了B语言——C语言的前身,而且他是Plan 9操作系统的创造者和开发者之一。2006年,汤普逊进入Google公司工作,与他人共同设计了Go语言。他与丹尼斯·里奇同为1983年图灵奖得主。
此外,肯·汤普逊还参与过正则表达式和UTF-8编码的设计,改进了文本编辑器QED,创造了ed编辑器。他曾制造过专门用于下国际象棋的电脑“Belle”,并创建了残局数据库。
罗勃特·派克61岁 肯尼斯·汤普逊74岁年龄和性别和软件好像也没有直接关系哈

有几句话我觉得还不错

  1. go是面向函数的编程。有句话我觉得还不错,不管面向对象还是面向函数,他是一个思想,为解决问题
  2. Go语法无限的接近当下最流行的语言,比如自带垃圾回收,数组切片,便捷包引用导入.他最大的优势是他的设计者也是C语言的贡献者,所以C是他最大的后盾。
  1. go语言和C/C++的区别

       c语言更加偏重于系统底层,而go语言更加偏重于系统应用。虽然二者都是高性能语言,但是go语言更加适合网络通信开发。比如两台电脑传输数据,或者服务器接收大量的远程数据。

   

  1. go语言和C++的密切联系

Go 作为当下最火的开发语言之一,它的优势不必多说。Go 对于高并发的支持,使得它可以很方便的作为独立模块嵌入业务系统。Golang 自带的 CGO 可以支持与 C 语言接口的互通。      CGO 作为 Go 语言和 C 语言之间的桥梁,其使用场景可以分为两种:Go 调用 C 程序 和 C 调用 Go 程序。

从我目前理解CGO,其实要理解复习喜欢C语言的基础和知识点,可以简单理解GO给你一个通道,让你运用C语言。

真实的CGO程序一般都比较复杂。不过我们可以由浅入深,一个最简的CGO程序

要使用CGO特性,需要安装C/C++构建工具链,在macOS和Linux下是要安装GCC,在windows下是需 要安装MinGW工具

package main

//#include

import "C"

func main() {

C.puts(C.CString("Hello, World\n"))

}

以上代码,我们通过 import "C" 语句启用CGO特性,同时包含C语言的 头文件。然后通过 CGO包的 C.CString 函数将Go语言字符串转为C语言字符串,最后调用CGO包的 C.puts 函数向标准输出窗口打印转换后的C字符串。 

数组是值类型、切片是引用类型

numbers := [...]string{"a","b","c","d","e","f","g","h"}
   s2 := numbers[2:5]
s4:=s2[0:3]
s4[0] = "x"
fmt.Println(numbers, s2,s4)

[a b x d e f g h] [x d e] [x d e]

/*这里一个小细节*/

没有释放使用 C.CString 创建的C语言字符串会导致内存泄漏。但是对于这个小程序来说,这样是没 有问题的,因为程序退出后操作系统会自动回收程序的所有资源。

你可能感兴趣的:(go)