Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Docs
提交
4ecebcd4
D
Docs
项目概览
OpenHarmony
/
Docs
1 年多 前同步成功
通知
159
Star
292
Fork
28
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
Docs
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
4ecebcd4
编写于
9月 16, 2022
作者:
F
fulizhong
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
modify js-apis-media.md Signed-off-by: FULIZHONG<fulizhong1@huawei.com>
Signed-off-by:
N
fulizhong
<
fulizhong@huawei.com
>
上级
a1b2aac4
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
53 addition
and
49 deletion
+53
-49
zh-cn/application-dev/reference/apis/js-apis-media.md
zh-cn/application-dev/reference/apis/js-apis-media.md
+53
-49
未找到文件。
zh-cn/application-dev/reference/apis/js-apis-media.md
浏览文件 @
4ecebcd4
...
...
@@ -276,8 +276,8 @@ Codec MIME类型枚举。
| 名称 | 类型 | 可读 | 可写 | 说明 |
| ------------------------------- | ----------------------------------- | ---- | ---- | ------------------------------------------------------------ |
| src | string | 是 | 是 | 音频媒体URI,支持当前主流的音频格式(m4a、aac、mp3、ogg、wav)。
<br>
**支持路径示例**
:
<br>
1. fd类型播放:fd://xx
<br>
![](
figures/zh-cn_image_url.png
)
<br>
2. http网络播放: http://xx
<br/>
3. https网络播放: https://xx
<br/>
4. hls网络播放路径:http://xx或者https://xx
<br/>
**需要权限:**
ohos.permission.
READ_MEDIA;如果需要使用网络素材,还需要申请ohos.permission.
INTERNET。 |
| fdSrc
<sup>
9+
</sup>
|
[
AVFileDescriptor
](
#interruptmode9
)
| 是 | 是 | 音频媒体文件描述,使用场景:应用中的音频资源被连续存储在同一个文件中。
<br/>
**使用示例**
:
<br/>
假设一个连续存储的音乐文件:
<br/>
音乐1(地址偏移:0,字节长度:100)
<br/>
音乐2(地址偏移:101,字节长度:50)
<br/>
音乐3(地址偏移:151,字节长度:150)
<br/>
1. 播放音乐1:AVFileDescriptor { fd = 资源句柄; offset = 0; length = 100; }
<br/>
2. 播放音乐2:AVFileDescriptor { fd = 资源句柄; offset = 101; length = 50; }
<br/>
3. 播放音乐3:AVFileDescriptor { fd = 资源句柄; offset = 151; length = 150; }
<br/>
假设是一个独立的音乐文件: 请使用src=fd://xx
<br/>
**注意事项**
:
<br/>
**需要权限:**
ohos.permission.READ_MEDIA
|
| src | string | 是 | 是 | 音频媒体URI,支持当前主流的音频格式(m4a、aac、mp3、ogg、wav)。
<br>
**支持路径示例**
:
<br>
1. fd类型播放:fd://xx
<br>
![](
figures/zh-cn_image_url.png
)
<br>
2. http网络播放: http://xx
<br/>
3. https网络播放: https://xx
<br/>
4. hls网络播放路径:http://xx或者https://xx
<br/>
**需要权限:**
ohos.permission.INTERNET。 |
| fdSrc
<sup>
9+
</sup>
|
[
AVFileDescriptor
](
#interruptmode9
)
| 是 | 是 | 音频媒体文件描述,使用场景:应用中的音频资源被连续存储在同一个文件中。
<br/>
**使用示例**
:
<br/>
假设一个连续存储的音乐文件:
<br/>
音乐1(地址偏移:0,字节长度:100)
<br/>
音乐2(地址偏移:101,字节长度:50)
<br/>
音乐3(地址偏移:151,字节长度:150)
<br/>
1. 播放音乐1:AVFileDescriptor { fd = 资源句柄; offset = 0; length = 100; }
<br/>
2. 播放音乐2:AVFileDescriptor { fd = 资源句柄; offset = 101; length = 50; }
<br/>
3. 播放音乐3:AVFileDescriptor { fd = 资源句柄; offset = 151; length = 150; }
<br/>
假设是一个独立的音乐文件: 请使用src=fd://xx
<br/>
|
| loop | boolean | 是 | 是 | 音频循环播放属性,设置为'true'表示循环播放。 |
| audioInterruptMode
<sup>
9+
</sup>
|
[
InterruptMode
](
#interruptmode9
)
| 是 | 是 | 音频焦点模型。 |
| currentTime | number | 是 | 否 | 音频的当前播放位置,单位为毫秒(ms)。 |
...
...
@@ -441,7 +441,7 @@ function printfDescription(obj) {
}
}
audioPlayer
.
getTrackDescription
((
error
,
arrlist
)
=>
{
audioPlayer
.
getTrackDescription
((
error
,
)
=>
{
if
(
arrlist
!=
null
)
{
for
(
let
i
=
0
;
i
<
arrlist
.
length
;
i
++
)
{
printfDescription
(
arrlist
[
i
]);
...
...
@@ -476,7 +476,7 @@ function printfDescription(obj) {
console
.
info
(
'
audio value is
'
+
property
);
}
}
let
arrayDescription
=
null
audioPlayer
.
getTrackDescription
().
then
((
arrlist
)
=>
{
if
(
arrlist
!=
null
)
{
arrayDescription
=
arrlist
;
...
...
@@ -534,6 +534,8 @@ on(type: 'play' | 'pause' | 'stop' | 'reset' | 'dataLoad' | 'finish' | 'volumeCh
**示例:**
```
js
import
fileio
from
'
@ohos.fileio
'
let
audioPlayer
=
media
.
createAudioPlayer
();
//创建一个音频播放实例
audioPlayer
.
on
(
'
dataLoad
'
,
()
=>
{
//设置'dataLoad'事件回调,src属性设置成功后,触发此回调
console
.
info
(
'
audio set source success
'
);
...
...
@@ -573,11 +575,11 @@ audioPlayer.on('error', (error) => { //设置'error'事件回调
});
// 用户选择视频设置fd(本地播放)
let
fdPath
=
'
fd://
'
let
fdPath
=
'
fd://
'
;
// path路径的码流可通过"hdc file send D:\xxx\01.mp3 /data/accounts/account_0/appdata" 命令,将其推送到设备上
let
path
=
'
/data/accounts/account_0/appdata/ohos.xxx.xxx.xxx/01.mp3
'
;
file
IO
.
open
(
path
).
then
(
fdNumber
)
=>
{
fdPath
=
fdPath
+
''
+
fd
Number
;
file
io
.
open
(
path
).
then
((
fdValue
)
=>
{
fdPath
=
fdPath
+
''
+
fd
Value
;
console
.
info
(
'
open fd success fd is
'
+
fdPath
);
},
(
err
)
=>
{
console
.
info
(
'
open fd failed err is
'
+
err
);
...
...
@@ -645,19 +647,19 @@ audioPlayer.setVolume(3); //设置volume为无效值,触发'error'事件
**系统能力:**
以下各项对应的系统能力均为 SystemCapability.Multimedia.Media.AudioPlayer。
| 名称
| 类型 | 描述 |
| -------
-----------
| ------ | ---------------------------------------------- |
| idle
| string | 音频播放空闲,dataload/reset成功后处于此状态。 |
| playing
| string | 音频正在播放,play成功后处于此状态。 |
| paused
| string | 音频暂停播放,pause成功后处于此状态。 |
| stopped
| string | 音频播放停止,stop/播放结束后处于此状态。 |
| error
<sup>
8+
</sup>
| string | 错误状态。 |
| 名称 | 类型 | 描述 |
| ------- | ------ | ---------------------------------------------- |
| idle | string | 音频播放空闲,dataload/reset成功后处于此状态。 |
| playing | string | 音频正在播放,play成功后处于此状态。 |
| paused | string | 音频暂停播放,pause成功后处于此状态。 |
| stopped | string | 音频播放停止,stop/播放结束后处于此状态。 |
| error
| string | 错误状态。 |
## AVFileDescriptor<sup>9+</sup>
音视频文件资源描述,一种特殊资源的播放方式,使用场景:应用中的音频资源被连续存储在同一个文件中,需要根据偏移量和长度进行播放。
**系统能力:**
SystemCapability.Multimedia.Media.
AudioPlayer
**系统能力:**
SystemCapability.Multimedia.Media.
Core
**参数:**
...
...
@@ -673,10 +675,7 @@ audioPlayer.setVolume(3); //设置volume为无效值,触发'error'事件
**系统能力:**
SystemCapability.Multimedia.Media.AudioPlayer
| 名称 | 默认值 | 描述 |
| ---------------------------- | ------ | ---------- |
| SHARE_MODE | 0 | 共享焦点模式。 |
| INDEPENDENT_MODE| 1 | 独立焦点模式。 |
具体参数值请查询
[
@ohos.multimedia.audio.d.ts
](
https://gitee.com/openharmony/interface_sdk-js/blob/master/api/@ohos.multimedia.audio.d.ts
)
## VideoPlayer<sup>8+</sup>
...
...
@@ -690,8 +689,8 @@ audioPlayer.setVolume(3); //设置volume为无效值,触发'error'事件
| 名称 | 类型 | 可读 | 可写 | 说明 |
| ------------------------ | ---------------------------------- | ---- | ---- | ------------------------------------------------------------ |
| url
<sup>
8+
</sup>
| string | 是 | 是 | 视频媒体URL,支持当前主流的视频格式(mp4、mpeg-ts、webm、mkv)。
<br>
**支持路径示例**
:
<br>
1. fd类型播放:fd://xx
<br>
![](
figures/zh-cn_image_url.png
)
<br>
2. http网络播放: http://xx
<br/>
3. https网络播放: https://xx
<br/>
4. hls网络播放路径:http://xx或者https://xx
<br/>
**需要权限:**
ohos.permission.
READ_MEDIA;如果需要使用网络素材,还需要申请ohos.permission.
INTERNET。 |
| fdSrc
<sup>
9+
</sup>
|
[
AVFileDescriptor
](
#interruptmode9
)
| 是 | 是 | 视频媒体文件描述,使用场景:应用中的视频资源被连续存储在同一个文件中。
<br/>
**使用示例**
:
<br/>
假设一个连续存储的音乐文件:
<br/>
视频1(地址偏移:0,字节长度:100)
<br/>
视频2(地址偏移:101,字节长度:50)
<br/>
视频3(地址偏移:151,字节长度:150)
<br/>
1. 播放视频1:AVFileDescriptor { fd = 资源句柄; offset = 0; length = 100; }
<br/>
2. 播放视频2:AVFileDescriptor { fd = 资源句柄; offset = 101; length = 50; }
<br/>
3. 播放视频3:AVFileDescriptor { fd = 资源句柄; offset = 151; length = 150; }
<br/>
假设是一个独立的视频文件: 请使用src=fd://xx
<br/>
**注意事项**
:
<br/>
**需要权限:**
ohos.permission.READ_MEDIA
|
| url
<sup>
8+
</sup>
| string | 是 | 是 | 视频媒体URL,支持当前主流的视频格式(mp4、mpeg-ts、webm、mkv)。
<br>
**支持路径示例**
:
<br>
1. fd类型播放:fd://xx
<br>
![](
figures/zh-cn_image_url.png
)
<br>
2. http网络播放: http://xx
<br/>
3. https网络播放: https://xx
<br/>
4. hls网络播放路径:http://xx或者https://xx
<br/>
**需要权限:**
ohos.permission.INTERNET。 |
| fdSrc
<sup>
9+
</sup>
|
[
AVFileDescriptor
](
#interruptmode9
)
| 是 | 是 | 视频媒体文件描述,使用场景:应用中的视频资源被连续存储在同一个文件中。
<br/>
**使用示例**
:
<br/>
假设一个连续存储的音乐文件:
<br/>
视频1(地址偏移:0,字节长度:100)
<br/>
视频2(地址偏移:101,字节长度:50)
<br/>
视频3(地址偏移:151,字节长度:150)
<br/>
1. 播放视频1:AVFileDescriptor { fd = 资源句柄; offset = 0; length = 100; }
<br/>
2. 播放视频2:AVFileDescriptor { fd = 资源句柄; offset = 101; length = 50; }
<br/>
3. 播放视频3:AVFileDescriptor { fd = 资源句柄; offset = 151; length = 150; }
<br/>
假设是一个独立的视频文件: 请使用src=fd://xx
<br/>
|
| loop
<sup>
8+
</sup>
| boolean | 是 | 是 | 视频循环播放属性,设置为'true'表示循环播放。 |
| videoScaleType
<sup>
9+
</sup>
|
[
VideoScaleType
](
#videoscaletype9
)
| 是 | 是 | 视频缩放模式。 |
| audioInterruptMode
<sup>
9+
</sup>
|
[
InterruptMode
](
#interruptmode9
)
| 是 | 是 | 音频焦点模型。 |
...
...
@@ -721,6 +720,7 @@ setDisplaySurface(surfaceId: string, callback: AsyncCallback\<void>): void
**示例:**
```
js
let
surfaceId
=
null
;
videoPlayer
.
setDisplaySurface
(
surfaceId
,
(
err
)
=>
{
if
(
err
==
null
)
{
console
.
info
(
'
setDisplaySurface success!
'
);
...
...
@@ -755,6 +755,7 @@ setDisplaySurface(surfaceId: string): Promise\<void>
**示例:**
```
js
let
surfaceId
=
null
;
videoPlayer
.
setDisplaySurface
(
surfaceId
).
then
(()
=>
{
console
.
info
(
'
setDisplaySurface success
'
);
}).
catch
((
error
)
=>
{
...
...
@@ -1061,8 +1062,7 @@ seek(timeMs: number, mode:SeekMode, callback: AsyncCallback\<number>): void
```
js
import
media
from
'
@ohos.multimedia.media
'
let
seekTime
=
5000
;
let
seekMode
=
media
.
SeekMode
.
SEEK_NEXT_SYNC
;
videoPlayer
.
seek
(
seekTime
,
seekMode
,
(
err
,
result
)
=>
{
videoPlayer
.
seek
(
seekTime
,
media
.
SeekMode
.
SEEK_NEXT_SYNC
,
(
err
,
result
)
=>
{
if
(
err
==
null
)
{
console
.
info
(
'
seek success!
'
);
}
else
{
...
...
@@ -1095,6 +1095,7 @@ seek(timeMs: number, mode?:SeekMode): Promise\<number>
**示例:**
```
js
import
media
from
'
@ohos.multimedia.media
'
let
seekTime
=
5000
;
videoPlayer
.
seek
(
seekTime
).
then
((
seekDoneTime
)
=>
{
// seekDoneTime表示seek完成后的时间点
console
.
info
(
'
seek success
'
);
...
...
@@ -1102,7 +1103,7 @@ videoPlayer.seek(seekTime).then((seekDoneTime) => { // seekDoneTime表示seek完
console
.
info
(
`video catchCallback, error:
${
error
}
`
);
});
videoPlayer
.
seek
(
seekTime
,
seekMode
).
then
((
seekDoneTime
)
=>
{
videoPlayer
.
seek
(
seekTime
,
media
.
SeekMode
.
SEEK_NEXT_SYNC
).
then
((
seekDoneTime
)
=>
{
console
.
info
(
'
seek success
'
);
}).
catch
((
error
)
=>
{
console
.
info
(
`video catchCallback, error:
${
error
}
`
);
...
...
@@ -1161,7 +1162,7 @@ setVolume(vol: number): Promise\<void>
```
js
let
vol
=
0.5
;
videoPlayer
.
setVolume
(
vol
).
then
()
=>
{
videoPlayer
.
setVolume
(
vol
).
then
(
(
)
=>
{
console
.
info
(
'
setVolume success
'
);
}).
catch
((
error
)
=>
{
console
.
info
(
`video catchCallback, error:
${
error
}
`
);
...
...
@@ -1211,7 +1212,7 @@ release(): Promise\<void>
**示例:**
```
js
videoPlayer
.
release
().
then
()
=>
{
videoPlayer
.
release
().
then
(
(
)
=>
{
console
.
info
(
'
release success
'
);
}).
catch
((
error
)
=>
{
console
.
info
(
`video catchCallback, error:
${
error
}
`
);
...
...
@@ -1244,7 +1245,7 @@ function printfDescription(obj) {
}
videoPlayer
.
getTrackDescription
((
error
,
arrlist
)
=>
{
if
(
arrlist
)
!=
null
)
{
if
(
(
arrlist
)
!=
null
)
{
for
(
let
i
=
0
;
i
<
arrlist
.
length
;
i
++
)
{
printfDescription
(
arrlist
[
i
]);
}
...
...
@@ -1350,7 +1351,7 @@ setSpeed(speed:number): Promise\<number>
import
media
from
'
@ohos.multimedia.media
'
let
speed
=
media
.
PlaybackSpeed
.
SPEED_FORWARD_2_00_X
;
videoPlayer
.
setSpeed
(
speed
).
then
()
=>
{
videoPlayer
.
setSpeed
(
speed
).
then
(
(
)
=>
{
console
.
info
(
'
setSpeed success
'
);
}).
catch
((
error
)
=>
{
console
.
info
(
`video catchCallback, error:
${
error
}
`
);
...
...
@@ -1409,7 +1410,7 @@ selectBitrate(bitrate:number): Promise\<number>
```
js
let
bitrate
=
1024000
;
videoPlayer
.
selectBitrate
(
bitrate
).
then
()
=>
{
videoPlayer
.
selectBitrate
(
bitrate
).
then
(
(
)
=>
{
console
.
info
(
'
selectBitrate success
'
);
}).
catch
((
error
)
=>
{
console
.
info
(
`video catchCallback, error:
${
error
}
`
);
...
...
@@ -1612,30 +1613,24 @@ videoPlayer.on('availableBitratesCollect', (bitrates) => {
## MediaDescription<sup>8+</sup>
### [key : string] : Object
通过key-value方式获取媒体信息。
**系统能力:**
以下各项对应的系统能力均为 SystemCapability.Multimedia.Media.Core。
| 名称 | 类型 | 说明 |
| ----- | ------ | ------------------------------------------------------------ |
| key | string | 通过key值获取对应的value。key值具体可见
[
MediaDescriptionKey
](
#mediadescriptionkey8
)
。 |
| value | any | 对应key值得value。其类型可为任意类型,具体key对应value的类型可参考
[
MediaDescriptionKey
](
#mediadescriptionkey8
)
的描述信息。 |
**示例:**
```
js
import
media
from
'
@ohos.multimedia.media
'
function
printfItemDescription
(
obj
,
key
)
{
let
property
=
obj
[
key
];
console
.
info
(
'
audio key is
'
+
key
);
console
.
info
(
'
audio value is
'
+
property
);
console
.
info
(
'
audio key is
'
+
key
);
// 通过key值获取对应的value。key值具体可见[MediaDescriptionKey]
console
.
info
(
'
audio value is
'
+
property
);
//对应key值得value。其类型可为任意类型,具体key对应value的类型可参考[MediaDescriptionKey]
}
let
audioPlayer
=
media
.
createAudioPlayer
();
audioPlayer
.
getTrackDescription
((
error
,
arrlist
)
=>
{
if
(
arrlist
!=
null
)
{
for
(
let
i
=
0
;
i
<
arrlist
.
length
;
i
++
)
{
printfItemDescription
(
arrlist
[
i
],
MD_KEY_TRACK_TYPE
);
//打印出每条轨道MD_KEY_TRACK_TYPE的值
printfItemDescription
(
arrlist
[
i
],
media
.
MediaDescriptionKey
.
MD_KEY_TRACK_TYPE
);
//打印出每条轨道MD_KEY_TRACK_TYPE的值
}
}
else
{
console
.
log
(
`audio getTrackDescription fail, error:
${
error
}
`
);
...
...
@@ -1807,7 +1802,7 @@ on(type: 'prepare' | 'start' | 'pause' | 'resume' | 'stop' | 'release' | 'reset'
**示例:**
```
js
let
audio
r
ecorder
=
media
.
createAudioRecorder
();
// 创建一个音频录制实例
let
audio
R
ecorder
=
media
.
createAudioRecorder
();
// 创建一个音频录制实例
let
audioRecorderConfig
=
{
audioEncoder
:
media
.
AudioEncoder
.
AAC_LC
,
,
audioEncodeBitRate
:
22050
,
...
...
@@ -1863,10 +1858,19 @@ on(type: 'error', callback: ErrorCallback): void
**示例:**
```
js
let
audioRecorderConfig
=
{
audioEncoder
:
media
.
AudioEncoder
.
AAC_LC
,
,
audioEncodeBitRate
:
22050
,
audioSampleRate
:
22050
,
numberOfChannels
:
2
,
format
:
media
.
AudioOutputFormat
.
AAC_ADTS
,
uri
:
'
fd://xx
'
,
// 文件需先由调用者创建,并给予适当的权限
location
:
{
latitude
:
30
,
longitude
:
130
},
}
audioRecorder
.
on
(
'
error
'
,
(
error
)
=>
{
// 设置'error'事件回调
console
.
info
(
`audio error called, error:
${
error
}
`
);
});
audioRecorder
.
prepare
(
);
// prepare不设置参数,触发'error'事件
audioRecorder
.
prepare
(
audioRecorderConfig
);
// prepare不设置参数,触发'error'事件
```
## AudioRecorderConfig
...
...
@@ -2057,18 +2061,17 @@ media.createVideoRecorder().then((recorder) => {
if
(
recorder
!=
null
)
{
videoRecorder
=
recorder
;
console
.
info
(
'
createVideoRecorder success
'
);
videoRecorder
.
prepare
(
videoConfig
).
then
(()
=>
{
console
.
info
(
'
prepare success
'
);
}).
catch
((
err
)
=>
{
console
.
info
(
'
prepare failed and catch error is
'
+
err
.
message
);
});
}
else
{
console
.
info
(
'
createVideoRecorder failed
'
);
}
}).
catch
((
err
)
=>
{
console
.
info
(
'
catch err error message is
'
+
err
.
message
);
});
videoRecorder
.
prepare
(
videoConfig
).
then
(()
=>
{
console
.
info
(
'
prepare success
'
);
}).
catch
((
err
)
=>
{
console
.
info
(
'
prepare failed and catch error is
'
+
err
.
message
);
});
```
### getInputSurface<sup>9+</sup>
...
...
@@ -2483,6 +2486,7 @@ on(type: 'error', callback: ErrorCallback): void
```
js
videoRecorder
.
on
(
'
error
'
,
(
error
)
=>
{
// 设置'error'事件回调
console
.
info
(
`audio error called, error:
${
error
}
`
);
}
// 当获取videoRecordState接口出错时通过此订阅事件上报
```
...
...
@@ -2514,7 +2518,7 @@ videoRecorder.on('error', (error) => { // 设
| profile |
[
VideoRecorderProfile
](
#videorecorderprofile9
)
| 是 | 视频录制的profile。 |
| rotation | number | 否 | 录制视频的旋转角度。 |
| location |
[
Location
](
#location
)
| 否 | 录制视频的地理位置。 |
| url | string | 是 | 视频输出URL:fd://xx
(fd
number)
<br/>
![](
figures/zh-cn_image_url.png
)
<br/>
**需要权限:**
ohos.permission.READ_MEDIA;
|
| url | string | 是 | 视频输出URL:fd://xx
(fd
number)
<br/>
![](
figures/zh-cn_image_url.png
)
<br/>
|
## AudioSourceType<sup>9+</sup>
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录