我一直在通过MediaCodec将视频直接渲染到我的UI中从SurfaceView获取的Surface.这非常有效.
我现在正在尝试使用MediaCodec作为编码器.作为测试,我想渲染到Surface(如上所述)并通过配置为编码器的MediaCodec的不同实例进行环回.
我看到编码器的createInputSurface()方法.我想我希望编码器创建这个表面然后让解码器MediaCodec使用它作为要绘制的表面.首先,这可能吗?
其次,我不确定如何从编码器创建的Surface创建SurfaceView.我只从SurfaceView中提取了一个Surface,而我从文档中看不到如何反向执行此操作.
我正在编码 H264 并使用 RTP 从我的 Android 设备作为实时流发送到 Wowza 服务器。编码器的输出在设备上看起来很好。然而,在流式传输到 Wowza 服务器并通过 RTMP 以实时流形式查看输出视频后,我在视频中出现显着移动/变化的部分中发现了相当多的伪影/像素化。我只能猜测这与视频帧的时间有关,但我没有一个好的方法来确定这是在我的应用程序的发送端还是在 Wowza 端。
Wowza,如果你曾经试图获得他们的支持,那是完全没有用的。
我还遇到了从 Wowza 播放时 RTMP/Flash 播放器冻结的问题。我非常确定这不是带宽问题,因为这种情况发生在 Amazon EC2 服务器以及我的本地 PC 实例(即同一网络)上。我尝试了多个播放器,它们都表现出相同的问题(VLC、JWPlayer、MX Player 等)。我必须假设问题出在 Wowza 服务器或我的编码上。然而,由于某些帧存在像素化问题,我开始怀疑两者是否相关。
我很好奇是否有人在使用 Wowza 或任何其他流服务器时遇到过类似的像素化问题。我尝试使用 RTMPDump 但这不起作用,它永远不会从 Wowza 中提取完整的数据包。