并行使用 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
,在这种情况下,实时视频会获取音频,而设备上的视频不会获取音频。如果打开setAudioSource
和setAudioEncoder
,我的直播视频将没有录音,而在设备上有音频。
我尝试了 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并行流知识