9

Próbuję uzyskać reprezentatywne klatki wideo, aby usunąć zbędne ramki, które mogą pojawić się w filmie. To jest to, czego używam, aby uzyskać ramki.Zmiana sceny/wykrywanie strzału/wyodrębnianie obrazu za pomocą ffmpeg z wideo

./ffmpeg -i video.mp4 -vf select="eq(pict_type\,PICT_TYPE_I)" -vsync 2 -s 320x240 thumb-%02d.png

Próbowałem również

./ffmpeg -i video.mp4 -f image2 -vf "select=gt(scene\,.4)" -vsync vfr thumb%04d.png

Główną kwestią jest to plama. Jeśli po prostu próbuję klatek co 5 sekund, nie widzę żadnego rozmycia, jednak używając powyższych dwóch poleceń uzyskuję dużo rozmycia.

wideo można znaleźć tutaj, http://www.cs.umd.edu/~bharat/video.mp4

W celu próbce filmowi co 10 sekund, używam następujących powodów: Using

./ffmpeg -i video.mp4 -r 1/10 filename%03d.jpg

Output normalnego próbkowania: sampling output

Dane wyjściowe za pomocą wybierz: select output

Jednak normalne próbkowanie może być złe w przypadku niektórych filmów i może tworzyć redundantne ramki. Czy jest jakiś sposób, abym mógł użyć jakiejś opcji w ffmpeg i uzyskać klatki bez tego rozmycia? Jeśli normalne pobieranie próbek może uzyskać dobre ramki, w pobliżu powinny znajdować się ramki bez rozmycia. Spojrzałem na opcje, takie jak scenecut w ffmpeg jednak nie jestem zaznajomiony z wykorzystaniem ich do tej aplikacji.

+0

Ten wynik jest oczekiwany przy regularnym próbkowaniu klatek. Czy koniecznie musi to być 'ffmpeg'? Istnieje wiele swobodnie dostępnych implementacji wykrywania ujęć. – bjou

+0

niekoniecznie, cokolwiek zrobi, po prostu muszę pozbyć się rozmytych ramek – Bharat

Odpowiedz

2

Proponuję również przyjrzenie się innym, swobodnie dostępnym implementacjom wykrywania ujęć. Na przykład, próg zwyczaj 47 z Johan Mathe na Shotdetect daje następujące wyniki (pierwsza klatka każdym zdjęciu): Shot Detection with jmathe's Shotdetect

jednak swoje pytanie wydaje się zajmować więcej z problemem stabilizacji wideo niż robi scenę zmiana lub wykrycie strzału. Rozmycie widoczne zarówno powyżej, jak i w PO jest "artefaktami" nieodłącznie związanymi z filmem i nie wynika z algorytmów używanych do wycinania lub próbkowania wideo. Jeśli chcesz zmniejszyć ilość ruchu, powinieneś zajrzeć do this post, a także zapoznać się z modułem OpenCV's Video Stabilization. Istnieje również wiele badań dotyczących tego wyzwania, w tym this i this.

+0

dzięki za link, Rozumiem, że w filmie występuje nieodłączne rozmycie, co było zaskakujące, że ffmpeg wybierał niewyraźne ramki tylko wtedy, gdy używasz wybierz opcję, twoje wyniki wydają się być lepsze, prawdopodobnie istnieje maksymalna różnorodność ramek wybranych przez ffmpeg. – Bharat

+0

Nie jestem pewien, co masz na myśli przez "maksymalną zmienność", ale możesz także chcieć eksperymentować z wybraną klatką. Polecenie, które podałeś, wybiera I-Frame, ale możesz także wybrać jedną z poniższych: 'I, P, B, S, SI, SP, BI'. – bjou

+0

Chciałem, żeby zbyt rozmyte ramki wyglądałyby inaczej niż normalne klatki, a ffmpeg mógłby je wykryć jako zmianę w ujęciu, byłoby ciekawie zobaczyć, co dają ramki P, B, jeszcze raz dziękuję, nie wiedziałem, że możemy również wybrać inne ramki .Jeśli dobrze pamiętam, powinno być wiele klatek P, B, skąd by wiedział, która ramka P/B wybiera – Bharat

Powiązane problemy