本文介绍了Android的 - 错误使用VideoView的多实例的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想在一个线性布局,显示两个(或更多)的活性videoview

使用videoview本地文件作为数据源的所有工作正常,但通过使用RTSP流视频我有一个媒体播放器错误code像(1,1),通常是第一个视频显示正确,第二场演出的错误。

我尝试这两个流中的一个时刻,他们的作品,所以有没有格式错误。

我读了一些有关媒体播放器的资源释放(link) ,但我需要每一个实时视频显示。

这是code在我的活动:

  {尝试
    videoView =(VideoView)findViewById(R.id.videoView1);
    乌里视频= Uri.parse(urlVideo +1);
    videoView.setVideoURI(视频)
    videoView.start();    videoView2 =(VideoView)findViewById(R.id.videoView2);
    乌里VIDEO2 = Uri.parse(urlVideo +0);
    videoView2.setVideoURI(VIDEO2);
    videoView2.start();
}
赶上(例外五){
    e.printStackTrace();
}

这是logcat的完整的错误:

 十月1日至14日:57:26.627:I / Crayon_Player(148):其中,==的setDataSource(RTSP://192.168.4.125:554/0)
10月1日至14日:57:26.627:V / MediaPlayerService(148):[200] setVideoSurfaceTexture(0x1b808e0)
10月1日至14日:57:26.627:I / Crayon_Player(148):==> setVideoSurfaceTexture(0x1b808e0)
10月1日至14日:57:26.627:I / RTSPEngine(148):@@@ VOLOG信息THD 019EBA08:utility.cpp MakeLog 990 2419010028 DESCRIBE RTSP://192.168.4.125:一分之五百五十四RTSP / 1.010月1日至14日:57:26.627:I / RTSPEngine(148):这个Cseq:110月1日至14日:57:26.627:I / RTSPEngine(148):接受:应用/ SDP10月1日至14日:57:26.627:I / RTSPEngine(148):接受编码:身份10月1日至14日:57:26.627:I / RTSPEngine(148):内容编码:身份10月1日至14日:57:26.627:I / RTSPEngine(148):内容语言:zh-CN10月1日至14日:57:26.627:I / RTSPEngine(148):用户代理:播放/ LG播放器1.0为Android(stagefright替代)10月1日至14日:57:26.627:I / RTSPEngine(148):10月1日至14日:57:26.627:I / RTSPEngine(148):@@@ VOLOG信息THD 019EBA08:utility.cpp MakeLog 990 241901002810月1日至14日:57:26.627:I / Crayon_Player(148):其中,== setVideoSurfaceTexture(0x1b808e0)收益率= 0
10月1日至14日:57:26.627:V / MediaPlayerService(148):[200] setVideoSurfaceTexture(0x18fb118)
10月1日至14日:57:26.627:V / MediaPlayerService(148):[200] setAudioStreamType(3)
10月1日至14日:57:26.627:V / MediaPlayerService(148):[200] prepareAsync
10月1日至14日:57:26.627:I / Crayon_Player(148):==> prepareAsync
10月1日至14日:57:26.627:I / Crayon_Player(148):其中,== prepareAsync收益率= 0
10月1日至14日:57:26.627:I / CrayonGraph-PlayerOMX(148):SetURL] URL = RTSP://192.168.4.125:554/0
10月1日至14日:57:26.627:E / CRTSPSource(148):@@@ VOLOG错误THD 019ECCC8:CRTSPSource.cpp LoadSource 247的RTSP源没有正确关闭!
10月1日至14日:57:26.627:E / voCOMXFileSource(148):@@@ VOLOG错误THD 019ECCC8:voCOMXFileSource.cpp的LoadFile 1010 m_pSource-> LoadSource是失败。 0X80000007
10月1日至14日:57:26.627:W / CrayonGraph-基地(148):的setParameter]可比= OMX.VisualOn.FileSource,paramIndex = 0x100000d中,pdata = 0x1915120,ERET = 0x80001001
10月1日至14日:57:26.627:E / CrayonGraph-PlayerOMX(148):setURI] OMX_IndexParamContentURI失败1
10月1日至14日:57:26.627:E / CrayonGraph-PlayerBuilder(148):setURI失败1
10月1日至14日:57:26.627:E / Crayon_PlayerEngine(148):错误! notifyListener_l MSG [100] EXT1 [1] EXT2 [1]
10月1日至14日:57:26.627:V / MediaPlayerService(148):[200]通知(0x190da70,100,1,1)
10月1日至14日:57:26.627:E / MediaPlayer的(31866):错误(1,1)


解决方案

我还没有看到可以支持VideoView(或meadia播放器,或stagefright,或的OpenMAX)超过4个并发活动实例的设备。如果你的CPU是足够强大,你应该使用一个软件解决方案(ffmpeg的,或GStreamer的)。

