Golang-FFmpeg-GoAV:将视频拉流解码为YUVJ420P格式
最编程
2024-01-08 10:27:14
...
前言
goav是在ffmpeg基础上封装了一层,我们算是站在别人的肩膀上,尽管goav还有很多不足的地方,这个暂且不谈。当然这次写的这篇算是回归底层实现了,用别人封装好的可能两三行就可以搞定的东西。
一、说明以及依赖
go get github.com/giorgisio/goav.git
二、实现功能
1、ffmpeg拉流(视频源可以是文件和流媒体(rtsp/rtmp/hls/flv等等))
2、将视频帧解码为yuvj420p图像数据
三、实现代码
package main
import (
"fmt"
"github.com/giorgisio/goav/avcodec"
"github.com/giorgisio/goav/avformat"
"github.com/giorgisio/goav/avutil"
"log"
"math/rand"
"time"
"unsafe"
)
func main() {
filename := "http://ivi.bupt.edu.cn/hls/cctv1hd.m3u8"
// 加载ffmpeg的网络库
avformat.AvRegisterAll()
// 加载ffmpeg的编解码库
avcodec.AvcodecRegisterAll()
// 打开视频流
formatCtx := openInput(filename)
if formatCtx == nil {
return
}
// 检索流信息
success := findStreamInfo(formatCtx);
if !success {