Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Xts Acts
提交
73805ffe
X
Xts Acts
项目概览
OpenHarmony
/
Xts Acts
1 年多 前同步成功
通知
9
Star
22
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
X
Xts Acts
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
73805ffe
编写于
8月 01, 2023
作者:
D
durui
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
audio录屏录音用例补充
Signed-off-by:
N
durui
<
durui15@huawei.com
>
上级
20905703
变更
1
显示空白变更内容
内联
并排
Showing
1 changed file
with
436 addition
and
11 deletion
+436
-11
multimedia/audio/audio_js_standard/AudioCapturer/src/main/js/test/AudioPlaybackCapturer.test.js
...ioCapturer/src/main/js/test/AudioPlaybackCapturer.test.js
+436
-11
未找到文件。
multimedia/audio/audio_js_standard/AudioCapturer/src/main/js/test/AudioPlaybackCapturer.test.js
浏览文件 @
73805ffe
...
...
@@ -154,7 +154,7 @@ export default function audioCapturer() {
totalSize
=
totalSize
-
44
;
console
.
info
(
`
${
Tag
}
: File size : Removing header:
${
totalSize
}
`
);
let
rlen
=
0
;
while
(
rlen
<
totalSize
/
4
)
{
while
(
rlen
<
totalSize
)
{
let
buf
=
new
ArrayBuffer
(
bufferSize
);
rlen
+=
ss
.
readSync
(
buf
);
console
.
info
(
`
${
Tag
}
:BufferAudioFramework: bytes read from file:
${
rlen
}
`
);
...
...
@@ -285,6 +285,105 @@ export default function audioCapturer() {
}
done
();
}
async
function
recPromise1
(
AudioCapturerOptions
,
AudioRendererOptions1
,
AudioRendererOptions2
,
pathName
,
done
)
{
let
audioCap
;
try
{
audioCap
=
await
audio
.
createAudioCapturer
(
AudioCapturerOptions
);
console
.
info
(
`
${
Tag
}
AudioFrameworkRecLog: AudioCapturer Created : Success : Stream Type: success`
);
}
catch
(
err
)
{
console
.
info
(
`
${
Tag
}
AudioFrameworkRecLog: AudioCapturer Created : ERROR :
${
JSON
.
stringify
(
err
.
message
)}
`
);
LE24
=
audio
.
AudioSampleFormat
.
SAMPLE_FORMAT_S24LE
;
LE32
=
audio
.
AudioSampleFormat
.
SAMPLE_FORMAT_S32LE
;
let
sampleFormat
=
AudioCapturerOptions
.
streamInfo
.
sampleFormat
;
if
((
sampleFormat
==
LE24
||
sampleFormat
==
LE32
)
&&
err
.
code
==
202
)
{
done
();
return
;
}
expect
(
false
).
assertTrue
();
done
();
return
;
}
try
{
let
audioParamsGet
=
await
audioCap
.
getStreamInfo
();
if
(
audioParamsGet
!=
undefined
&&
audioParamsGet
!=
null
)
{
console
.
info
(
`
${
Tag
}
AudioFrameworkRecLog: Capturer getStreamInfo:
${
JSON
.
stringify
(
audioParamsGet
)}
`
);
}
else
{
console
.
info
(
`
${
Tag
}
AudioFrameworkRecLog: audioParamsGet are incorrect,is :
${
JSON
.
stringify
(
audioParamsGet
)}
`
);
expect
(
false
).
assertTrue
();
}
}
catch
(
err
)
{
console
.
log
(
`
${
Tag
}
AudioFrameworkRecLog: getStreamInfo :ERROR:
${
JSON
.
stringify
(
err
.
message
)}
`
);
expect
(
false
).
assertTrue
();
}
try
{
let
audioParamsGet
=
await
audioCap
.
getCapturerInfo
();
if
(
audioParamsGet
!=
undefined
)
{
console
.
info
(
`
${
Tag
}
AudioFrameworkRecLog: Capturer CapturerInfo:
${
JSON
.
stringify
(
audioParamsGet
)}
`
);
}
else
{
console
.
info
(
`
${
Tag
}
AudioFrameworkRecLog: audioParamsGet are incorrect , is :
${
JSON
.
stringify
(
audioParamsGet
)}
`
);
expect
(
false
).
assertTrue
();
}
}
catch
(
err
)
{
console
.
log
(
`
${
Tag
}
AudioFrameworkRecLog: CapturerInfo :ERROR:
${
JSON
.
stringify
(
err
.
message
)}
`
);
expect
(
false
).
assertTrue
();
}
try
{
await
audioCap
.
start
();
console
.
log
(
`
${
Tag
}
start ok`
);
playbackPromise
(
AudioRendererOptions1
,
pathName
);
playbackPromise
(
AudioRendererOptions2
,
pathName
);
let
bufferSize
=
await
audioCap
.
getBufferSize
();
console
.
log
(
`
${
Tag
}
bufferSize:
${
JSON
.
stringify
(
bufferSize
)}
, dirPath:
${
JSON
.
stringify
(
dirPath
)}
`
);
let
fd
=
fileio
.
openSync
(
dirPath
,
0o102
,
0o777
);
console
.
log
(
`
${
Tag
}
fd:
${
JSON
.
stringify
(
fd
)}
`
);
if
(
fd
!==
null
)
{
console
.
info
(
`
${
Tag
}
AudioFrameworkRecLog: file fd created`
);
}
else
{
console
.
info
(
`
${
Tag
}
AudioFrameworkRecLog: Capturer start : ERROR `
);
expect
(
false
).
assertTrue
();
}
fd
=
fileio
.
openSync
(
dirPath
,
0o2002
,
0o666
);
console
.
log
(
`
${
Tag
}
fd-re:
${
JSON
.
stringify
(
fd
)}
`
);
if
(
fd
!==
null
)
{
console
.
info
(
`
${
Tag
}
AudioFrameworkRecLog: file fd opened : Append Mode :PASS`
);
}
else
{
console
.
info
(
`
${
Tag
}
AudioFrameworkRecLog: file fd Open: Append Mode : FAILED`
);
expect
(
false
).
assertTrue
();
}
let
numBuffersToCapture
=
45
;
while
(
numBuffersToCapture
)
{
console
.
info
(
`
${
Tag
}
AudioFrameworkRecLog: ---------READ BUFFER---------`
);
let
buffer
=
await
audioCap
.
read
(
bufferSize
,
true
);
console
.
info
(
`
${
Tag
}
AudioFrameworkRecLog: ---------WRITE BUFFER---------`
);
let
number
=
fileio
.
writeSync
(
fd
,
buffer
);
console
.
info
(
`
${
Tag
}
AudioFrameworkRecLog:BufferRecLog: data written:
${
JSON
.
stringify
(
number
)}
`
);
numBuffersToCapture
--
;
}
console
.
log
(
`
${
Tag
}
read ok`
);
await
audioCap
.
stop
();
console
.
log
(
`
${
Tag
}
stop ok`
);
}
catch
(
err
)
{
console
.
log
(
`
${
Tag
}
start-read-stop err:
${
JSON
.
stringify
(
err
)}
`
);
expect
(
false
).
assertTrue
();
}
try
{
await
audioCap
.
release
();
console
.
log
(
`
${
Tag
}
release ok`
);
}
catch
(
err
)
{
console
.
log
(
`
${
Tag
}
release err:
${
JSON
.
stringify
(
err
)}
`
);
expect
(
false
).
assertTrue
();
}
done
();
}
/**
*@tc.number : SUB_MULTIMEDIA_AUDIO_INNER_CAPTURER_PROMISE_0100
*@tc.name : SOURCE_TYPE_PLAYBACK_CAPTURER_PRIVACY_TYPE_PUBLIC
...
...
@@ -305,11 +404,11 @@ export default function audioCapturer() {
capturerFlags
:
0
}
let
playbackCaptureConfig
=
{
CaptureFilterOptions
:
[
{
usage
:
audio
.
StreamUsage
.
STREAM_USAGE_MEDIA
filterOptions
:
{
usages
:
[
audio
.
StreamUsage
.
STREAM_USAGE_MEDIA
]
}
]
}
let
audioCapturerOptions
=
{
streamInfo
:
audioStreamInfo
,
...
...
@@ -367,11 +466,10 @@ export default function audioCapturer() {
capturerFlags
:
0
}
let
playbackCaptureConfig
=
{
CaptureFilterOptions
:
[
{
usage
:
audio
.
StreamUsage
.
STREAM_USAGE_MOVIE
filterOptions
:
{
usages
:
[
audio
.
StreamUsage
.
STREAM_USAGE_MOVIE
]
}
]
}
let
audioCapturerOptions
=
{
streamInfo
:
audioStreamInfo
,
...
...
@@ -409,9 +507,336 @@ export default function audioCapturer() {
done
();
})
/**
*@tc.number : SUB_MULTIMEDIA_AUDIO_INNER_CAPTURER_PROMISE_0300
*@tc.name : SOURCE_TYPE_PLAYBACK_CAPTURER_PUBLIC&PUBLIC
*@tc.desc : SOURCE_TYPE_PLAYBACK_CAPTURER_PUBLIC&PUBLIC
*@tc.size : MEDIUM
*@tc.type : Function
*@tc.level : Level 2
*/
it
(
'
SUB_MULTIMEDIA_AUDIO_INNER_CAPTURER_PROMISE_0300
'
,
2
,
async
function
(
done
)
{
let
audioStreamInfo
=
{
samplingRate
:
audio
.
AudioSamplingRate
.
SAMPLE_RATE_44100
,
channels
:
audio
.
AudioChannel
.
CHANNEL_2
,
sampleFormat
:
audio
.
AudioSampleFormat
.
SAMPLE_FORMAT_S32LE
,
encodingType
:
audio
.
AudioEncodingType
.
ENCODING_TYPE_RAW
,
}
let
audioCapturerInfo
=
{
source
:
audio
.
SourceType
.
SOURCE_TYPE_PLAYBACK_CAPTURE
,
capturerFlags
:
0
}
let
playbackCaptureConfig
=
{
filterOptions
:
{
usages
:
[
audio
.
StreamUsage
.
STREAM_USAGE_MUSIC
,
audio
.
StreamUsage
.
STREAM_USAGE_VOICE_ASSISTANT
]
}
}
let
audioCapturerOptions
=
{
streamInfo
:
audioStreamInfo
,
capturerInfo
:
audioCapturerInfo
,
playbackCaptureConfig
:
playbackCaptureConfig
,
}
let
AudioStreamInfo1
=
{
samplingRate
:
audio
.
AudioSamplingRate
.
SAMPLE_RATE_48000
,
channels
:
audio
.
AudioChannel
.
CHANNEL_2
,
sampleFormat
:
audio
.
AudioSampleFormat
.
SAMPLE_FORMAT_S32LE
,
encodingType
:
audio
.
AudioEncodingType
.
ENCODING_TYPE_RAW
}
let
AudioRendererInfo1
=
{
usage
:
audio
.
StreamUsage
.
STREAM_USAGE_MUSIC
,
rendererFlags
:
0
}
let
AudioPrivacyType1
=
{
privacyType
:
audio
.
AudioPrivacyType
.
PRIVACY_TYPE_PUBLIC
}
let
AudioRendererOptions1
=
{
streamInfo
:
AudioStreamInfo1
,
rendererInfo
:
AudioRendererInfo1
,
privacyType
:
AudioPrivacyType1
}
let
AudioStreamInfo2
=
{
samplingRate
:
audio
.
AudioSamplingRate
.
SAMPLE_RATE_48000
,
channels
:
audio
.
AudioChannel
.
CHANNEL_2
,
sampleFormat
:
audio
.
AudioSampleFormat
.
SAMPLE_FORMAT_S32LE
,
encodingType
:
audio
.
AudioEncodingType
.
ENCODING_TYPE_RAW
}
let
AudioRendererInfo2
=
{
usage
:
audio
.
StreamUsage
.
STREAM_USAGE_VOICE_ASSISTANT
,
rendererFlags
:
0
}
let
AudioPrivacyType2
=
{
privacyType
:
audio
.
AudioPrivacyType
.
PRIVACY_TYPE_PUBLIC
}
let
AudioRendererOptions2
=
{
streamInfo
:
AudioStreamInfo2
,
rendererInfo
:
AudioRendererInfo2
,
privacyType
:
AudioPrivacyType2
}
readPath
=
'
pcm_48ksr_32kbr_2ch.wav
'
await
getFdRead
(
readPath
,
done
);
await
getFd
(
"
capture_js-44100-2C-1S32LE_2.pcm
"
);
await
recPromise1
(
audioCapturerOptions
,
AudioRendererOptions1
,
AudioRendererOptions2
,
filePath
,
done
);
await
sleep
(
100
);
await
closeFileDescriptor
(
readPath
);
done
();
})
/**
*@tc.number : SUB_MULTIMEDIA_AUDIO_INNER_CAPTURER_PROMISE_0400
*@tc.name : SOURCE_TYPE_PLAYBACK_CAPTURER_PUBLIC&PRIVATE
*@tc.desc : SOURCE_TYPE_PLAYBACK_CAPTURER_PUBLIC&PRIVATE
*@tc.size : MEDIUM
*@tc.type : Function
*@tc.level : Level 2
*/
it
(
'
SUB_MULTIMEDIA_AUDIO_INNER_CAPTURER_PROMISE_0400
'
,
2
,
async
function
(
done
)
{
let
audioStreamInfo
=
{
samplingRate
:
audio
.
AudioSamplingRate
.
SAMPLE_RATE_44100
,
channels
:
audio
.
AudioChannel
.
CHANNEL_2
,
sampleFormat
:
audio
.
AudioSampleFormat
.
SAMPLE_FORMAT_S32LE
,
encodingType
:
audio
.
AudioEncodingType
.
ENCODING_TYPE_RAW
,
}
let
audioCapturerInfo
=
{
source
:
audio
.
SourceType
.
SOURCE_TYPE_PLAYBACK_CAPTURE
,
capturerFlags
:
0
}
let
playbackCaptureConfig
=
{
filterOptions
:
{
usages
:
[
audio
.
StreamUsage
.
STREAM_USAGE_ALARM
,
audio
.
StreamUsage
.
STREAM_USAGE_NOTIFICATION_RINGTONE
]
}
}
let
audioCapturerOptions
=
{
streamInfo
:
audioStreamInfo
,
capturerInfo
:
audioCapturerInfo
,
playbackCaptureConfig
:
playbackCaptureConfig
,
}
let
AudioStreamInfo1
=
{
samplingRate
:
audio
.
AudioSamplingRate
.
SAMPLE_RATE_48000
,
channels
:
audio
.
AudioChannel
.
CHANNEL_2
,
sampleFormat
:
audio
.
AudioSampleFormat
.
SAMPLE_FORMAT_S32LE
,
encodingType
:
audio
.
AudioEncodingType
.
ENCODING_TYPE_RAW
}
let
AudioRendererInfo1
=
{
usage
:
audio
.
StreamUsage
.
STREAM_USAGE_ALARM
,
rendererFlags
:
0
}
let
AudioPrivacyType1
=
{
privacyType
:
audio
.
AudioPrivacyType
.
PRIVACY_TYPE_PUBLIC
}
let
AudioRendererOptions1
=
{
streamInfo
:
AudioStreamInfo1
,
rendererInfo
:
AudioRendererInfo1
,
privacyType
:
AudioPrivacyType1
}
let
AudioStreamInfo2
=
{
samplingRate
:
audio
.
AudioSamplingRate
.
SAMPLE_RATE_48000
,
channels
:
audio
.
AudioChannel
.
CHANNEL_2
,
sampleFormat
:
audio
.
AudioSampleFormat
.
SAMPLE_FORMAT_S32LE
,
encodingType
:
audio
.
AudioEncodingType
.
ENCODING_TYPE_RAW
}
let
AudioRendererInfo2
=
{
usage
:
audio
.
StreamUsage
.
STREAM_USAGE_NOTIFICATION_RINGTONE
,
rendererFlags
:
0
}
let
AudioPrivacyType2
=
{
privacyType
:
audio
.
AudioPrivacyType
.
PRIVACY_TYPE_PRIVATE
}
let
AudioRendererOptions2
=
{
streamInfo
:
AudioStreamInfo2
,
rendererInfo
:
AudioRendererInfo2
,
privacyType
:
AudioPrivacyType2
}
readPath
=
'
pcm_48ksr_32kbr_2ch.wav
'
await
getFdRead
(
readPath
,
done
);
await
getFd
(
"
capture_js-44100-2C-1S32LE_3.pcm
"
);
await
recPromise1
(
audioCapturerOptions
,
AudioRendererOptions1
,
AudioRendererOptions2
,
filePath
,
done
);
await
sleep
(
100
);
await
closeFileDescriptor
(
readPath
);
done
();
})
/**
*@tc.number : SUB_MULTIMEDIA_AUDIO_INNER_CAPTURER_PROMISE_0500
*@tc.name : SOURCE_TYPE_PLAYBACK_CAPTURER_PRIVATE&PRIVATE
*@tc.desc : SOURCE_TYPE_PLAYBACK_CAPTURER_PRIVATE&PRIVATE
*@tc.size : MEDIUM
*@tc.type : Function
*@tc.level : Level 2
*/
it
(
'
SUB_MULTIMEDIA_AUDIO_INNER_CAPTURER_PROMISE_0500
'
,
2
,
async
function
(
done
)
{
let
audioStreamInfo
=
{
samplingRate
:
audio
.
AudioSamplingRate
.
SAMPLE_RATE_44100
,
channels
:
audio
.
AudioChannel
.
CHANNEL_2
,
sampleFormat
:
audio
.
AudioSampleFormat
.
SAMPLE_FORMAT_S32LE
,
encodingType
:
audio
.
AudioEncodingType
.
ENCODING_TYPE_RAW
,
}
let
audioCapturerInfo
=
{
source
:
audio
.
SourceType
.
SOURCE_TYPE_PLAYBACK_CAPTURE
,
capturerFlags
:
0
}
let
playbackCaptureConfig
=
{
filterOptions
:
{
usages
:
[
audio
.
StreamUsage
.
STREAM_USAGE_RINGTONE
,
audio
.
StreamUsage
.
STREAM_USAGE_NOTIFICATION
]
}
}
let
audioCapturerOptions
=
{
streamInfo
:
audioStreamInfo
,
capturerInfo
:
audioCapturerInfo
,
playbackCaptureConfig
:
playbackCaptureConfig
,
}
let
AudioStreamInfo1
=
{
samplingRate
:
audio
.
AudioSamplingRate
.
SAMPLE_RATE_48000
,
channels
:
audio
.
AudioChannel
.
CHANNEL_2
,
sampleFormat
:
audio
.
AudioSampleFormat
.
SAMPLE_FORMAT_S32LE
,
encodingType
:
audio
.
AudioEncodingType
.
ENCODING_TYPE_RAW
}
let
AudioRendererInfo1
=
{
usage
:
audio
.
StreamUsage
.
STREAM_USAGE_RINGTONE
,
rendererFlags
:
0
}
let
AudioPrivacyType1
=
{
privacyType
:
audio
.
AudioPrivacyType
.
PRIVACY_TYPE_PRIVATE
}
let
AudioRendererOptions1
=
{
streamInfo
:
AudioStreamInfo1
,
rendererInfo
:
AudioRendererInfo1
,
privacyType
:
AudioPrivacyType1
}
let
AudioStreamInfo2
=
{
samplingRate
:
audio
.
AudioSamplingRate
.
SAMPLE_RATE_48000
,
channels
:
audio
.
AudioChannel
.
CHANNEL_2
,
sampleFormat
:
audio
.
AudioSampleFormat
.
SAMPLE_FORMAT_S32LE
,
encodingType
:
audio
.
AudioEncodingType
.
ENCODING_TYPE_RAW
}
let
AudioRendererInfo2
=
{
usage
:
audio
.
StreamUsage
.
STREAM_USAGE_NOTIFICATION
,
rendererFlags
:
0
}
let
AudioPrivacyType2
=
{
privacyType
:
audio
.
AudioPrivacyType
.
PRIVACY_TYPE_PRIVATE
}
let
AudioRendererOptions2
=
{
streamInfo
:
AudioStreamInfo2
,
rendererInfo
:
AudioRendererInfo2
,
privacyType
:
AudioPrivacyType2
}
readPath
=
'
pcm_48ksr_32kbr_2ch.wav
'
await
getFdRead
(
readPath
,
done
);
await
getFd
(
"
capture_js-44100-2C-1S32LE_4.pcm
"
);
await
recPromise1
(
audioCapturerOptions
,
AudioRendererOptions1
,
AudioRendererOptions2
,
filePath
,
done
);
await
sleep
(
100
);
await
closeFileDescriptor
(
readPath
);
done
();
})
/**
*@tc.number : SUB_MULTIMEDIA_AUDIO_INNER_CAPTURER_PROMISE_0600
*@tc.name : SOURCE_TYPE_PLAYBACK_CAPTURER_RINGTONE
*@tc.desc : SOURCE_TYPE_PLAYBACK_CAPTURER_RINGTONE
*@tc.size : MEDIUM
*@tc.type : Function
*@tc.level : Level 2
*/
it
(
'
SUB_MULTIMEDIA_AUDIO_INNER_CAPTURER_PROMISE_0600
'
,
2
,
async
function
(
done
)
{
let
audioStreamInfo
=
{
samplingRate
:
audio
.
AudioSamplingRate
.
SAMPLE_RATE_44100
,
channels
:
audio
.
AudioChannel
.
CHANNEL_2
,
sampleFormat
:
audio
.
AudioSampleFormat
.
SAMPLE_FORMAT_S32LE
,
encodingType
:
audio
.
AudioEncodingType
.
ENCODING_TYPE_RAW
,
}
let
audioCapturerInfo
=
{
source
:
audio
.
SourceType
.
SOURCE_TYPE_PLAYBACK_CAPTURE
,
capturerFlags
:
0
}
let
playbackCaptureConfig
=
{
filterOptions
:
{
usages
:
[
audio
.
StreamUsage
.
STREAM_USAGE_RINGTONE
]
}
}
let
audioCapturerOptions
=
{
streamInfo
:
audioStreamInfo
,
capturerInfo
:
audioCapturerInfo
,
playbackCaptureConfig
:
playbackCaptureConfig
,
}
let
AudioStreamInfo1
=
{
samplingRate
:
audio
.
AudioSamplingRate
.
SAMPLE_RATE_48000
,
channels
:
audio
.
AudioChannel
.
CHANNEL_2
,
sampleFormat
:
audio
.
AudioSampleFormat
.
SAMPLE_FORMAT_S32LE
,
encodingType
:
audio
.
AudioEncodingType
.
ENCODING_TYPE_RAW
}
let
AudioRendererInfo1
=
{
usage
:
audio
.
StreamUsage
.
STREAM_USAGE_GAME
,
rendererFlags
:
0
}
let
AudioPrivacyType1
=
{
privacyType
:
audio
.
AudioPrivacyType
.
PRIVACY_TYPE_PUBLIC
}
let
AudioRendererOptions1
=
{
streamInfo
:
AudioStreamInfo1
,
rendererInfo
:
AudioRendererInfo1
,
privacyType
:
AudioPrivacyType1
}
let
AudioStreamInfo2
=
{
samplingRate
:
audio
.
AudioSamplingRate
.
SAMPLE_RATE_48000
,
channels
:
audio
.
AudioChannel
.
CHANNEL_2
,
sampleFormat
:
audio
.
AudioSampleFormat
.
SAMPLE_FORMAT_S32LE
,
encodingType
:
audio
.
AudioEncodingType
.
ENCODING_TYPE_RAW
}
let
AudioRendererInfo2
=
{
usage
:
audio
.
StreamUsage
.
STREAM_USAGE_NOTIFICATION
,
rendererFlags
:
0
}
let
AudioPrivacyType2
=
{
privacyType
:
audio
.
AudioPrivacyType
.
PRIVACY_TYPE_PUBLIC
}
let
AudioRendererOptions2
=
{
streamInfo
:
AudioStreamInfo2
,
rendererInfo
:
AudioRendererInfo2
,
privacyType
:
AudioPrivacyType2
}
readPath
=
'
pcm_48ksr_32kbr_2ch.wav
'
await
getFdRead
(
readPath
,
done
);
await
getFd
(
"
capture_js-44100-2C-1S32LE_5.pcm
"
);
await
recPromise1
(
audioCapturerOptions
,
AudioRendererOptions1
,
AudioRendererOptions2
,
filePath
,
done
);
await
sleep
(
100
);
await
closeFileDescriptor
(
readPath
);
done
();
})
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录