我编写了一个小应用程序,只显示来自rtsp-stream的视频数据(使用MediaPlayer-class和SurfaceView-class)。使用vlc 2.0.0创建Rtsp-stream。
工作正常,但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):已达到输出EOSE / OMX-VDEC-720P(138):Rxd OMX_COMPONENT_GENERATE_EOS_DONE
D / XXX(10485):onCompletion()调用
// ...
似乎(解码器?)缓冲区已满,因此播放结束。 我可以处理这些缓冲区,以便可以接收新数据吗?
这次我通过等待onCompletion-Event来重置/重启来解决这个问题 MediaPlayer,但这不是真正的方法,对吗?
有没有人对此有解决方案/想法?
Greetzn + thanx提前......
答案 0 :(得分:1)
可能正在达到会话超时。您可以检查PLAY
请求中发回的标头,看看是否有timeout=
指令给您!
如果你需要每隔这么多秒发出GET_PARAMETER
请求,那么服务器就会终止你的会话。
如果您还需要其他信息,请告诉我们!
答案 1 :(得分:0)
因为我还不能发表评论。您是否尝试将其放在asyncTask上?或者在你的缓冲完成后它会播放出来吗?。
您还可以在AsyncTask上执行操作,您可以更改OnProgressUpdate(),然后可以在到达某个缓冲区时播放,也可以在完成后完全播放。