【发布时间】: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