Go + FFmpeg交互丨学习记录

本文介绍如何使用Golang与FFmpeg进行交互,包括安装FFmpeg、本地文件转码、数据库存储、前端交互及利用Nginx或GoFTP进行文件传输。通过Nginx实现反向代理,GoFTP简化文件上传下载,同时讨论两种方法的优缺点和结合使用的方式。
摘要由CSDN通过智能技术生成

1、前言

注:本文未完待续

主要思路:

使用 Golang 和 FFmpeg 交互可以分为以下几个步骤:

  1. 安装 FFmpeg: 首先需要安装 FFmpeg,可以在终端中输入命令来安装。

  2. 创建一个Golang项目,并在其中创建一个接收上传视频文件的接口。

  3. 在接口中接收上传的文件,并使用Golang中的 exec 包来执行 FFmpeg 命令来转码视频。

  4. 转码后的文件可以保存在本地或上传到云存储服务器。

  5. 将视频信息存储到 MySQL 数据库中。

  6. 在Golang中使用GORM或其他ORM库来连接数据库并存储数据。

  7. 在代码中使用 exec.Command 函数来执行 FFmpeg 命令。该函数需要 ffmpeg 的完整路径和命令行参数,并返回一个 *exec.Cmd 类型的对象。

  8. 通过使用 .StdoutPipe() 和 .Start() 方法来执行 FFmpeg 命令并获取命令输出。

  9. 使用 io.Copy() 函数将转码后的视频文件写入本地文件或上传到云存储服务器。

  10. 使用GORM将上传视频文件的信息存储到数据库中。

2、本地IO

以下是一个代码示例,实现从本地来,到本地去的功能,记得改路径和名称!

package main
​
import (
    "fmt"
    "os/exec"
)
​
func main() {
    // 设置视频源文件路径
    inputFile := "input.mp4"
    // 设置转码后文件路径
    outputFile := "output.mp4"
​
    // 设置 ffmpeg 命令行参数
    args := []string{"-i", inputFile, "-c", "copy", outputFile}
​
    // 创建 *exec.Cmd
    cmd := exec.Command("ffmpeg", args...)
​
    // 运行 ffmpeg 命令
    if err := cmd.Run(); err != nil {
        fmt.Println(err)
        return
    }
​
    fmt.Println("转码成功")
}

如果你没有报错的话,可以看到,有输出文件,但是这一来一回有什么用呢?

事实上目的就是让这个转码后的视频文件是可以在线播放的。

3、保存到数据库

光从本地来到本地去总是不长久的,我们要打开数据库的大门;

首先需要准备好数据库和表,这里我们同样使用Navicat来操作,具体操作步骤如下,不需要的可以跳过:

新建连接 -> MySQL -> 连接名随便 -> 密码随便(强烈建议与数据库密码相同否则可能会产生一些错误) -> 双击左侧打开 -> 右键information_schema -> 新建数据库 -> 名称随便 -> 字符集utf8mb4

然后执行如下代码即可,注意修改你的路径、名称、数据库名称等信息

package main
​
import (
    "fmt"
    "os/exec"
​
    "github.com/jinzhu/gorm"
    _ "github.com/jinzhu/gorm/dialects/mysql"
)
​
// 定义 Video struct,用来存储视频信息
type Video struct {
    gorm.Model
    Name string
    Path string
}
​
func main() {
    // 连接数据库
    db, err := gorm.Open("mysql", "root:password@/dat
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值