并行使用 MediaRecorder.AudioSource.CAMCORDER

Posted

技术标签:

【中文标题】并行使用 MediaRecorder.AudioSource.CAMCORDER【英文标题】:Parallel using of MediaRecorder.AudioSource.CAMCORDER 【发布时间】:2018-08-29 11:56:36 【问题描述】:

我有一些奇怪的问题,找不到答案。 我使用 wowza 进行直播。它在AudioRecord recorder = new AudioRecord(this.mAudiosource, ... ) 内部使用,默认情况下mAudioSource = 5(如MediaRecorder.AudioSource.CAMCORDER)效果很好,但同时我需要在设备内存中以更高的视频质量录制带有音频的视频。

对于内部记录,我使用 MediaRecorder。

        mWZCameraView.getCamera().getPlatformDevice().unlock();

        mMediaRecorder = new MediaRecorder();
        mMediaRecorder.setCamera(mWZCameraView.getCamera().getPlatformDevice());

        //mMediaRecorder.setAudioSource(MediaRecorder.AudioSource.CAMCORDER);
        mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.DEFAULT);

        mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);

        //mMediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
        mMediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);

        mMediaRecorder.setVideoEncodingBitRate(15000000);
        mMediaRecorder.setVideoFrameRate(30);
        mMediaRecorder.setVideoSize(1920, 1080);

        try 
            mMediaRecorder.prepare();
         catch (Exception e) 
            // This is thrown if the previous calls are not called with the
            // proper order
            e.printStackTrace();
         finally 
            mMediaRecorder.start();
        

正如您在评论中看到的setAudioSource,在这种情况下,实时视频会获取音频,而设备上的视频不会获取音频。如果打开setAudioSourcesetAudioEncoder,我的直播视频将没有录音,而在设备上有音频。

我尝试了 AudioSource 和 AudioEncoder 的不同组合,但它总是在其中一个视频中录制音频。

如果可以并行使用 CAMCORDER,我找不到答案。

PS。我知道通过字节在另一个文件中记录音频并在之后合并它的选项,但这并不容易,我会尝试以防最后一个选项。

【问题讨论】:

【参考方案1】:

似乎我找到了答案,也许它会对某人有所帮助。此处写答案:https://***.com/a/12935309/7917629,“android 设备基于将打开的音频输入流的数量限制为 1”。

Wowza 在 audioRecorder 中使用来获取音频,当我添加到 mediaRecorder setAudioSource 时,它看起来也尝试使用 audioRecorder。 因此,该选项将回调设置为 wowza,例如 mWZAudioDevice.registerAudioSampleListener(new WZAudioDevice.AudioSampleListener()),以从 audioRecord 中获取 byte[]。

【讨论】:

以上是关于并行使用 MediaRecorder.AudioSource.CAMCORDER的主要内容,如果未能解决你的问题,请参考以下文章

使用不同的参数并行运行相同的函数,并知道哪个并行运行在 python 中结束了

《Java8实战》 - 读书笔记 - Parallel Stream并行流知识

使用并行线程填充集合有啥危险吗?

oracle使用并行踩过的坑

PyTorch-4 nn.DataParallel 数据并行详解

Java:并行编程及同步使用方法