javascript - React native (Android) - 创建 URL.createObjectURL(blob)

标签 javascript android react-native

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

字幕是这样加载的:

const playlistItem = {
    ...
    tracks: [
        {
            file: 'https://myfakesite.org/subtitles.vtt',
            label: 'en'
        }
    ]
}

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

像这样:

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:

//Generate blob
var blob = new Blob([vttRaw], {
    type: "text/vtt; charset=utf-8"
});

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

在网络浏览器中可以运行,但在 react-native-android 中会导致错误。

Possible Unhandled Promise Rejection (id: 0):
Error: Cannot create URL for blob!

blob error

我认为问题是生成一个 blob url,有人知道我能做什么吗?

最佳答案

我在 Android 版 React Native 中遇到了这个问题。以下适用于 iOS 但不适用于 Android

URL.createObjectURL(blob)

尝试传递 base64 数据而不是 url,如 this post .

也许是这样的:

//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;
}

关于javascript - React native (Android) - 创建 URL.createObjectURL(blob),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65216756/

相关文章:

javascript - 使用通配符在 JavaScript 对象中搜索?

javascript - Scrapy从javascript脚本中提取数据

javascript - Python CGI 脚本拒绝包含数据 URI 的数据 (403)

android - @react-native-firebase/auth : app not authorized Error in signInWithPhoneNumber

android - 如何在 react 导航中获取当前路线名称?

javascript - 如何显示加载...直到整个向导加载到 jQuery-steps 插件中?

android - Paho Mqtt Android 客户端错误 : Invalid client handle, 非法参数异常(应用程序运行时随时随机出现)

android - Android 中 SoundPool 的大小限制是多少?

Android:如何将 Spinner 选择与 AutoCompleteTextView 连接

javascript - 在 TextInput React-Native 上获取光标位置