您好,我开发了一个移动应用程序,该应用程序可以让您录制带有回音的卡拉OK视频,因为我使用了 react-native-video < / strong>! 但是在这里我面临一个大问题,一旦开始录制视频并且设置了背景声音(如果我没有耳机),则在后台播放的声音就会随视频一起录制并保存良好但是在录制过程中连接耳机时,保存的视频不包含在背景中播放的声音,而仅包含用耳机的麦克风录制的歌词
因此,在录制视频时,在后台播放的声音仅定向到耳机,而不会被电话的麦克风录制,因此我发现自己卡拉OK 背景还没有卡拉OK的整个想法。为了解决这个问题,我对设置进行了一些研究,以在项目react-native-video的github帐户上考虑到这一点,但没有找到任何东西,因此我在网上看到的其他开发人员n的示例并未解决react-的这一方面。 耳机插入后必须播放声音,然后与录制的视频一起存储
现在这是我的代码部分,它管理着所有正在录制的内容,首先是要开始录制的接口
渲染常数
const { paused, audioDownloading, playing, record, cameraType, challenge, loading, error, saving, focusedScreen } = this.state;
然后是视频
<View style={styles.bottomBar}>
<Video
ref={(ref) => {
this.player = ref;
}}
source={{ uri: challenge.music }}
onLoad={this.onLoad}
onProgress={this.onProgress}
// onEnd={this.onEnd}
paused={paused}
volume={challenge.type === 'DANCE' ? 1 : 0.1}
repeat={false} />
....
....
</TouchableOpacity>
<TouchableOpacity onPress={paused === true ? this._onRecordPress : null}>
<Image source={require('../static/images/record.png')} />
</TouchableOpacity>
<TouchableOpacity onPress={!!record ? this._onPlayPress : null} style={{width: 64, height: 64}}>
<Image source={require('../static/images/icons/ic_play-circle.png')} style={{margin: 10}} />
</TouchableOpacity>
</View>
</View>
</View>
您会注意到,我已经通过引用要在后台播放的音频的uri(challenge_music)定义了source属性。
然后通过录制事件来管理开始录制的按钮 由以下代码行定义
_onRecordPress = async () => {
this.setState({ recording: true, paused: false });
const { uri, codec = "mp4" } = await this.camera.recordAsync({maxDuration: this.state.duration});
this.setState({record: uri});
};
以及由以下事件定义的记录停止:
_onStopPress = async () => {
this.camera.stopRecording();
this.setState({ paused: true, currentTime: 0 });
this.player.seek(0);
};
现在,当我们只使用移动电话的麦克风并在录制视频后又在耳机连接好之后在后台播放声音时,录音就可以正确完成,录音带来更多的收获。 因此,我该如何进行操作,以使带有耳机的视频记录不再包含卡拉OK,而是现在在后台播放的声音! :-)