视频从iOS设备上传为图片,如何正确上传

Posted

技术标签:

【中文标题】视频从iOS设备上传为图片,如何正确上传【英文标题】:Video is uploaded as an image from iOS device, how to upload properly 【发布时间】:2019-08-29 13:32:53 【问题描述】:

我有一个应用程序可以从移动图库中获取图像/视频,然后将其中一个上传到服务器, 这是我采取的步骤,在 android 上运行良好:

1-从移动存储中获取数据:

MediaLibrary.getAssetsAsync(
  first: 20,
  mediaType: [MediaLibrary.MediaType.video, MediaLibrary.MediaType.photo]
)

2-上传到服务器:

formData.append('images[]', 
    uri: localUri,  
    name: isVideo ? 'untitled.mp4'  : 'untitled',//for testing
    type: isVideo ? 'video/mp4' : 'image/jpeg'
)

axios.post(`url`, formData, headers: headers,timeout:999999)

问题是视频作为图像上传(仅视频的第一帧),虽然它在 Android 上成功上传,但问题仅在 iOS 上存在。

检索到的文件的uri如下: assets-library://asset/asset.MP4?id=xxx&ext=MP4

快速笔记:

1 - 使用 Expo 中的 <Video> 组件可以在本地正常播放视频

2 - 我尝试使用 CameraRoll API,但它给出了相同的结果,并且有点错误

任何帮助将不胜感激

【问题讨论】:

【参考方案1】:

您可以更新到 expo SDK 36,您将能够通过使用 MediaLibrary.getAssetInfoAsync 返回的 localUri 来解决此问题

例如

// get asset id like B84E8479-475C-4727-A4A4-B77AA9980897/L0/001
const info = await MediaLibrary.getAssetInfoAsync(asset.id)
const uri = info.localUri // use this for upload

在 github 上引用此评论。 https://github.com/expo/expo/issues/3177#issuecomment-510096711

【讨论】:

我在 expo SDK 40 上遇到了同样的问题,这解决了我的问题。谢谢!

以上是关于视频从iOS设备上传为图片,如何正确上传的主要内容,如果未能解决你的问题,请参考以下文章

IOS设备上传图片,使用ImageIO.write 图片翻转纠正(JAVA)

IOS设备上Flutter firebase上传照片问题

从android上传的音频文件在ios中不起作用

如何使用 swift 从 iOS 设备上传文件(到 REDCap)

在 android 设备上捕获视频并在 iOS 设备上播放

iOS 4.3 上传视频时崩溃