微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Android读取视频OutOfMemoryError

如何解决Android读取视频OutOfMemoryError

我尝试在Xamarin android中读取视频文件,以便将其转换为string64。

使用很小的文件(3秒)我可以成功,但是如果文件很大(1分钟),我会出现OutOfMemoryError。

我尝试在清单文件添加android:largeHeap =“ true” android:hardwareAccelerated =“ false”,并修改我的代码以读取视频文件,但仍然是问题。

在OOM之前无法分配134217744字节的分配,其中包含25165824可用字节和126MB,最大允许占用空间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,readNum);
}

byte[] bytes = bos.ToByteArray();
string encoded = Base64.EncodetoString(bytes,0);
return encoded;

您是否有一个想法来解决此问题或拆分视频文件而不完全加载它?

谢谢

解决方法

您真的必须先将其加载到内存中吗?直接从视频文件路径播放

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。