ビデオに大きく依存するアプリケーションがあり、MediaElement を使用してそれらを再現します。
ただし、外部フォルダーまたは内部フォルダーからビデオを取得するレイヤーを導入しました。したがって、私の内部フォルダーでは、次のようにビデオをロードしています。
private static async void
InitVideo(MediaElement mediaElement, string resourceName)
{
try {
Uri imageUri =
new Uri(string.Format("ms-appx:///{0}", resourceName),
UriKind.RelativeOrAbsolute);
StorageFile file =
await StorageFile.GetFileFromApplicationUriAsync(imageUri);
var stream =
await file.OpenAsync(Windows.Storage.FileAccessMode.Read);
mediaElement.SetSource(stream, file.ContentType);
}
catch (System.Exception ex)
{
Debug.WriteLine("Error loading video ({0})", resourceName);
Debug.WriteLine(ex.Message);
}
}
そして、私のXAMLには次のようなものがあります:
lextensions:MediaElementExtensions.MediaResource="video1.mov"
MediaResource は、変更時にこれを呼び出す添付プロパティです。
MediaElement mediaElement = sender as MediaElement;
if (mediaElement != null) {
mediaElement.Tag = args.NewValue; // pass the new resource name.
mediaElement.Loaded += LoadVideo;
}
MediaElement がロードされると、LoadVideo
が呼び出され、それが を呼び出しますInitVideo
。
これは多くの場合うまく機能します。ただし、まれに、これが機能しない場合があり、その理由はわかりません。H.264 コーデックの mov ファイルを使用しています。
一部の 人々がこの問題を抱えているのを見てきました。ただし、彼らの場合、ビデオをまったく表示できませんでした。そして、私はそれを行うことができます。実際、80 ~ 90% 以上の確率で機能します。