I want an activity that show two (or more) videoview in a linear layout.

Using videoview with local files as datasource all works fine, but using video by stream rtsp I have a Mediaplayer error code like (1,1), usually the first video show correctly and second show error.

I try the two stream one at time, and they works, so there aren't format errors.

I read something about resource release of mediaplayer (link) , but I need that each real-time video are shown.

this is code in my Activity :

   try{
    videoView = (VideoView) findViewById(R.id.videoView1);
    Uri video = Uri.parse(urlVideo+"1"); 
    videoView.setVideoURI(video);
    videoView.start();

    videoView2 = (VideoView) findViewById(R.id.videoView2);
    Uri video2 = Uri.parse(urlVideo+"0");
    videoView2.setVideoURI(video2);
    videoView2.start();
}
catch (Exception e) { 
    e.printStackTrace(); 
}

and this is the complete error on logcat :

    01-14 10:57:26.627: I/Crayon_Player(148): <== setDataSource(rtsp://192.168.4.125:554/0)
01-14 10:57:26.627: V/MediaPlayerService(148): [200] setVideoSurfaceTexture(0x1b808e0)
01-14 10:57:26.627: I/Crayon_Player(148): ==> setVideoSurfaceTexture(0x1b808e0)
01-14 10:57:26.627: I/RTSPEngine(148): @@@VOLOG Info THD 019EBA08:    utility.cpp  MakeLog  990    2419010028 DESCRIBE rtsp://192.168.4.125:554/1 RTSP/1.0

01-14 10:57:26.627: I/RTSPEngine(148): CSeq: 1

01-14 10:57:26.627: I/RTSPEngine(148): Accept: application/sdp

01-14 10:57:26.627: I/RTSPEngine(148): Accept-Encoding: identity

01-14 10:57:26.627: I/RTSPEngine(148): Content-Encoding: identity

01-14 10:57:26.627: I/RTSPEngine(148): Content-Language: en-US

01-14 10:57:26.627: I/RTSPEngine(148): User-Agent: Player/LG Player 1.0 for Android(stagefright alternative)

01-14 10:57:26.627: I/RTSPEngine(148): 

01-14 10:57:26.627: I/RTSPEngine(148): @@@VOLOG Info THD 019EBA08:    utility.cpp  MakeLog  990    2419010028 

01-14 10:57:26.627: I/Crayon_Player(148): <== setVideoSurfaceTexture(0x1b808e0) return=0
01-14 10:57:26.627: V/MediaPlayerService(148): [200] setVideoSurfaceTexture(0x18fb118)
01-14 10:57:26.627: V/MediaPlayerService(148): [200] setAudioStreamType(3)
01-14 10:57:26.627: V/MediaPlayerService(148): [200] prepareAsync
01-14 10:57:26.627: I/Crayon_Player(148): ==> prepareAsync
01-14 10:57:26.627: I/Crayon_Player(148): <== prepareAsync return=0
01-14 10:57:26.627: I/CrayonGraph-PlayerOMX(148): [SetURL] url=rtsp://192.168.4.125:554/0
01-14 10:57:26.627: E/CRTSPSource(148): @@@VOLOG Error THD 019ECCC8:   CRTSPSource.cpp  LoadSource  247    The RTSP Source didn't close correctly!
01-14 10:57:26.627: E/voCOMXFileSource(148): @@@VOLOG Error THD 019ECCC8:   voCOMXFileSource.cpp  LoadFile  1010    m_pSource->LoadSource was failed. 0X80000007
01-14 10:57:26.627: W/CrayonGraph-Base(148): [setParameter] comp=OMX.VisualOn.FileSource, paramIndex=0x100000d, pData=0x1915120, eRet = 0x80001001 
01-14 10:57:26.627: E/CrayonGraph-PlayerOMX(148): [setURI] OMX_IndexParamContentURI fail 1
01-14 10:57:26.627: E/CrayonGraph-PlayerBuilder(148): setURI fail 1
01-14 10:57:26.627: E/Crayon_PlayerEngine(148): ERROR!! notifyListener_l msg[100] ext1[1] ext2[1]
01-14 10:57:26.627: V/MediaPlayerService(148): [200] notify (0x190da70, 100, 1, 1)
01-14 10:57:26.627: E/MediaPlayer(31866): error (1, 1)
解决方案

I have not seen a device that could support more than 4 concurrent active instances of VideoView (or meadia player, or stagefright, or OpenMAX). If your CPU is powerful enough, you should use a software solution (ffmpeg, or gstreamer).

这篇关于Android的 - 错误使用VideoView的多实例的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-26 19:24