Używam OpenCV 2.2.0, skompilowany na Ubuntu ze źródła. Mogę potwierdzić, że podany kod źródłowy działa zgodnie z oczekiwaniami. Więc problem jest gdzie indziej.
nie mogę odtworzyć problemu przy użyciu MEncodera (instalacji jest to trochę problem na moim komputerze), więc użyłem ffmpeg
zawinąć surowego wideo w kontenerze AVI:
ffmpeg -s cif -i ~/local/sample-video/foreman.yuv -vcodec copy foreman.avi
(majster. yuv to standardowa sekwencja obrazów CIF, którą można znaleźć w Internecie, jeśli: look around).
Uruchamianie AVI z ffmpeg
przez źródła daje to:
[email protected]:~/Desktop/stackoverflow$ python ocv_video.py foreman.avi
<Capture 0xa71120>
352.0
288.0
<iplimage(nChannels=3 width=352 height=288 widthStep=1056)>
<iplimage(nChannels=3 width=352 height=288 widthStep=1056)>
...
Więc wszystko działa zgodnie z oczekiwaniami. Co należy sprawdzić:
- Czy występują błędy na standardowym wyjściu/standardowy błąd? OpenCV używa bibliotek
ffmpeg
do odczytywania plików wideo, więc szukaj wiadomości informacyjnych. Oto co się dzieje, jeśli starają się grać RAW pliku wideo bez pojemnika (brzmi podobnie do Twojego problemu):
błąd:
[email protected]:~/Desktop/stackoverflow$ python ocv_video.py foreman.yuv
[IMGUTILS @ 0x7fff37c8d040] Picture size 0x0 is invalid
[IMGUTILS @ 0x7fff37c8cf20] Picture size 0x0 is invalid
[rawvideo @ 0x19e65c0] Could not find codec parameters (Video: rawvideo, yuv420p)
[rawvideo @ 0x19e65c0] Estimating duration from bitrate, this may be inaccurate
GStreamer Plugin: Embedded video playback halted; module decodebin20 reported: Your GStreamer installation is missing a plug-in.
<Capture 0x19e3130>
0.0
0.0
- Upewnij się, że plik AVI rzeczywiście zawiera wymaganych informacji aby odtworzyć wideo. Co najmniej powinny to być wymiary ramy. Filmy RAW zazwyczaj nie zawierają żadnych informacji poza faktycznymi danymi pikseli, więc znają wymiary ramki i FPS. Możesz się domyślić, że FPS nadal wyświetla wideo, ale jeśli uzyskasz błędne wymiary, wideo będzie niemożliwe do oglądania.
- Upewnij się, że plik AVI, który próbujesz otworzyć, jest faktycznie możliwy do odtworzenia. Wypróbuj
ffplay file.avi
- jeśli to się nie powiedzie, problem prawdopodobnie dotyczy pliku. Spróbuj użyć transkrypcji ffmpeg
zamiast mencoder
.
- Upewnij się, że możesz odtwarzać inne filmy, używając tej samej metody, co powyżej. Jeśli nie możesz, to prawdopodobnie twoja instalacja
ffmpeg
jest zepsuta.
To jest dokładnie to, czego szukałem.To działało idealnie dla mnie w Ubuntu 10.04 przy użyciu pakietów Opencv 2.1. Dzięki! – Cerin