【发布时间】:2014-02-26 16:14:01
【问题描述】:
我正在尝试在 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 sense xe、三星 Galaxy Grand、索尼 xperia S 上,有很多闪烁和失真。当我尝试降低上述两个功能的分辨率(即创建纹理和创建窗口(HTC sense xe 中为 640*360,三星 Galaxy Grand 中为 800*480)时,应用程序运行顺畅。现在我有两个问题
- 为什么除了三星 Galaxy s3 以外的手机(在上述所有手机中)无法传输更高分辨率 (1280*720) 的视频?
- 在所有三星 Galaxy s3 手机上,我都可以看到微红色的覆盖层。有谁知道这个红色覆盖的原因是什么?
【问题讨论】:
-
Re 2,见bugzilla.libsdl.org/show_bug.cgi?id=2291 这是一个已知的“错误”,那里列出了一种解决方法。此外,适用于 Android 的 FWIW、SDL2 会忽略您请求的任何窗口大小并使用显示器的原始分辨率。