3

我正在使用MediaTimelineMediaClock控制 WMV 视频播放。

Timeline = new MediaTimeline(new Uri(VideoFileName));
Clock = Timeline.CreateClock(true) as MediaClock;

当我查看时Clock.NaturalDuration,值设置为Automatic并且不包含持续时间TimeSpan

当我分配ClockMediaElement并开始播放视频时,我现在可以看到NaturalDuration.TimeSpan它存在并且可以。

除了将时钟分配给媒体元素并播放之外,还有其他方法可以获得视频持续时间吗?

即使不使用媒体元素,有没有办法获得持续时间(这将是最好的)?

4

3 回答 3

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;
        }
于 2012-06-17T21:42:10.903 回答
1

在 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;

获取视频文件持续时间的最佳方法

于 2014-08-27T09:04:56.647 回答
0

检查 HasTimeSpan 属性以确保它存在

private void Element_MediaOpened1(object sender, RoutedEventArgs e)
        {
            if (mediaElement_1.NaturalDuration.HasTimeSpan)
                timelineSlider.Maximum = mediaElement_1.NaturalDuration.TimeSpan.TotalSeconds;
        }
于 2013-11-17T17:47:57.190 回答