在那last question中,我意识到我不能同时使用SDL
和SDL2
。我绝对选择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_Overlay
。 alternative方法适合播放不捕捉视频的视频。我应该如何修改此代码以替换SDL_Overlay
并使其适合SDL2
?