2009-11-04 12 views
6

Czy można utworzyć miniaturę wideo w języku C# (jak w pierwszej klatce)?Miniatura wideo C#

Mała aktualizacja: potrzebuję miniatury obrazu wideo FLV w C#, ponieważ używam Flexa do wyświetlania wideo. I tak, przydatne byłyby linki do niektórych bibliotek.

+0

Tak byłoby Krótka odpowiedź na swoje pytanie – sshow

Odpowiedz

7

mogę myśleć o dwóch opcjach wyłączyć mojej głowie:

  1. pomocą zewnętrznego narzędzia, jak ffmpeg, aby wygenerować miniaturki. Jest to prawdopodobnie najczęściej wdrażane rozwiązanie tego problemu.
  2. Analizowanie pliku FLV i wysyłanie pliku tylko do końca pierwszego I Frame. (Można znaleźć logikę parsowania w kodzie, który pozwala szukać w środku FLV przez znak czasu
+0

FFMPEG to jedyne rozwiązanie, jakie mogłem znaleźć. Istnieje kilka bibliotek .NET, które zapewniają zarządzane otoczenie wokół FFMPEG, ale nie mogłem znaleźć żadnej dokumentacji, jak z nich korzystać. Chciałbym usłyszeć, jakie rozwiązanie wymyślisz! –

+0

Po prostu wyskakuję do ffmpeg i analizuję dane wyjściowe. Działa to dobrze dla mnie i nie jest tak skomplikowane lub hacky, jak mogłoby się wydawać. Czytałem o C API dla ffmpeg, ale to wydaje się zbyt dużym wysiłkiem. –

4

Istnieją biblioteki Open Source, których można użyć do wykonania tej czynności. Zapoznaj się z OpenCVDotNet, zarządzanym opakowaniem .NET dla OpenCV, biblioteki "komputerowej wizji". Here's a link to a tutorial może się przydać.

+0

moje pierwsze wrażenie jest to, że obsługuje tylko avi ... i będę potrzebował wsparcia flv. Ale muszę to sprawdzić, żeby się upewnić. –

1

To działa.

ShellFile thumbNail = ShellFile.FromFilePath(<fullpath and filename>); 
Bitmap thumbSmall = thumbNail.Thumbnail.MediumBitmap; 
Bitmap thumbLarge = thumbNail.Thumbnail.LargeBitmap; 
videoThumb_Small.Images.Add(thumbSmall); 
videoThumb_Large.Images.Add(thumbLarge); 

gdzie „videoThumb _ ?????” = ImageList (gdzie kontrolować rozmiar obrazu, aby ponownie wyświetlić) Powolny jak diabli, szukając różnych formatów MIME, ale dość szybko z tych samych rodzajów potrzeb:..

using Microsoft.WindowsAPICodePack.Shell; 
using Microsoft.WindowsAPICodePack; 

i można dostać Microsoft.WindowsAPICodePack z pakietu Nuget z Tak samo jak w przypadku FFMpeg, Vlc.Dotnet lub aXMediaPlayer (WMP) wszystkie ssane tak długo, jak testowałem (Vlc nie działa nawet tak, jak powinien, FFmpeg potrzebuje jeszcze 500 milionów linii, zanim osiągniesz ten sam wynik i aXMediaPlayer, heh) poza tym rodzimym Windows.

przykład, jeśli używasz ListView z czymś takim nawet podpunktach:

for(int mememe = 0; mememe < stuff_counter; mememe++) 
{ 
listview1.Items.Add("strings", mememe).SubItems.Add("strings" + mememe.ToString()); 
} 

by następnie odczytać prawidłowy numer indeksu z ImageList

Powiązane problemy