2012-11-24 17 views
5

szukam biblioteki wideo na Qt 4 (C++/Windows), który ma:Qt C++ biblioteki wideo

1) Podstawowe odtwarzanie wideo funkcjonalność

Należy odtworzyć wszystkie popularne formaty wideo takie jak DVD VOB i MP4/MKV/AVI (h264, xvid, divx). Powinien także być w stanie automatycznie usunąć przeplot wideo i wyświetlić go w proporcjach ekranu.

2) Kadrowanie

Należy mieć podstawową funkcjonalność do usuwania czarnych pasków (użytkownik dostarczane argumentów).

3) Migawki

Należy mieć funkcjonalność robienie zdjęć w pamięci.

4) klatka po klatce poszukiwania

Należy mieć podstawową funkcjonalność wykonania poszukiwania klatka po klatce, np prevFrame(), nextFrame(), jumpTo (frame) i getNumFrames().


Próbowałem następujących iz tego co udało mi się znaleźć funkcjonalność one wspierać:

Qt Phonom:

  1. Tak. Odtwarza wszystkie potrzebne formaty i wyświetla je poprawnie.
  2. Nr
  3. Nie. Nie zaimplementowany (zwraca pusty obraz).
  4. nr

QtFFmpegWrapper:

  1. częściowa. Nie usuwa przeplotu płyt DVD VOB. Nie wyświetla DVD VOB w DAR.
  2. Nie.
  3. Tak.
  4. Częściowa. Złamany za MKV (h264).

Qt VLC:

  1. Tak. Odtwarza wszystkie potrzebne formaty i wyświetla je poprawnie.
  2. Tak. Nie próbowałem, jeśli to działa.
  3. Częściowa. Tylko na dysku. edycja: QPixmap :: grabWindow (player-> videoWidget() -> winId()) działa.
  4. Nie. Tylko przez milisekundy.

Teraz patrzę na QVision, która wydaje się mieć wszystkie te funkcje z wyjątkiem przycinania. Może wdrożenie upraw nie jest takie trudne. Ale zastanawiam się, czy są jakieś inne biblioteki, które powinienem zaglądać? A może coś przeoczyłem i są one możliwe dzięki jednej z tych bibliotek. Dzięki.

+2

Ramka tak naprawdę nie istnieje w skompresowanym wideo. Obliczanie z milisekundy offsetu będzie naprawdę łatwe, gdy * ty * przypiszesz szybkość klatek. – CapelliC

+0

@CapelliC * "Ramka tak naprawdę nie istnieje w skompresowanym wideo" * ** jeśli ** metoda wykorzystuje kompresję międzyramkową, zamiast tylko [intra-frame] (http://en.wikipedia.org/wiki/Intra-frame) – HostileFork

+0

"Poszukiwanie klatka po klatce", szczególnie prevFrame() nie jest możliwe we wszystkich sekwencjach wideo. Jest to dobre dla ramek wewnątrzramkowych (ramek I), ale w większości bibliotek jest to trudne lub niemożliwe dla ramek P lub B (zależności ramek). (chyba że sam stworzysz własną pamięć podręczną, ale problem z wielkością pamięci wystąpi, jeśli pamięć podręczna jest zbyt duża) – Eric

Odpowiedz

0

Możesz rozważyć Movie Player Gold SDK ActiveX 3.6 z ViscomSoft. Nie widzę przycinania wspomnianego na ich stronie, ale migawki pamięci i kroki klatka po klatce należą do obsługiwanych funkcji.

Użyłem ich SDK VideoEdit i Screen2Video w oprogramowaniu Windows Qt, działało całkiem dobrze.