简体   繁体   English

E/MediaRecorder:启动失败:-38

[英]E/MediaRecorder: start failed: -38

Here is my code.这是我的代码。 Basically I am trying to stream android screen to vlc media player using rtsp somehow I have managed to stream video perfectly but audio is not playing.基本上,我正在尝试使用 rtsp 将 stream android 屏幕显示为 vlc 媒体播放器,但我设法完美地播放了 stream 视频,但没有播放音频。 I am using AMRNB encoding method to send stream on Local Socket.我正在使用 AMRNB 编码方法在本地套接字上发送 stream。 I can see that there is audio track by using log also it is being send but don't know why it is not getting played.我可以通过使用日志看到有音轨,它也在发送,但不知道为什么它没有被播放。

        mMediaRecorder.setAudioSource (mAudioSource);
        mMediaRecorder.setOutputFormat (mOutputFormat);
        mMediaRecorder.setAudioEncoder (mAudioEncoder);
        mMediaRecorder.setAudioChannels (1);
        mMediaRecorder.setAudioSamplingRate (mQuality.samplingRate);
        mMediaRecorder.setAudioEncodingBitRate (mQuality.bitRate);
        mMediaRecorder.setOutputFile (mSender.getFileDescriptor());
        mMediaRecorder.prepare();
        mMediaRecorder.start();
        Log.d(" audio ", mMediaRecorder.toString ());

        try {
            // mReceiver.getInputStream contains the data from the camera
            // the mPacketizer encapsulates this stream in an RTP stream and send it over the network
            mPacketizer.setDestination (mDestination, mRtpPort, mRtcpPort);
            mPacketizer.setInputStream (mReceiver.getInputStream ( ));
            mPacketizer.start ( );
            Log.d(" packetizer ", mPacketizer.toString ());
            mStreaming = true;
        } catch (IOException e) {
            stop ( );
            throw new IOException ("Something happened with the local sockets :/ Start failed !");
        }

Here is my Logcat这是我的 Logcat

E/RtspServer: SETUP 192.168.1.86:25670/trackID=0
D/dest: 192.168.1.89
V/MediaStream: Requested audio with 32kbps at 8kHz
D/MediaRecorder: Constructor MediaRecorder
I/MediaRecorderJNI: setup
I/MediaRecorderJNI: setAudioSource(1)
I/MediaRecorderJNI: setAudioEncoder(2)
    setParameter()
I/MediaRecorderJNI: setParameter()
I/MediaRecorderJNI: setParameter()
I/MediaRecorderJNI: setOutputFile
    prepare
I/MediaRecorderJNI: start
E/MediaRecorder: start failed: -38
D/RtspServer: RTSP/1.0 200 OK
    Server: MajorKernelPanic RTSP Server
    Cseq: 4
    Content-Length: 0
    Transport: RTP/AVP/UDP;unicast;destination=192.168.1.89;client_port=5010-5011;server_port=33462-44704;ssrc=f6dc348c;mode=play
    Session: 1185d20035702ca
    Cache-Control: no-cache
E/RtspServer: SETUP 192.168.1.86:25670/trackID=1
D/dest: 192.168.1.89
D/H264Packetizer: H264 packetizer started !
    header is  0 0 0 1 33  ts = 76657985454000 nalu len = 24
D/RtspServer: RTSP/1.0 200 OK
    Server: MajorKernelPanic RTSP Server
    Cseq: 5
    Content-Length: 0
    Transport: RTP/AVP/UDP;unicast;destination=192.168.1.89;client_port=36882-36883;server_port=51731-41042;ssrc=e0e9342d;mode=play
    Session: 1185d20035702ca
    Cache-Control: no-cache
D/H264Packetizer: header is  -128 0 0 0 1  ts = 76658035880000 nalu len = 1333
D/CompatibilityChangeReporter: Compat change id reported: 147798919; UID 10362; state: ENABLED

While debugging I foundout that I am using media recorder for audio and medicodecs for video that is why my media recorder was null and it couldn't start mediarecorder.在调试时,我发现我正在使用媒体记录器进行音频和医疗编解码器用于视频,这就是为什么我的媒体记录器为空并且无法启动 mediarecorder。

but still audio is not working但音频仍然无法正常工作

Updated更新

While working on this, I found out that I was testing my project on android Lolipop and it is not possible to read and write directly on LocalSockets.在进行此工作时,我发现我正在 android Lolipop 上测试我的项目,并且无法直接在 LocalSockets 上读写。 You have to use ParcelFileDiscriptor to stream audio.您必须使用ParcelFileDiscriptor来流式传输音频。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM