您好,我已经成功录制了一个 Agora 音频通话,其中一个人以广播角色发言,并且在通话过程中混入了多个音频文件。
在我们升级到 flutter 2 和相关的升级包之前,所有音频都被记录下来。
现在只录制广播员的声音,没有混入音频。
广播公司和观众都可以毫无问题地听到通话中的混合音频。
代码(Flutter)类似于:
使用默认设置将音频混入有效的 RTC 会话中
final playing = await session.playAudioFile(path, (){
state = MessagePlayerState.STOPPED;
if (!disposing) {
whenFinished();
}
});
录音选项如下(我的UID是硬编码的字符串,与任何参与者的UID都不一样)
http.Response response = await http.post(
Uri.https(AGORA_REST_URL, '$AGORA_REST_API_VERSION/$appId/cloud_recording/resourceid/$resourceId/mode/mix/start'),
headers: <String, String>{
HttpHeaders.authorizationHeader: 'Basic $basicAuth',
HttpHeaders.contentTypeHeader: 'application/json; charset=UTF-8',
},
body: jsonEncode(<String, dynamic>{
'cname': channelName,
'uid': uid,
'clientRequest': {
'recordingConfig':{
'channelType':0,
'streamTypes':2, // TODO: Should be a streamTypes of 0 (audio only), but get failures.
'audioProfile':1,
'videoStreamType':0,
'maxIdleTime':120,
'transcodingConfig':{
'width':360,
'height':640,
'fps':30,
'bitrate':600,
'maxResolutionUid':'1',
'mixedVideoLayout':1
},
'recordingFileConfig':{
'avFileType': ['hls','mp4']
}
},
'storageConfig':{
'vendor':1,
'region':3,
'bucket':AWS_RECORDING_BUCKET, // TODO: Env Var
'accessKey':AWS_BUCKET_ACCESS_KEY,
'secretKey':AWS_BUCKET_SECRET_KEY,
}
},
}),
);
m3u8 和 ts 文件存在于 S3 存储桶中。
在 S3 中调整元数据标签会导致文件在 Safari 中正常播放,但听不到混合音频。
使用 ffmpeg 将文件转换为 aac 显示此错误
[hls @ 0x7fd6cc808200] Opening '2838cfc6254e9fec2e3088976f39d7ce_bip_20210618014151427.ts' for reading
[mpegts @ 0x7fd6cc00a600] Packet corrupt (stream = 0, dts = 1437390).
size= 480kB time=00:00:30.69 bitrate= 128.1kbits/s speed=1.49e+03x
video:0kB audio:470kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 2.093976%
结果与来自 S3 存储桶的结果相同。
感谢任何帮助或提示。
答案 0 :(得分:0)
这可以关闭/忽略。事实证明,当应用正常使用时,我们有一个边缘条件没有显示,但例如,如果您想要一个非常舞台管理的录音向其他人炫耀它坏了。