AudioFlinger 服务器停止运行。播放 RTSP 流不会仅在 Lollipop 设备上启动。

AudioFlinger server died. Play RTSP stream won't start on Lollipop device only.

我正在测试 libstreaming library。我的应用程序描述:一台设备通过 RTSP 将视频从摄像头流式传输到另一台设备。在 KitKat 设备上一切正常,但我的 Huawei p8 lite (Lollipop) 无法 运行 流,因为:

W/AudioSystem: AudioFlinger server died!

W/IMediaDeathNotifier: media server died

E/MediaPlayer: error (100, 0)

E/MediaPlayer: Error (100,0)

我的流服务器端:

        // Configures the SessionBuilder
        SessionBuilder.getInstance()
                .setSurfaceView(surfaceView)
                .setPreviewOrientation(90)
                .setContext(getApplicationContext())
                .setAudioEncoder(SessionBuilder.AUDIO_NONE)
                .setAudioQuality(new AudioQuality(16000, 32000))
                .setVideoEncoder(SessionBuilder.VIDEO_H264)
                .setVideoQuality(new VideoQuality(320,240,20,500000));

        // Starts the RTSP server
        this.startService(new Intent(this,RtspServer.class));

播放流端:

private void play() {
        if(mediaPlayer == null) {
            mediaPlayer = new MediaPlayer();
        }
        setErrorListener();
        mediaPlayer.setDisplay(surfaceHolder);
        mediaPlayer.setOnPreparedListener(this);

        try {
            //RTSP SERVER URI
            String videoUri = "rtsp://192.168.1.1:8086?/";

            mediaPlayer.setDataSource(this, Uri.parse(videoUri));
            mediaPlayer.prepareAsync();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

当 lollipop 设备正在播放时,kitkat 设备播放流时没有任何问题。为什么播放流在这个特定设备上不起作用?

解决了

出于某种原因 url 使用 ( "?/" ) 创建的在 Lollipop 上不起作用:

String videoUri = "rtsp://192.168.1.1:8086?/";

然后我在 libstreaming 中编辑方法 Parse();。我使用 url.

删除了关于参数化会话的整个部分

然后我将 videoUri 更改为不带 (?):

String videoUri ="rtsp://192.168.1.1:8086/";