我正在尝试在Android手机上通过RTSP协议流式传输视频。我创建了一个应用程序,该应用程序通过RTSP协议接收数据包,使用FFMPEG进行解码,并使用SDL 2.0将其呈现到窗口中。在该应用程序中,创建SDL窗口和SDL纹理如下:
screen = SDL_CreateWindow ("Test ffmpeg",SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, 1280, 720, SDL_WINDOW_SHOWN|SDL_WINDOW_FULLSCREEN );
bmp = SDL_CreateTexture (renderer, SDL_PIXELFORMAT_IYUV, SDL_TEXTUREACCESS_STREAMING, 1280, 720);
这个应用在三星 Galaxy S3 上运行流畅(没有任何闪烁或失真),但在 HTC Sensation XE、三星 Galaxy Grand 和 Sony Xperia S 上,会出现很多闪烁和失真。当我尝试在上述两个功能中降低分辨率(即创建纹理和创建窗口,HTC Sensation XE 为 640*360,三星 Galaxy Grand 为 800*480),应用程序就可以流畅运行。现在我有两个问题:
- 为什么除了三星 Galaxy S3(以上提到的所有手机之外)其他手机无法流畅播放更高分辨率的视频(1280*720)?
- 在所有三星 Galaxy S3 手机上,我都能看到一层红色叠加。有人知道这种红色叠加的原因吗?