如何使用 expo(文件系统)将视频转换为 base64
Posted
技术标签:
【中文标题】如何使用 expo(文件系统)将视频转换为 base64【英文标题】:How to convert a video into base64 using expo(Filesystem) 【发布时间】:2021-12-10 09:54:02 【问题描述】:我正在尝试向 cloudinary 发送视频,我似乎有一些类似的问题,但没有人回答我的问题。如何使用“Filesystem.readAsStringAsync”转换我的视频,以便将其发送到 cloudinary。这是我的一些代码。
let pickerResult = await ImagePicker.launchImageLibraryAsync(
allowsEditing: true,
aspect: [4, 3],
base64: true,
mediaTypes: ImagePicker.MediaTypeOptions.Videos,
);
if (pickerResult.cancelled === true)
return;
const base64Img
=`data:video/mp4;base64,$FileSystem.readAsStringAsync(pickerResult.uriencoding:
'base64')`;
let data =
"file": base64Img,
"upload_preset": "******",
const r = await fetch(CLOUDINARY_URL,
body: data,
method: 'POST',
)
const datal = await r.json()
setVideo(datal.secure_url); ;
我知道这不是正确的使用方法,因为它只是不断返回一个空字符串或 null,如果您需要更多信息,请告诉我如何解决这个问题
【问题讨论】:
您能确保 CLOUDINARY_URL 变量设置正确吗?即 -https://api.cloudinary.com/v1_1/<cloud name>/<resource_type>/upload
根据this。通常,如果出现问题,Cloudinary 会以错误详细信息进行响应。
【参考方案1】:
base64
字符串读取文件的方式不对。
按照以下方式进行。
let pickerResult = await ImagePicker.launchImageLibraryAsync(
allowsEditing: true,
aspect: [4, 3],
base64: true,
mediaTypes: ImagePicker.MediaTypeOptions.Videos,
);
if (pickerResult.cancelled === true)
return;
const fsRead = await FileSystem.readAsStringAsync(pickerResult.uri,
encoding: "base64",
);
const base64Img = `data:video/mp4;base64,$fsRead`;
// This looks like data:video/mp4;base64,AAAAIGZ0eXBpc29tAAACAGlzb21pc28yYXZjMW1wNDEAADGUbW9vdgAAAGxtdmhkAAAAAAAAAAAAAA
let data =
file: base64Img,
upload_preset: "******",
;
const r = await fetch(CLOUDINARY_URL,
body: data,
method: "POST",
);
const datal = await r.json();
setVideo(datal.secure_url);
【讨论】:
感谢我在半路将其转换为 base64,但它还没有发送到 cloudinary 您是否收到任何错误,如果有,是什么错误?另外,您将 CLOUDINARY_URL 定义为什么?如果包含,请确保不要分享您的 api_secret。 不行,我只需要创建一个加载组件……因为 cloudinary 返回数据需要一点时间以上是关于如何使用 expo(文件系统)将视频转换为 base64的主要内容,如果未能解决你的问题,请参考以下文章
React Native Expo - 文件系统 readAsStringAsync 字节分配失败(内存不足)
如何使用 React Native App 录制音频和视频(没有 Expo)
如何在 expo react native 中使用 sqlite 文件
如何通过gstreamer将pcap转换为带有视频和音频的avi文件?