Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
wychl
uni-app
提交
8c2eee57
U
uni-app
项目概览
wychl
/
uni-app
与 Fork 源项目一致
Fork自
DCloud / uni-app
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
U
uni-app
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
8c2eee57
编写于
3月 23, 2021
作者:
Q
qiang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feat(h5): uni.getVideoInfo
上级
20e05c16
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
57 addition
and
1 deletion
+57
-1
src/platforms/h5/helpers/file.js
src/platforms/h5/helpers/file.js
+5
-1
src/platforms/h5/service/api/media/get-video-info.js
src/platforms/h5/service/api/media/get-video-info.js
+52
-0
未找到文件。
src/platforms/h5/helpers/file.js
浏览文件 @
8c2eee57
...
...
@@ -9,9 +9,10 @@ const files = {}
/**
* 从url读取File
* @param {string} url
* @param {boolean} local
* @param {Promise}
*/
export
function
urlToFile
(
url
)
{
export
function
urlToFile
(
url
,
local
)
{
var
file
=
files
[
url
]
if
(
file
)
{
return
Promise
.
resolve
(
file
)
...
...
@@ -19,6 +20,9 @@ export function urlToFile (url) {
if
(
/^data:
[
a-z-
]
+
\/[
a-z-
]
+;base64,/
.
test
(
url
))
{
return
Promise
.
resolve
(
base64ToFile
(
url
))
}
if
(
local
)
{
return
Promise
.
reject
(
new
Error
(
'
not find
'
))
}
return
new
Promise
((
resolve
,
reject
)
=>
{
var
xhr
=
new
XMLHttpRequest
()
xhr
.
open
(
'
GET
'
,
url
,
true
)
...
...
src/platforms/h5/service/api/media/get-video-info.js
0 → 100644
浏览文件 @
8c2eee57
import
{
urlToFile
}
from
'
uni-platform/helpers/file
'
export
function
getVideoInfo
({
src
},
callbackId
)
{
const
{
invokeCallbackHandler
:
invoke
}
=
UniServiceJSBridge
urlToFile
(
src
,
true
).
then
(
file
=>
{
return
file
}).
catch
(()
=>
{
return
{}
}).
then
(
file
=>
{
const
result
=
file
.
size
?
{
size
:
file
.
size
,
errMsg
:
'
getVideoInfo:ok
'
}
:
{
errMsg
:
'
getVideoInfo:fail
'
}
const
video
=
document
.
createElement
(
'
video
'
)
if
(
video
.
onloadedmetadata
!==
undefined
)
{
// 部分浏览器(如微信内置浏览器)未播放无法触发loadedmetadata事件
const
handle
=
setTimeout
(()
=>
{
video
.
onloadedmetadata
=
null
video
.
onerror
=
null
invoke
(
callbackId
,
result
)
},
src
.
startsWith
(
'
data:
'
)
||
src
.
startsWith
(
'
blob:
'
)
?
300
:
3000
)
// 尝试获取视频的宽高信息
video
.
onloadedmetadata
=
function
()
{
clearTimeout
(
handle
)
video
.
onerror
=
null
invoke
(
callbackId
,
Object
.
assign
(
result
,
{
size
:
file
.
size
,
duration
:
video
.
duration
||
0
,
width
:
video
.
videoWidth
||
0
,
height
:
video
.
videoHeight
||
0
,
errMsg
:
'
getVideoInfo:ok
'
}))
}
video
.
onerror
=
function
()
{
clearTimeout
(
handle
)
video
.
onloadedmetadata
=
null
invoke
(
callbackId
,
result
)
}
video
.
src
=
src
}
else
{
invoke
(
callbackId
,
result
)
}
})
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录