我正在使用MediaTimeline
和MediaClock
来控制WMV视频播放。
Timeline = new MediaTimeline(new Uri(VideoFileName));
Clock = Timeline.CreateClock(true) as MediaClock;
当我查看Clock.NaturalDuration
时,值设置为Automatic
而不是TimeSpan
包含持续时间Clock
。
当我将MediaElement
分配给NaturalDuration.TimeSpan
并开始播放视频时,我现在可以看到{{1}}存在并且正常。
除了为媒体元素分配时钟和播放之外,有没有办法获得视频时长?
即使不使用媒体元素,有没有办法获得持续时间(这将是最好的)?
答案 0 :(得分:6)
我有类似的需要检查视频长度,所以我读到这个属性在引发MediaOpened事件时可用,否则设置为自动 - 读取此 http://msdn.microsoft.com/en-us/library/system.windows.controls.mediaelement.naturalduration(v=vs.95).aspx
media.MediaOpened += new System.Windows.RoutedEventHandler(media_MediaOpened);
media.LoadedBehavior = MediaState.Manual;
media.UnloadedBehavior = MediaState.Manual;
media.Play();
void media_MediaOpened( object sender, System.Windows.RoutedEventArgs e )
{
progress.Maximum = (int)media.NaturalDuration.TimeSpan.TotalSeconds;
timer.Start();
isPlaying = true;
}
答案 1 :(得分:0)
检查HasTimeSpan属性以确保它存在
private void Element_MediaOpened1(object sender, RoutedEventArgs e)
{
if (mediaElement_1.NaturalDuration.HasTimeSpan)
timelineSlider.Maximum = mediaElement_1.NaturalDuration.TimeSpan.TotalSeconds;
}
答案 2 :(得分:0)
在Win Rt App或Metro C#中获取视频文件的持续时间
string path = ApplicationData.Current.LocalFolder.Path;
StorageFile videoFile =
await StorageFile.GetFileFromPathAsync(presentationItem.Slide_path_local);
Windows.Storage.FileProperties.VideoProperties x =
await videoFile.Properties.GetVideoPropertiesAsync();
Duration videoDuration = x.Duration;
获取视频文件持续时间的最佳方法