欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

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 {