2012-05-16 2 views
2

Я использую MediaTimeline и MediaClock для управления воспроизведением видео в формате WMV.Получить продолжительность видео без игры?

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

Когда я смотрю на Clock.NaturalDuration, значение устанавливается в Automatic и не содержат длительность TimeSpan еще.

Когда я назначаю Clock в MediaElement, и начнется воспроизведение видео, теперь я могу видеть NaturalDuration.TimeSpan и ОК.

Есть ли способ получить продолжительность видео, кроме назначения часов для элемента мультимедиа и воспроизведения?

Есть ли способ получить продолжительность даже без использования медиа-элемента (это было бы лучше)?

ответ

5

Я имел подобную необходимость проверить длину видео, так что я прочитал, что это свойство доступно, когда 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; 
     } 
0

Проверьте свойство HasTimeSpan чтобы убедиться, что она существует

private void Element_MediaOpened1(object sender, RoutedEventArgs e) 
     { 
      if (mediaElement_1.NaturalDuration.HasTimeSpan) 
       timelineSlider.Maximum = mediaElement_1.NaturalDuration.TimeSpan.TotalSeconds; 
     } 
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; 

Лучший способ получить продолжительность видеофайла

Смежные вопросы