【发布时间】:2021-09-02 20:01:04
【问题描述】:
您好,我已经成功录制了一个 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 存储桶中的结果相同。
感谢任何帮助或提示。
【问题讨论】:
标签: agora.io