首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >React原生(安卓)-创建URL.createObjectURL(blob)

React原生(安卓)-创建URL.createObjectURL(blob)
EN

Stack Overflow用户
提问于 2020-12-09 20:26:12
回答 1查看 357关注 0票数 1

我正在尝试创建一个blob url使用字符串作为JwPlayer字幕的文件。

字幕加载方式如下:

代码语言:javascript
复制
const playlistItem = {
    ...
    tracks: [
        {
            file: 'https://myfakesite.org/subtitles.vtt',
            label: 'en'
        }
    ]
}

因此,因为jwplayer不接受我的源代码(subtitles.ass),所以我将.ass转换为字符串形式的.vtt结果。

如下所示:

代码语言:javascript
复制
var vttRaw = `WEBVTT

00:00:25.520 --> 00:00:29.250
Naquele dia,
a humanidade foi lembrada...

00:00:35.110 --> 00:00:38.180
do terror de estar à mercê deles`;

因为jwplayer需要一个url,所以我将这个字符串转换为blob url:

代码语言:javascript
复制
//Generate blob
var blob = new Blob([vttRaw], {
    type: "text/vtt; charset=utf-8"
});

//Generate url
var vtt_url = URL.createObjectURL(blob) + "#.vtt";

在web浏览器中工作,但在react-native-android中会导致错误。

代码语言:javascript
复制
Possible Unhandled Promise Rejection (id: 0):
Error: Cannot create URL for blob!

blob error

我认为问题在于生成一个blob url,谁知道我能做什么?

EN

回答 1

Stack Overflow用户

发布于 2021-02-02 23:43:59

我在React Native for Android中遇到了这个问题。以下代码在iOS中有效,但在安卓中不起作用

代码语言:javascript
复制
URL.createObjectURL(blob)

尝试传递base64数据,而不是像this post中那样传递url。

可能是这样的:

代码语言:javascript
复制
//Generate blob
var blob = new Blob([vttRaw], {
    type: "text/vtt; charset=utf-8"
});

const fileReaderInstance = new FileReader();
fileReaderInstance.readAsDataURL(blob);
fileReaderInstance.onload = () => {
    base64 = fileReaderInstance.result;
    vtt_data = base64;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65216756

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档