android - android读取视频OutOfMemoryError
问题描述
我尝试在 Xamarin android 中读取视频文件,以便将其转换为 string64。
我在非常小的文件(3 秒)上取得了成功,但如果文件更大(1 分钟),我有 OutOfMemoryError。
我尝试在清单文件中添加 android:largeHeap="true" android:hardwareAccelerated="false" 并修改我的代码以读取视频文件,但仍然存在问题。
未能分配 134217744 字节分配,其中 25165824 空闲字节和 126MB 直到 OOM,最大允许占用空间 94159504,增长限制 201326592。
我有什么尝试:
byte[] bytes = await System.IO.File.ReadAllBytesAsync(file.AbsolutePath);
string encoded = Base64.EncodeToString(bytes, 0);
return encoded;
using (var stream = new FileStream(file.AbsolutePath, FileMode.Open, FileAccess.Read))
{
//var b = ReadToEnd(stream);
//encoded = Base64.EncodeToString(b, 0);
//return encoded;
byte[] bytes;
using (var memoryStream = new MemoryStream())
{
stream.CopyTo(memoryStream);
bytes = memoryStream.ToArray();
}
string base64 = Convert.ToBase64String(bytes);
return base64;
}
FileInputStream fis = new FileInputStream(file.AbsolutePath);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
byte[] b = new byte[1024];
for (int readNum; (readNum = fis.Read(b)) != -1;)
{
bos.Write(b, 0, readNum);
}
byte[] bytes = bos.ToByteArray();
string encoded = Base64.EncodeToString(bytes, 0);
return encoded;
您是否有想法解决此问题或在不完全加载的情况下拆分视频文件?
谢谢
解决方案
您真的必须先将其加载到内存中吗?直接从视频文件路径播放
推荐阅读
- rest - 在 quickbooks payment API Apps Script 上进行 POST 时总是收到错误“requestId is required”
- reactjs - 进程 'command 'npx'' 以非零退出值 1 结束
- java - 通过连接池连接到数据库
- amazon-web-services - 上传单个 S3 对象的吞吐量限制
- java - ReactJs 从后端实现函数 saveAll
- linux - 单个 shell 脚本文件中的多个 CURL
- c# - Sage 300 V2020开发环境
- javascript - 如何在点击事件时在 amchart 饼图切片上调用 setState 或函数
- python - 使用 Plotly 在热图的单元格上添加矩形补丁
- php - 存储 Autodesk-Forge 刷新令牌的最佳方式