我使用camera2 API和Google sample code来抓取视频。
当我尝试将更改输出位置保存在sdcard/MyApp/filename
而不是Android/data/my_package/filename
时,我遇到了一个问题。
以下是方法:
private File getVideoFile(Context context) {
// Not working, cause black preview
return new File(Environment.getExternalStorageDirectory().getPath() +
"/myApp/", "myVideo.mp4");
// Working
return new File(context.getExternalFilesDir(null), "myVideo.mp4");
}
所以,我的问题,为什么要在SD卡上保存视频导致"黑色预览"以及如何将视频保存在SD卡上?
谢谢!
编辑我要求的许可:
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.CAMERA"/>
答案 0 :(得分:0)
要在SD卡(辅助外部存储设备)上保存视频,请使用以下API:getExternalFilesDirs()。
此API将分别返回外部存储和辅助外部存储的路径数组。第二条路径是SD卡路径。有些设备也可以有2张SD卡,所以最好检查一下是不是SD卡?#34;&#34; sdcard&#34;返回路径中的关键字。要了解各种存储之间的差异,请查看我的this答案。
答案 1 :(得分:0)
最后我找到了解决方案。
我不知道为什么会这样,但当目标目录不存在时预览为空。
我将视频保存在尚未存在的myApp
目录中,这导致预览为空白。
解决方案是首先创建目录,而不是保存视频。代码应该是这样的:
private File getVideoFile(Context context) {
File folder = new File (Environment.getExternalStorageDirectory().getPath() + "/myApp/");
folder.mkdirs();
return new File(Environment.getExternalStorageDirectory().getPath() + "/myApp/", "myVideo.mp4");
}