我有一个应用程序,可以从相机或图库中获取视频并将其转换为 Base64 数据,并将该数据发送到服务器,但问题是每当我转换 Base64 数据时,videodata 变量中的数据都不是正确的。为此我使用了下面的代码:
FileInputStream objFileIS = null;
try
{
System.out.println("file = >>>> <<<<<" + selectedImagePath);
objFileIS = new FileInputStream(selectedImagePath);
}
catch (FileNotFoundException e)
{
e.printStackTrace();
}
ByteArrayOutputStream objByteArrayOS = new ByteArrayOutputStream();
byte[] byteBufferString = new byte[1024];
try
{
for (int readNum; (readNum = objFileIS.read(byteBufferString)) != -1;)
{
objByteArrayOS.write(byteBufferString, 0, readNum);
System.out.println("read " + readNum + " bytes,");
}
}
catch (IOException e)
{
e.printStackTrace();
}
videodata = Base64.encodeToString(byteBufferString, Base64.DEFAULT);
Log.d("VideoData**> " , videodata);
请正确填写...
当您编码时byteBufferString
,您仅对读取的最后一个数据块进行编码。您应该对整个内容进行编码ByteArrayOutputStream
。您可以使用以下代码来完成此操作:
videodata = Base64.encodeToString(objByteArrayOS.toByteArray(), Base64.DEFAULT);
然而,这有可能会引发OutOfMemoryError
如果视频尺寸很大。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)