【发布时间】:2015-10-07 12:41:04
【问题描述】:
我有一个相当奇怪的问题。我正在使用 Xamarin 框架编写一个 Android 应用程序,并且我还有一个同样用 Xamarin 编写的同一应用程序的 iOS 版本。在应用程序中,用户可以将照片和视频发送给他们的朋友,他们的朋友可能在 iOS 或 Android 上。这一切都很好,在 iPhone 上拍摄的视频可以在 Android 设备上播放,反之亦然。
我遇到的问题是,当我尝试以编程方式将视频保存到 Android 库时,该视频无法在库中播放。看来它自己的视频数据实际上是被复制的,但视频不知何故无法播放。
我的视频使用 H.264 编解码器编码为 mp4 格式。我相信 Android 完全支持这一点,就像我说的那样,当通过应用中的 VideoView 播放视频时,视频播放得很好。
我用来将视频复制到图库的代码如下。有谁知道我在这里做错了什么?
public static void SaveVideoToGallery(Activity activity, String filePath) {
// get filename from path
int idx = filePath.LastIndexOf("/") + 1;
String name = filePath.Substring(idx, filePath.Length - idx);
// set in/out files
File inFile = new File(filePath);
File outDir = Android.OS.Environment.GetExternalStoragePublicDirectory(Android.OS.Environment.DirectoryMovies);
File outFile = new File(outDir, name);
// Make sure the Pictures directory exists.
outDir.Mkdirs();
// save the file to disc
InputStream iStream = new FileInputStream(inFile);
OutputStream oStream = new FileOutputStream(outFile);
byte[]data = new byte[iStream.Available()];
iStream.Read();
oStream.Write(data);
iStream.Close();
oStream.Close();
// Tell the media scanner about the new file so that it is
// immediately available to the user.
MediaScannerConnection.ScanFile(
activity.ApplicationContext,
new String[] { outFile.ToString() },
null,
null);
}
注意:我知道这一切都在 C# 中,但请记住,Xamarin 框架所做的只是为原生 Android 方法提供 API。我使用的一切都是 Java 或 Android 支持的类/函数。
谢谢!
【问题讨论】:
标签: android xamarin xamarin.ios