【问题标题】:Render a video from ffmpeg frames using OpenGL使用 OpenGL 从 ffmpeg 帧渲染视频
【发布时间】:2016-12-09 22:46:54
【问题描述】:

我想知道如何将 ffmpeg 计算的原始 RGB 帧中的视频渲染到 Android 中的 OpenGL 纹理。

我的应用是一个 Xamarin.Android 项目,我正在使用一个 ffmpeg C# 包装器,其工作方式如下:

while (ffmpeg.av_read_frame(pFormatContext, pPacket) >= 0)
{
    if (pPacket->stream_index == pStream->index)
    {
        if (ffmpeg.avcodec_send_packet(pCodecContext, pPacket) < 0)
        {
            ffmpeg.av_packet_unref(pPacket);
            ffmpeg.av_frame_unref(pDecodedFrame);
            continue;
        }

        if (ffmpeg.avcodec_receive_frame(pCodecContext, pDecodedFrame) < 0)
        {
            ffmpeg.av_frame_unref(pDecodedFrame);
            continue;
        }

        ffmpeg.av_packet_unref(pPacket);
        var src = &pDecodedFrame->data0;
        var dst = &pConvertedFrame->data0;
        var srcStride = pDecodedFrame->linesize;
        var dstStride = pConvertedFrame->linesize;
        ffmpeg.sws_scale(pConvertContext, src, srcStride, 0, height, dst, dstStride);

        var convertedFrameAddress = pConvertedFrame->data0;

        var imageBufferPtr = new IntPtr(convertedFrameAddress);
        ffmpeg.av_frame_unref(pDecodedFrame);
    }
}

如何将图像从 imageBufferPtr 变量渲染到 OpenGL 纹理?

【问题讨论】:

    标签: c# android video opengl-es ffmpeg


    【解决方案1】:

    如何将 imageBufferPtr 变量中的图像渲染为 OpenGL 纹理?

    将其作为data 参数传递给glTex{Sub}Image2D

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-01-06
      • 1970-01-01
      • 2012-05-13
      • 1970-01-01
      • 2020-11-20
      • 2019-01-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多