用于屏幕捕获的AVFrame和SDL2

时间:2017-11-20 13:16:41

标签: c ffmpeg sdl-2 yuv libav

在那last question中,我意识到我不能同时使用SDLSDL2。我绝对选择SDL2超过其先例。

我编写了以下代码来捕获屏幕并将其转换为AVFrame以创建视频:

AVFrame *frame = av_frame_alloc();
...

SDL_Surface *screen = SDL_SetVideoMode(width,height, 0, 0);
SDL_Overlay *bmp = SDL_CreateYUVOverlay(width,height, SDL_YV12_OVERLAY, screen);


if(av_frame_make_writable(frame) < 0)
    exit(1);


SDL_LockYUVOverlay(bmp);
memcpy(frame->data[0], bmp->pixels[0], bmp->pitches[0]);
memcpy(frame->data[1], bmp->pixels[1], bmp->pitches[1]);
memcpy(frame->data[2], bmp->pixels[2], bmp->pitches[2]);
SDL_UnlockYUVOverlay(bmp);

问题是SDL2不支持SDL_Overlayalternative方法适合播放不捕捉视频的视频。我应该如何修改此代码以替换SDL_Overlay并使其适合SDL2

0 个答案:

没有答案