视频从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)