我正在尝试从 url/uri 保存视频,并将视频路径获取到设备中
我正在使用Xamarin.Forms,使用DependencyService来允许访问Android项目中的某些功能。
public string DownloadFile(string url)
{
string pathToNewFolder = System.IO.Path.Combine(Android.OS.Environment.ExternalStorageDirectory.AbsolutePath, folder);
Directory.CreateDirectory(pathToNewFolder);
try
{
WebClient webClient = new WebClient();
webClient.DownloadFileCompleted += new AsyncCompletedEventHandler(Completed);
string pathToNewFile = System.IO.Path.Combine(pathToNewFolder, System.IO.Path.GetFileName(url) + ".mp4");
webClient.DownloadFileAsync(new System.Uri(url), pathToNewFile);
}
catch (Exception ex)
{
if (OnFileDownloaded != null)
OnFileDownloaded.Invoke(this, new DownloadEventArgs(null,null,null,null,0));
}
return pathToNewFolder;
}
我下载了mp4格式的文件,但无法播放此视频
您可以使用软件包 Xam.Plugins.Android.VlcXamarin 来播放它
用法
LibVLCLibVLC mLibVLC = null;
MediaPlayer mMediaPlayer = null;
if(mLibVLC == null)
{
//Initialize VLC libs
mLibVLC = new LibVLCLibVLC(this);
mMediaPlayer = new MediaPlayer(mLibVLC);
}
//Create new media object
var m = new MediaLibVLC(mLibVLC, Android.Net.Uri.Parse( the filepath));
// Tell the media player to play the new Media.
mMediaPlayer.Media = m;
// Finally, play it!
mMediaPlayer.Play();
如果你想把文件保存到你的内部存储,你只需要修改你正在使用的这个基本路径:
string pathToNewFolder = System.IO.Path.Combine(Android.OS.Environment.ExternalStorageDirectory.AbsolutePath, folder);
您可以使用让您满意的System.Environment.SpecialFolder
值之一来代替ExternalStorageDirectory
:
System.Environment.SpecialFolder Path
ApplicationData INTERNAL_STORAGE/.config
Desktop INTERNAL_STORAGE/Desktop
LocalApplicationData INTERNAL_STORAGE/.local/share
MyDocuments INTERNAL_STORAGE
MyMusic INTERNAL_STORAGE/Music
MyPictures INTERNAL_STORAGE/Pictures
MyVideos INTERNAL_STORAGE/Videos
Personal INTERNAL_STORAGE
哪里INTERNAL_STORAGE = /data/user/0/com.companyname/files
来源: https://learn.microsoft.com/en-us/xamarin/android/platform/files/