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环境安装
- Go压缩包 进入/mnt/? 解压go1.14.linux-amd64.tar.gz(文件在压缩包内)
tar -C /usr/local -zxvf go1.10.3.linux-amd64.tar.gz
- 调整路径变量
在/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
- 破解Goland jetbrains-agent-latest.zip(文件在压缩包内)
注册成功
- GCC环境安装
sudo apt update
sudo apt install build-essential
gcc --version
- SVN 安装
- 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岁,年龄和性别和软件好像也没有直接关系哈。
有几句话我觉得还不错
- go是面向函数的编程。有句话我觉得还不错,不管面向对象还是面向函数,他是一个思想,为解决问题
- Go语法无限的接近当下最流行的语言,比如自带垃圾回收,数组切片,便捷包引用导入.他最大的优势是他的设计者也是C语言的贡献者,所以C是他最大的后盾。
- go语言和C/C++的区别
c语言更加偏重于系统底层,而go语言更加偏重于系统应用。虽然二者都是高性能语言,但是go语言更加适合网络通信开发。比如两台电脑传输数据,或者服务器接收大量的远程数据。
- 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 <stdio.h>
import "C"
func main() {
C.puts(C.CString("Hello, World\n"))
}
以上代码,我们通过 import "C" 语句启用CGO特性,同时包含C语言的 <stdio.h> 头文件。然后通过 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语言字符串会导致内存泄漏。但是对于这个小程序来说,这样是没 有问题的,因为程序退出后操作系统会自动回收程序的所有资源。