【发布时间】:2015-02-21 04:34:38
【问题描述】:
我正在尝试保存一个视频,我已经成功捕获并放入我的VideoView,到我的 SD 卡。进行了大量研究,但我发现没有任何简单直接的方法可以解决我的问题。
我能够使用非常相似的代码将照片保存到 SD 卡(除了不是 Uri 参数,而是 Bitmap),所以我认为代码应该相似,但有一部分(我认为?)丢失,图像通常会在其参数中压缩图像,视频不压缩,所以我的代码 uriVideo.setOutputFile(video.getPath()); 中有一行是错误的(红色错误)。但这是需要发生一些事情才能使视频适合保存的地方。虽然这只是猜测。那就是照片线被压缩的地方。
然后在我的saveVideo() 方法完成后,我在代码的另一个位置对我的VideoView 调用此方法。
我错过了什么?谢谢...
// save your video to SD card
private void saveVideo(final Uri uriVideo){
// click the video to save it
mVideoView.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
boolean success = false;
String root = Environment.getExternalStoragePublicDirectory
(Environment.DIRECTORY_MOVIES).toString();
File myDir = new File(root + "/Saved iCute Videos");
myDir.mkdirs();
Random generator = new Random();
int n = 10000;
n = generator.nextInt(n);
String videoName = "Video-"+ n +".mp4";
File file = new File (myDir, videoName);
if (file.exists ()) file.delete ();
try {
FileOutputStream out = new FileOutputStream(file);
uriVideo.setOutputFile(video.getPath()); // WRONG
out.flush();
out.close();
success = true;
} catch (Exception e) {
e.printStackTrace();
}
if (success) {
Toast.makeText(getApplicationContext(), "Video saved!",
Toast.LENGTH_LONG).show();
} else {
Toast.makeText(getApplicationContext(),
"Error during video saving", Toast.LENGTH_LONG).show();
}
}
});
}
【问题讨论】:
-
你能从 VideoView 获取视频吗?
-
是的,它显示在
VideoView,但它没有保存在任何地方,所以当我杀死应用程序时它消失了。 -
从本地存储或使用网络播放 VideoView 中的视频?
-
它来自相机。一些代码,它只是使用 Android 相机捕获视频,并在我回到我的活动后立即播放。但是从那里开始,我试图通过单击它来保存它。
-
我在文档中唯一能找到的是“保存媒体文件”,但它并不完整。他们在这里创建了一个目录和一个文件名,但我不知道如何实际保存它。另外,所有视频都是
Uri吗?我不需要设置类型(mp4)或其他东西吗?只是不确定。 developer.android.com/guide/topics/media/…
标签: android android-sdcard android-file android-videoview