opengl - 创建视频 com 渲染的 OpenGL 帧

标签 opengl video ffmpeg render libavcodec

我正在寻找一种方法,从我用 OpenGL 渲染并使用 glGetTexImage 函数作为 int 数组传输到 ram 的一行帧创建视频。是否可以直接在 ram(约 10 秒视频)中实现这一点,还是我必须将每一帧保存到硬盘并随后对视频进行编码?

我找到了这个样本 http://cekirdek.pardus.org.tr/~ismail/ffmpeg-docs/api-example_8c-source.html在另一个 SO 问题中,但这仍然是最好的方法吗?

最佳答案

今天我得到了使用这个例子的提示http://git.videolan.org/?p=ffmpeg.git;a=blob;f=doc/examples/decoding_encoding.c;h=cb63294b142f007cf78436c5d81c08a49f3124be;hb=HEAD看看如何实现 h264。当你想对opengl渲染的帧进行编码时的问题是它们是RGB(A)并且大多数编解码器都需要YUV。对于转换,您可以使用 swscale (ffmpeg) - 可以在此处找到如何使用它的示例 http://web.me.com/dhoerl/Home/Tech_Blog/Entries/2009/1/22_Revised_avcodec_sample.c.html

正如 ananthonline 所说,帧的直接编码非常占用 cpu,但您也可以使用 ffmpeg 将帧编写为支持 rgb24 像素格式的 rawvideo 格式,并使用 ffmpeg 的 cmd 命令将其离线转换。

关于opengl - 创建视频 com 渲染的 OpenGL 帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10434398/

相关文章:

javascript - 跟踪 HTML5 视频隐藏式字幕可见性状态

c# - 在 C#.NET 项目中使用 (ffmpeg) 可执行文件

visual-c++ - ffmpeg 的“avcodec_decode_video”不起作用

opengl - OpenGL 中的立方体映射

java - 我如何在opengl中画一个半圆

c++ - Opengl 矩形不会渲染

loops - ffmpeg 复杂过滤器 pip 循环不起作用

c++ - 是否可以在着色器类中使用 "Key"设计模式?

flash - 如何制作黑白flash.media.Video?

image - ffmpeg 在不同时间点在视频中嵌入多个图像