为了账号安全,请及时绑定邮箱和手机立即绑定

如何将 C.AVFrame* 转换为图像。图像?

如何将 C.AVFrame* 转换为图像。图像?

Go
HUH函数 2022-08-01 15:26:53
我有 C.AVFrame* 原始图像。从C.AVFrame*转换为jpg后,我正在处理jpg解码后的Go图像。有没有办法直接从C.AVFrame*创建Go图像?
查看完整描述

1 回答

?
慕田峪7331174

TA贡献1828条经验 获得超13个赞

这是一个很好的起点:https://github.com/nareix/joy4/blob/05a4ffbb53695aaacf9a2e2624472686280ab6dc/cgo/ffmpeg/video.go#L64-L88


一旦你拥有了你所能做到的:*C.AVFrameframe


func fromCPtr(buf unsafe.Pointer, size int) (ret []uint8) {

    hdr := (*reflect.SliceHeader)((unsafe.Pointer(&ret)))

    hdr.Cap = size

    hdr.Len = size

    hdr.Data = uintptr(buf)

    return

}



w := int(frame.width)

h := int(frame.height)

ys := int(frame.linesize[0])

cs := int(frame.linesize[1])


img = image.YCbCr{

    Y: fromCPtr(unsafe.Pointer(frame.data[0]), ys*h),

    Cb: fromCPtr(unsafe.Pointer(frame.data[1]), cs*h/2),

    Cr: fromCPtr(unsafe.Pointer(frame.data[2]), cs*h/2),

    YStride: ys,

    CStride: cs,

    SubsampleRatio: image.YCbCrSubsampleRatio420,

    Rect: image.Rect(0, 0, w, h),

}

在 哪个实现中填充映像image.YCbCrimage.Image


查看完整回答
反对 回复 2022-08-01
  • 1 回答
  • 0 关注
  • 170 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信