1

我写了一个小应用程序,它只显示来自 rtsp-stream 的视频数据(使用 MediaPlayer-class 和 SurfaceView-class)。Rtsp-stream 是使用 vlc 2.0.0 创建的。

它工作正常,但在 1 分钟播放结束后。

在 logcat 中,我发现了以下几行:

// ...

E/Overlay (138): Overlay 没有准备好排队缓冲区

I/MyHandler(138):在轨道索引 0 上收到 BYE

E/OMX-VDEC-720P(138):Rxd i/p EOS,通知驱动程序已到达 EOS

E/OMX-VDEC-720P(138):已达到输出 EOS

E/OMX-VDEC-720P(138):Rxd OMX_COMPONENT_GENERATE_EOS_DONE

D/XXX (10485): onCompletion() 调用

// ...

似乎(解码器?)缓冲区已满,因此播放结束。我可以处理这些缓冲区,以便接收新数据吗?

这次我通过等待 onCompletion-Event 重置/重新启动 MediaPlayer 解决了这个问题,但这并不是真正的方法,对吧?

有没有人对此有解决方案/想法?

Greetzn + thanx 提前...

4

2 回答 2

1

可能正在达到会话超时。您可以检查请求中发回的标头PLAY,看看是否有timeout=给您的指令!

如果有你必须GET_PARAMETER每隔这么多秒发出一个请求,如该标头的值所示,否则服务器将终止你的会话。

另请参阅是否有这样的 RTSP Ping?

如果您还需要什么,请告诉我!

于 2012-12-12T15:15:15.387 回答
0

因为我还不能评论。您是否尝试将其放在 asyncTask 上?还是在完成缓冲后它会播放?

您还可以在 AsyncTask 上做,您可以更改 OnProgressUpdate(),然后可以在到达某个缓冲区时播放或在完成时完全播放。

于 2012-06-25T19:02:23.060 回答