Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Docs
提交
c6739dcf
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看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
c6739dcf
编写于
2月 14, 2023
作者:
O
openharmony_ci
提交者:
Gitee
2月 14, 2023
浏览文件
操作
浏览文件
下载
差异文件
!14642 挑单monthly
Merge pull request !14642 from zengyawen/cherry-pick-1676343794
上级
95d616c4
8b7ff71f
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
44 addition
and
134 deletion
+44
-134
zh-cn/application-dev/media/audio-playback.md
zh-cn/application-dev/media/audio-playback.md
+14
-44
zh-cn/application-dev/media/avplayer-playback.md
zh-cn/application-dev/media/avplayer-playback.md
+16
-46
zh-cn/application-dev/media/video-playback.md
zh-cn/application-dev/media/video-playback.md
+14
-44
未找到文件。
zh-cn/application-dev/media/audio-playback.md
浏览文件 @
c6739dcf
...
...
@@ -38,7 +38,7 @@ AudioPlayer支持的src媒体源输入类型可参考:[src属性说明](../ref
```
js
import
media
from
'
@ohos.multimedia.media
'
import
f
ileIO
from
'
@ohos.fileio
'
import
f
s
from
'
@ohos.file.fs
'
// 打印码流轨道信息
function
printfDescription
(
obj
)
{
...
...
@@ -112,14 +112,8 @@ async function audioPlayerDemo() {
let
pathDir
=
"
/data/storage/el2/base/haps/entry/files
"
// pathDir在FA模型和Stage模型的获取方式不同,请参考开发步骤首行的说明,根据实际情况自行获取。
// path路径的码流可通过"hdc file send D:\xxx\01.mp3 /data/app/el2/100/base/ohos.acts.multimedia.audio.audioplayer/haps/entry/files" 命令,将其推送到设备上
let
path
=
pathDir
+
'
/01.mp3
'
await
fileIO
.
open
(
path
).
then
((
fdNumber
)
=>
{
fdPath
=
fdPath
+
''
+
fdNumber
;
console
.
info
(
'
open fd success fd is
'
+
fdPath
);
},
(
err
)
=>
{
console
.
info
(
'
open fd failed err is
'
+
err
);
}).
catch
((
err
)
=>
{
console
.
info
(
'
open fd failed err is
'
+
err
);
});
let
file
=
await
fs
.
open
(
path
);
fdPath
=
fdPath
+
''
+
file
.
fd
;
audioPlayer
.
src
=
fdPath
;
// 设置src属性,并触发'dataLoad'事件回调
}
```
...
...
@@ -128,7 +122,7 @@ async function audioPlayerDemo() {
```
js
import
media
from
'
@ohos.multimedia.media
'
import
f
ileIO
from
'
@ohos.fileio
'
import
f
s
from
'
@ohos.file.fs
'
export
class
AudioDemo
{
// 设置播放器回调函数
...
...
@@ -154,14 +148,8 @@ export class AudioDemo {
let
pathDir
=
"
/data/storage/el2/base/haps/entry/files
"
// pathDir在FA模型和Stage模型的获取方式不同,请参考开发步骤首行的说明,根据实际情况自行获取。
// path路径的码流可通过"hdc file send D:\xxx\01.mp3 /data/app/el2/100/base/ohos.acts.multimedia.audio.audioplayer/haps/entry/files" 命令,将其推送到设备上
let
path
=
pathDir
+
'
/01.mp3
'
await
fileIO
.
open
(
path
).
then
((
fdNumber
)
=>
{
fdPath
=
fdPath
+
''
+
fdNumber
;
console
.
info
(
'
open fd success fd is
'
+
fdPath
);
},
(
err
)
=>
{
console
.
info
(
'
open fd failed err is
'
+
err
);
}).
catch
((
err
)
=>
{
console
.
info
(
'
open fd failed err is
'
+
err
);
});
let
file
=
await
fs
.
open
(
path
);
fdPath
=
fdPath
+
''
+
file
.
fd
;
audioPlayer
.
src
=
fdPath
;
// 设置src属性,并触发'dataLoad'事件回调
}
}
...
...
@@ -171,7 +159,7 @@ export class AudioDemo {
```
js
import
media
from
'
@ohos.multimedia.media
'
import
f
ileIO
from
'
@ohos.fileio
'
import
f
s
from
'
@ohos.file.fs
'
export
class
AudioDemo
{
// 设置播放器回调函数
...
...
@@ -202,14 +190,8 @@ export class AudioDemo {
let
pathDir
=
"
/data/storage/el2/base/haps/entry/files
"
// pathDir在FA模型和Stage模型的获取方式不同,请参考开发步骤首行的说明,根据实际情况自行获取。
// path路径的码流可通过"hdc file send D:\xxx\02.mp3 /data/app/el2/100/base/ohos.acts.multimedia.audio.audioplayer/haps/entry/files" 命令,将其推送到设备上
let
nextpath
=
pathDir
+
'
/02.mp3
'
await
fileIO
.
open
(
nextpath
).
then
((
fdNumber
)
=>
{
nextFdPath
=
nextFdPath
+
''
+
fdNumber
;
console
.
info
(
'
open fd success fd is
'
+
nextFdPath
);
},
(
err
)
=>
{
console
.
info
(
'
open fd failed err is
'
+
err
);
}).
catch
((
err
)
=>
{
console
.
info
(
'
open fd failed err is
'
+
err
);
});
let
nextFile
=
await
fs
.
open
(
nextpath
);
nextFdPath
=
nextFdPath
+
''
+
nextFile
.
fd
;
audioPlayer
.
src
=
nextFdPath
;
// 设置src属性,并重新触发触发'dataLoad'事件回调
}
...
...
@@ -220,14 +202,8 @@ export class AudioDemo {
let
pathDir
=
"
/data/storage/el2/base/haps/entry/files
"
// pathDir在FA模型和Stage模型的获取方式不同,请参考开发步骤首行的说明,根据实际情况自行获取。
// path路径的码流可通过"hdc file send D:\xxx\01.mp3 /data/app/el2/100/base/ohos.acts.multimedia.audio.audioplayer/haps/entry/files" 命令,将其推送到设备上
let
path
=
pathDir
+
'
/01.mp3
'
await
fileIO
.
open
(
path
).
then
((
fdNumber
)
=>
{
fdPath
=
fdPath
+
''
+
fdNumber
;
console
.
info
(
'
open fd success fd is
'
+
fdPath
);
},
(
err
)
=>
{
console
.
info
(
'
open fd failed err is
'
+
err
);
}).
catch
((
err
)
=>
{
console
.
info
(
'
open fd failed err is
'
+
err
);
});
let
file
=
await
fs
.
open
(
path
);
fdPath
=
fdPath
+
''
+
file
.
fd
;
audioPlayer
.
src
=
fdPath
;
// 设置src属性,并触发'dataLoad'事件回调
}
}
...
...
@@ -237,7 +213,7 @@ export class AudioDemo {
```
js
import
media
from
'
@ohos.multimedia.media
'
import
f
ileIO
from
'
@ohos.fileio
'
import
f
s
from
'
@ohos.file.fs
'
export
class
AudioDemo
{
// 设置播放器回调函数
...
...
@@ -259,14 +235,8 @@ export class AudioDemo {
let
pathDir
=
"
/data/storage/el2/base/haps/entry/files
"
// pathDir在FA模型和Stage模型的获取方式不同,请参考开发步骤首行的说明,根据实际情况自行获取。
// path路径的码流可通过"hdc file send D:\xxx\01.mp3 /data/app/el2/100/base/ohos.acts.multimedia.audio.audioplayer/haps/entry/files" 命令,将其推送到设备上
let
path
=
pathDir
+
'
/01.mp3
'
await
fileIO
.
open
(
path
).
then
((
fdNumber
)
=>
{
fdPath
=
fdPath
+
''
+
fdNumber
;
console
.
info
(
'
open fd success fd is
'
+
fdPath
);
},
(
err
)
=>
{
console
.
info
(
'
open fd failed err is
'
+
err
);
}).
catch
((
err
)
=>
{
console
.
info
(
'
open fd failed err is
'
+
err
);
});
let
file
=
await
fs
.
open
(
path
);
fdPath
=
fdPath
+
''
+
file
.
fd
;
audioPlayer
.
src
=
fdPath
;
// 设置src属性,并触发'dataLoad'事件回调
}
}
...
...
zh-cn/application-dev/media/avplayer-playback.md
浏览文件 @
c6739dcf
...
...
@@ -111,7 +111,7 @@ AVPlayer主要工作是将Audio/Video媒体资源转码为可供渲染的图像
```
js
import
media
from
'
@ohos.multimedia.media
'
import
audio
from
'
@ohos.multimedia.audio
'
;
import
f
ileIO
from
'
@ohos.fileio
'
import
f
s
from
'
@ohos.file.fs
'
const
TAG
=
'
AVPlayerDemo:
'
export
class
AVPlayerDemo
{
...
...
@@ -230,14 +230,8 @@ export class AVPlayerDemo {
let
pathDir
=
"
/data/storage/el2/base/haps/entry/files
"
// pathDir在FA模型和Stage模型的获取方式不同,请参考开发步骤首行的说明,根据实际情况自行获取。
// path路径的码流可通过"hdc file send D:\xxx\H264_AAC.mp4 /data/app/el2/100/base/ohos.acts.multimedia.media.avplayer/haps/entry/files" 命令,将其推送到设备上
let
path
=
pathDir
+
'
/H264_AAC.mp4
'
await
fileIO
.
open
(
path
).
then
((
fdNumber
)
=>
{
fdPath
=
fdPath
+
''
+
fdNumber
console
.
info
(
'
open fd success fd is
'
+
fdPath
)
},
(
err
)
=>
{
console
.
info
(
'
open fd failed err is
'
+
err
)
}).
catch
((
err
)
=>
{
console
.
info
(
'
open fd failed err is
'
+
err
)
});
let
file
=
await
fs
.
open
(
path
)
fdPath
=
fdPath
+
''
+
file
.
fd
this
.
avPlayer
.
url
=
fdPath
}
}
...
...
@@ -247,7 +241,7 @@ export class AVPlayerDemo {
```
js
import
media
from
'
@ohos.multimedia.media
'
import
f
ileIO
from
'
@ohos.fileio
'
import
f
s
from
'
@ohos.file.fs
'
const
TAG
=
'
AVPlayerDemo:
'
export
class
AVPlayerDemo
{
...
...
@@ -309,24 +303,18 @@ export class AVPlayerDemo {
let
pathDir
=
"
/data/storage/el2/base/haps/entry/files
"
// pathDir在FA模型和Stage模型的获取方式不同,请参考开发步骤首行的说明,根据实际情况自行获取。
// path路径的码流可通过"hdc file send D:\xxx\H264_AAC.mp4 /data/app/el2/100/base/ohos.acts.multimedia.media.avplayer/haps/entry/files" 命令,将其推送到设备上
let
path
=
pathDir
+
'
/H264_AAC.mp4
'
await
fileIO
.
open
(
path
).
then
((
fdNumber
)
=>
{
fdPath
=
fdPath
+
''
+
fdNumber
console
.
info
(
'
open fd success fd is
'
+
fdPath
)
},
(
err
)
=>
{
console
.
info
(
'
open fd failed err is
'
+
err
)
}).
catch
((
err
)
=>
{
console
.
info
(
'
open fd failed err is
'
+
err
)
});
let
file
=
await
fs
.
open
(
path
)
fdPath
=
fdPath
+
''
+
file
.
fd
this
.
avPlayer
.
url
=
fdPath
}
}
```
###
视频切换
场景
###
单曲循环
场景
```
js
import
media
from
'
@ohos.multimedia.media
'
import
f
ileIO
from
'
@ohos.fileio
'
import
f
s
from
'
@ohos.file.fs
'
const
TAG
=
'
AVPlayerDemo:
'
export
class
AVPlayerDemo
{
...
...
@@ -400,23 +388,17 @@ export class AVPlayerDemo {
let
pathDir
=
"
/data/storage/el2/base/haps/entry/files
"
// pathDir在FA模型和Stage模型的获取方式不同,请参考开发步骤首行的说明,根据实际情况自行获取。
// path路径的码流可通过"hdc file send D:\xxx\H264_AAC.mp4 /data/app/el2/100/base/ohos.acts.multimedia.media.avplayer/haps/entry/files" 命令,将其推送到设备上
let
path
=
pathDir
+
'
/H264_AAC.mp4
'
await
fileIO
.
open
(
path
).
then
((
fdNumber
)
=>
{
fdPath
=
fdPath
+
''
+
fdNumber
console
.
info
(
'
open fd success fd is
'
+
fdPath
)
},
(
err
)
=>
{
console
.
info
(
'
open fd failed err is
'
+
err
)
}).
catch
((
err
)
=>
{
console
.
info
(
'
open fd failed err is
'
+
err
)
});
let
file
=
await
fs
.
open
(
path
)
fdPath
=
fdPath
+
''
+
file
.
fd
this
.
avPlayer
.
url
=
fdPath
}
}
```
###
单曲循环
场景
###
视频切换
场景
```
js
import
media
from
'
@ohos.multimedia.media
'
import
f
ileIO
from
'
@ohos.fileio
'
import
f
s
from
'
@ohos.file.fs
'
const
TAG
=
'
AVPlayerDemo:
'
export
class
AVPlayerDemo
{
...
...
@@ -429,14 +411,8 @@ export class AVPlayerDemo {
let
pathDir
=
"
/data/storage/el2/base/haps/entry/files
"
// pathDir在FA模型和Stage模型的获取方式不同,请参考开发步骤首行的说明,根据实际情况自行获取。
// path路径的码流可通过"hdc file send D:\xxx\H264_MP3.mp4 /data/app/el2/100/base/ohos.acts.multimedia.media.avplayer/haps/entry/files" 命令,将其推送到设备上
let
path
=
pathDir
+
'
/H264_MP3.mp4
'
await
fileIO
.
open
(
path
).
then
((
fdNumber
)
=>
{
fdPath
=
fdPath
+
''
+
fdNumber
console
.
info
(
'
open fd success fd is
'
+
fdPath
)
},
(
err
)
=>
{
console
.
info
(
'
open fd failed err is
'
+
err
)
}).
catch
((
err
)
=>
{
console
.
info
(
'
open fd failed err is
'
+
err
)
});
let
file
=
await
fs
.
open
(
path
)
fdPath
=
fdPath
+
''
+
file
.
fd
this
.
avPlayer
.
url
=
fdPath
// 再次触发initialized状态机上报
}
...
...
@@ -500,14 +476,8 @@ export class AVPlayerDemo {
let
pathDir
=
"
/data/storage/el2/base/haps/entry/files
"
// pathDir在FA模型和Stage模型的获取方式不同,请参考开发步骤首行的说明,根据实际情况自行获取。
// path路径的码流可通过"hdc file send D:\xxx\H264_AAC.mp4 /data/app/el2/100/base/ohos.acts.multimedia.media.avplayer/haps/entry/files" 命令,将其推送到设备上
let
path
=
pathDir
+
'
/H264_AAC.mp4
'
await
fileIO
.
open
(
path
).
then
((
fdNumber
)
=>
{
fdPath
=
fdPath
+
''
+
fdNumber
console
.
info
(
'
open fd success fd is
'
+
fdPath
)
},
(
err
)
=>
{
console
.
info
(
'
open fd failed err is
'
+
err
)
}).
catch
((
err
)
=>
{
console
.
info
(
'
open fd failed err is
'
+
err
)
});
let
file
=
await
fs
.
open
(
path
)
fdPath
=
fdPath
+
''
+
file
.
fd
this
.
avPlayer
.
url
=
fdPath
}
}
...
...
zh-cn/application-dev/media/video-playback.md
浏览文件 @
c6739dcf
...
...
@@ -51,7 +51,7 @@ Xcomponent创建方法可参考:[Xcomponent创建方法](../reference/arkui-ts
```
js
import
media
from
'
@ohos.multimedia.media
'
import
f
ileIO
from
'
@ohos.fileio
'
import
f
s
from
'
@ohos.file.fs
'
export
class
VideoPlayerDemo
{
// 函数调用发生错误时用于上报错误信息
failureCallback
(
error
)
{
...
...
@@ -82,14 +82,8 @@ export class VideoPlayerDemo {
let
fdPath
=
'
fd://
'
// path路径的码流可通过"hdc file send D:\xxx\H264_AAC.mp4 /data/app/el1/bundle/public/ohos.acts.multimedia.video.videoplayer/ohos.acts.multimedia.video.videoplayer/assets/entry/resources/rawfile" 命令,将其推送到设备上
let
path
=
'
/data/app/el1/bundle/public/ohos.acts.multimedia.video.videoplayer/ohos.acts.multimedia.video.videoplayer/assets/entry/resources/rawfile/H264_AAC.mp4
'
;
await
fileIO
.
open
(
path
).
then
((
fdNumber
)
=>
{
fdPath
=
fdPath
+
''
+
fdNumber
;
console
.
info
(
'
open fd success fd is
'
+
fdPath
);
},
(
err
)
=>
{
console
.
info
(
'
open fd failed err is
'
+
err
);
}).
catch
((
err
)
=>
{
console
.
info
(
'
open fd failed err is
'
+
err
);
});
let
file
=
await
fs
.
open
(
path
);
fdPath
=
fdPath
+
''
+
file
.
fd
;
// 调用createVideoPlayer接口返回videoPlayer实例对象
await
media
.
createVideoPlayer
().
then
((
video
)
=>
{
if
(
typeof
(
video
)
!=
'
undefined
'
)
{
...
...
@@ -180,7 +174,7 @@ export class VideoPlayerDemo {
```
js
import
media
from
'
@ohos.multimedia.media
'
import
f
ileIO
from
'
@ohos.fileio
'
import
f
s
from
'
@ohos.file.fs
'
export
class
VideoPlayerDemo
{
// 函数调用发生错误时用于上报错误信息
failureCallback
(
error
)
{
...
...
@@ -211,14 +205,8 @@ export class VideoPlayerDemo {
let
fdPath
=
'
fd://
'
// path路径的码流可通过"hdc file send D:\xxx\H264_AAC.mp4 /data/app/el1/bundle/public/ohos.acts.multimedia.video.videoplayer/ohos.acts.multimedia.video.videoplayer/assets/entry/resources/rawfile" 命令,将其推送到设备上
let
path
=
'
/data/app/el1/bundle/public/ohos.acts.multimedia.video.videoplayer/ohos.acts.multimedia.video.videoplayer/assets/entry/resources/rawfile/H264_AAC.mp4
'
;
await
fileIO
.
open
(
path
).
then
((
fdNumber
)
=>
{
fdPath
=
fdPath
+
''
+
fdNumber
;
console
.
info
(
'
open fd success fd is
'
+
fdPath
);
},
(
err
)
=>
{
console
.
info
(
'
open fd failed err is
'
+
err
);
}).
catch
((
err
)
=>
{
console
.
info
(
'
open fd failed err is
'
+
err
);
});
let
file
=
await
fs
.
open
(
path
);
fdPath
=
fdPath
+
''
+
file
.
fd
;
// 调用createVideoPlayer接口返回videoPlayer实例对象
await
media
.
createVideoPlayer
().
then
((
video
)
=>
{
if
(
typeof
(
video
)
!=
'
undefined
'
)
{
...
...
@@ -267,7 +255,7 @@ export class VideoPlayerDemo {
```
js
import
media
from
'
@ohos.multimedia.media
'
import
f
ileIO
from
'
@ohos.fileio
'
import
f
s
from
'
@ohos.file.fs
'
export
class
VideoPlayerDemo
{
// 函数调用发生错误时用于上报错误信息
failureCallback
(
error
)
{
...
...
@@ -299,14 +287,8 @@ export class VideoPlayerDemo {
// path路径的码流可通过"hdc file send D:\xxx\H264_AAC.mp4 /data/app/el1/bundle/public/ohos.acts.multimedia.video.videoplayer/ohos.acts.multimedia.video.videoplayer/assets/entry/resources/rawfile" 命令,将其推送到设备上
let
path
=
'
/data/app/el1/bundle/public/ohos.acts.multimedia.video.videoplayer/ohos.acts.multimedia.video.videoplayer/assets/entry/resources/rawfile/H264_AAC.mp4
'
;
let
nextPath
=
'
/data/app/el1/bundle/public/ohos.acts.multimedia.video.videoplayer/ohos.acts.multimedia.video.videoplayer/assets/entry/resources/rawfile/MP4_AAC.mp4
'
;
await
fileIO
.
open
(
path
).
then
((
fdNumber
)
=>
{
fdPath
=
fdPath
+
''
+
fdNumber
;
console
.
info
(
'
open fd success fd is
'
+
fdPath
);
},
(
err
)
=>
{
console
.
info
(
'
open fd failed err is
'
+
err
);
}).
catch
((
err
)
=>
{
console
.
info
(
'
open fd failed err is
'
+
err
);
});
let
file
=
await
fs
.
open
(
path
);
fdPath
=
fdPath
+
''
+
file
.
fd
;
// 调用createVideoPlayer接口返回videoPlayer实例对象
await
media
.
createVideoPlayer
().
then
((
video
)
=>
{
if
(
typeof
(
video
)
!=
'
undefined
'
)
{
...
...
@@ -341,14 +323,8 @@ export class VideoPlayerDemo {
// 获取下一个视频fd地址
fdPath
=
'
fd://
'
await
fileIO
.
open
(
nextPath
).
then
((
fdNumber
)
=>
{
fdPath
=
fdPath
+
''
+
fdNumber
;
console
.
info
(
'
open fd success fd is
'
+
fdPath
);
},
(
err
)
=>
{
console
.
info
(
'
open fd failed err is
'
+
err
);
}).
catch
((
err
)
=>
{
console
.
info
(
'
open fd failed err is
'
+
err
);
});
let
nextFile
=
await
fs
.
open
(
nextPath
);
fdPath
=
fdPath
+
''
+
nextFile
.
fd
;
// 设置第二个视频播放源
videoPlayer
.
url
=
fdPath
;
...
...
@@ -378,7 +354,7 @@ export class VideoPlayerDemo {
```
js
import
media
from
'
@ohos.multimedia.media
'
import
f
ileIO
from
'
@ohos.fileio
'
import
f
s
from
'
@ohos.file.fs
'
export
class
VideoPlayerDemo
{
// 函数调用发生错误时用于上报错误信息
failureCallback
(
error
)
{
...
...
@@ -409,14 +385,8 @@ export class VideoPlayerDemo {
let
fdPath
=
'
fd://
'
// path路径的码流可通过"hdc file send D:\xxx\H264_AAC.mp4 /data/app/el1/bundle/public/ohos.acts.multimedia.video.videoplayer/ohos.acts.multimedia.video.videoplayer/assets/entry/resources/rawfile" 命令,将其推送到设备上
let
path
=
'
/data/app/el1/bundle/public/ohos.acts.multimedia.video.videoplayer/ohos.acts.multimedia.video.videoplayer/assets/entry/resources/rawfile/H264_AAC.mp4
'
;
await
fileIO
.
open
(
path
).
then
((
fdNumber
)
=>
{
fdPath
=
fdPath
+
''
+
fdNumber
;
console
.
info
(
'
open fd success fd is
'
+
fdPath
);
},
(
err
)
=>
{
console
.
info
(
'
open fd failed err is
'
+
err
);
}).
catch
((
err
)
=>
{
console
.
info
(
'
open fd failed err is
'
+
err
);
});
let
file
=
await
fs
.
open
(
path
);
fdPath
=
fdPath
+
''
+
file
.
fd
;
// 调用createVideoPlayer接口返回videoPlayer实例对象
await
media
.
createVideoPlayer
().
then
((
video
)
=>
{
if
(
typeof
(
video
)
!=
'
undefined
'
)
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录