不播放视频如何获取视频时长?

4
我正在使用MediaTimelineMediaClock来控制WMV视频的播放。
Timeline = new MediaTimeline(new Uri(VideoFileName));
Clock = Timeline.CreateClock(true) as MediaClock;

当我查看时,值被设置为,尚未包含持续时间。
当我将分配给并开始播放视频时,现在可以看到存在并且正常。
除了将时钟分配给媒体元素并播放之外,是否有其他方法可以获取视频持续时间?
是否有一种方法可以在不使用媒体元素的情况下获得持续时间(这将是最好的)?
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;
        }

1
在Win Rt应用程序或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;

获取视频文件时长的最佳方法


0
检查 HasTimeSpan 属性是否存在
private void Element_MediaOpened1(object sender, RoutedEventArgs e)
        {
            if (mediaElement_1.NaturalDuration.HasTimeSpan)
                timelineSlider.Maximum = mediaElement_1.NaturalDuration.TimeSpan.TotalSeconds;
        }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接