Android 媒体记录器setMaxFileSize问题
录制视频时,我在尝试设置最大文件大小时遇到问题。Android 媒体记录器setMaxFileSize问题,android,video,record,Android,Video,Record,录制视频时,我在尝试设置最大文件大小时遇到问题。recorder.setMaxFileSize(long filesize,以字节为单位)的文档说明了参数的长变量类型。我有一个方法返回长值的空闲空间。当我尝试将这个长变量设置为参数时,每次都会失败 自由空间法 public long freeSpace(){ StatFs stat = new StatFs(Environment.getExternalStorageDirectory().getPath()); long free = (lon
recorder.setMaxFileSize(long filesize,以字节为单位)
的文档说明了参数的长变量类型。我有一个方法返回长值的空闲空间。当我尝试将这个长变量设置为参数时,每次都会失败
自由空间法
public long freeSpace(){
StatFs stat = new StatFs(Environment.getExternalStorageDirectory().getPath());
long free = (long)stat.getBlockSize() *(long)stat.getBlockCount();
Log.w("FREESPACE METHOD", "Free space on SD card: "+free);
return free;
}
摘自媒体录制器方法
long spaceFree = freeSpace();
recorder.setblahblah
recorder.setMaxFileSize(spaceFree); //Fails right here.
Logcat
05-31 00:30:28.201: ERROR/AndroidRuntime(17697): Caused by: java.lang.RuntimeException: setMaxFileSize failed.
但是如果是这样做recorder.setMaxFileSize(5000000L)代码>它可以工作
我缺少什么明显的东西?使用getAvailableBlocks()
而不是getBlockCount()
。看起来您得到的是SD卡的总大小,而不是可用空间。使用getAvailableBlocks()
而不是getBlockCount()
。看起来您得到的是SD卡的总大小,而不是可用空间。我找到了答案。我忘了FAT文件系统的最大文件大小为4GB。因此,如果你像现在许多用户一样使用大型卡,可能会有超过4GB的可用空间。这是一个文件系统限制
这上面还有另一个堆栈溢出的答案我找到了答案。我忘了FAT文件系统的最大文件大小为4GB。因此,如果你像现在许多用户一样使用大型卡,可能会有超过4GB的可用空间。这是一个文件系统限制
这上面还有另一个堆栈溢出的答案您是正确的。这将变量固定为自由空间。返回的值为29641244672,在长值范围内。它仍然失败。您可能在FAT32系统上遇到了4GB文件大小限制问题。我不知道是否有一种支持Android的好方法,但是如果你不需要比这更大的东西,试着将其设置在4GB以下,看看是否有效。我的解决方案是检查可用空间,将其与最大文件大小(4000000000)进行比较,然后发送较小的文件。你是正确的。这将变量固定为自由空间。返回的值为29641244672,在长值范围内。它仍然失败。您可能在FAT32系统上遇到了4GB文件大小限制问题。我不知道是否有一种支持Android的好方法,但是如果你不需要比这更大的东西,试着将它设置在4GB以下,看看是否有效。我的解决方案是检查可用空间,将其与最大文件大小(4000000000)进行比较,然后发送较小的文件。