14

我正在使用 LibVLC 并希望在内存中渲染视频像素,这样我就可以拍摄帧的快照,而无需在窗口中绘制视频(默认情况下)。

如果我理解正确,这可以通过调用 libvlc_video_set_callbacks 和 libvlc_video_set_format_callbacks 来实现。在第一个函数中,我必须指定类型为 libvlc_video_lock_cb的回调,在其中我必须初始化三个平面中的一个,据我所知,这三个平面是绘制像素的缓冲区。

我的问题是每个像素使用的字节数以及必须初始化的平面数取决于视频色度。虽然我知道如何获得这个色度的四字母标识符,但我不知道如何获得它的这些特殊属性;如果没有这些信息,我不知道我必须分配的缓冲区大小,以及有多少个平面。

有谁知道如何做到这一点?还是我理解错误?

4

2 回答 2

6

正如您所指出的,每个像素的字节数和平面数取决于编解码器。因此,一种选择是在代码中硬编码当前选项(GREY、I240、RV16、RV15、RV24、RV32、YUY2、YUYV、UYVY、I41N、I422、I420、I411、I410、MJPG)的值。

有关详细的代码/格式信息,请访问 http://www.fourcc.org/

您还可以查看 VLC 项目中的vlc_fourcc.hfourcc.c。具体看功能vlc_fourcc_GetChromaDescription

于 2012-10-18T13:05:50.927 回答
0

setup回调(libvlc_video_set_format_callbacks()类型的第二个参数libvlc_video_format_cb)允许您读取视频格式,并且可以选择更改视频格式。

如果此回调获得了它不理解的格式,它可以将其更改为它知道的格式。

于 2012-10-17T21:16:38.840 回答