我正在处理实时流,MediaCodec并且有一个场景,其中MediaFormat流中发生变化(即:正在解码的视频的分辨率发生变化)。鉴于我将解码器附加到 aSurface以在检测到传入流的分辨率变化后立即渲染它,我会在向其提供新的分辨率缓冲区之前重新创建解码器(为其提供正确的 new MediaFormat)。
我遇到了一些奇怪的错误,这些错误没有给我太多关于可能出现问题的信息,即使用MediaCodec.configure新格式和相同的调用时Surface:
android.media.MediaCodec$CodecException: Error 0xffffffea
at android.media.MediaCodec.native_configure(Native Method)
at android.media.MediaCodec.configure(MediaCodec.java:577)
Run Code Online (Sandbox Code Playgroud)
当获取它时,CodecException.getDiagnosticInfo它没有显示任何我可以真正用来理解失败原因的内容:android.media.MediaCodec.error_neg_22
我还在日志中注意到以下内容,并找到了一些相关信息,并且想知道我是否需要对其本身做一些事情Surface(例如将其与解码器的旧实例分离并将其交给新解码器):
07-09 15:00:17.217 E/BufferQueueProducer( 139): [SurfaceView] connect(P): already connected (cur=3 req=3)
07-09 15:00:17.217 E/MediaCodec( 5388): native_window_api_connect returned an error: Invalid argument (-22)
07-09 15:00:17.218 E/MediaCodec( 5388): configure failed with err 0xffffffea, resetting...
Run Code Online (Sandbox Code Playgroud) 我正在尝试修改我的 nginx 配置,以便我可以传递原始客户端的 IP 以及客户端的套接字源 TCP 端口,因为当我将连接传递到上游服务器时,它会将源 IP 和端口识别为唯一的源 IP 和端口由nginx而不是客户端打开,即:
\n\nproxy_set_header X-Real-IP $remote_addr; \xe2\x94\x82\nproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; \xe2\x94\x82\nRun Code Online (Sandbox Code Playgroud)\n\n有 $remote_port 这样的东西吗?我不确定实现这一目标的唯一方法是否是编写自己的模块?
\n