Ten tytuł może być nieco mylący, więc pozwól mi wyjaśnić ...
Pobieram plik wideo ... mpeg, avi - jeden z popularnych formatów. Teraz, jeśli go pobieram, a pobieranie przerywa się w środku uhm ... pobieranie, to na przykład Windows Media Player zgłasza błąd i odmawia jego odtworzenia (chociaż plik jest, powiedzmy, 98% ukończone). Ale gracze tacy jak KMPlayer lub MediaPlayer Classic będą go odtwarzać do tego momentu (w rzeczywistości mogą grać także podczas pobierania).
Tak więc jestem zainteresowany ... bez korzystania z jakichkolwiek metod pobierania (menedżerów pobierania i podobnych), aby zabezpieczyć plik jest całkowicie pobrany, jak można sprawdzić, czy plik wideo jest pobrany w całości i czy jest kompletny?
avi
mpeg
verification
Wieża
źródło
źródło
Incomplete MPEG should play with no problems.
@ Bobince, pytanie brzmiało / jak sprawdzić, czy nie ma uszkodzeń, a nie jak odtworzyć niekompletny plik. Nawet jeśli format obsługuje odtwarzanie niekompletnych plików, nadal powinno być możliwe sprawdzenie, czy plik nie jest zgodny ze specyfikacjami formatu. Na przykład nadal możesz odczytać niekompletny plik tekstowy, ale nadal możesz wykryć, czy plik ma problemy, np. Czy kończy się w środku zdania, czy w środku jest fragment brakujących informacji.Odpowiedzi:
Możesz użyć funkcji
ffmpeg
konwertera wideo: jeśli wybierzesz opcję przekodowywania wideo do niczego, po prostu odczyta plik wejściowy i zgłosi wszelkie pojawiające się błędy. Jest to bardzo szybki proces, ponieważ ramki wideo są właśnie odczytywane, sprawdzane i dyskretnie upuszczane.Przykładowy wiersz poleceń: (dla systemu Linux)
-v error
oznacza pewien poziom gadatliwości (aby pokazać niektóre błędy, które normalnie są ukryte, ponieważ nie wpływają zbytnio na grywalność).Otrzymasz pełny dziennik błędów z pewnymi ogólnymi informacjami o pliku, który wyśle ffmpeg, więc prawdopodobnie będzie to wymagało Twojej uwagi, dzięki filtrom można napisać, aby wykonać kontrolę partii podobnych plików.
FFmpeg jest również dostępny tutaj dla systemu Windows . Wiersz polecenia będzie prawie identyczny, z wyjątkiem przekierowania stderr:
źródło
ffprobe
dołączona do pakietuffmpeg
. Nie dokonuje żadnej konwersji, ale po prostu odczytuje informacje z metadanych z pliku. Dlatego wykryje błędy w metadanych, ale nie znajdzie żadnych problemów w samym pliku. Osobiście używamffprobe
do szybkiej weryfikacji przesłanych danych przed dalszym przetwarzaniem-map
), co znacznie przyspieszy działanie:ffmpeg -v error -i in.mkv -map 0:1 -f null …
jeśli wystąpi błąd, zarejestruje pozycję bajtu, której można użyć do obcięcia pliku (megabajt lub dwa wcześniej, aby być bezpiecznym), a następnie wznowić pobieranie.Podobał mi się pomysł użycia
ffmpeg -f null
powyższego, ale tak naprawdę chciałbym zautomatyzować proces korzystania z tego wyjścia. W szczególności moim typowym scenariuszem z kolekcją wideoklipów jest to, że mam kilka klipów o tej samej rozdzielczości i chciałbym różnicować dzienniki weryfikacji dla tych plików, aby usunąć te najbardziej uszkodzone.Niestety, ffmpeg do tej pory nie ma możliwości wyłączenia trybu interaktywnego, który emituje hałas w tym przypadku użycia. Skończyło się na zhakowaniu prostego skryptu opakowującego w celu filtrowania:
Przykładowe dane wyjściowe:
źródło
W przypadku systemu Windows można „wsadowo” sprawdzić integralność filmów w bieżącym folderze i wszystkich podfolderach za pomocą tego pliku bat:
checkvideo.bat
Posługiwać się:
checkvideo.bat [filter]
Jeśli nie podasz jednego filtru, otrzymasz „* .mp4”.
Próbki:
checkvideo.bat
checkvideo.bat *.avi
Konfiguracja: Pobierz FFmpeg dla Windows stąd: https://ffmpeg.zeranoe.com/builds/ i rozpakuj je Zmień
C:\ffmpeg\bin\
plik bat dla ścieżki, z której rozpakowałeś ffmpeg Umieśćcheckvideo.bat
folder zawarty w ścieżce lub dodaj jego folder do Zmienna środowiskowa ścieżkiźródło
Problem z drugą odpowiedzią
ffmpeg
używaną do przekodowywania donull
formatu polega na tym, że zajmuje to naprawdę dużo czasu. Zwłaszcza jeśli chcesz sprawdzić wiele plików w katalogu.Szybkim sposobem byłoby wygenerowanie miniatur dla wszystkich filmów i sprawdzenie, gdzie generowanie miniatur się nie powiedzie.
Ta metoda okazała się znacznie SZYBSZA niż inne metody.
Istnieje jednak CAVEAT. Ta metoda może dawać błędne wyniki, ponieważ czasami miniaturę można wygenerować nawet w przypadku uszkodzonych plików. Np. Jeśli plik wideo jest uszkodzony tylko na końcu, ta metoda zawiedzie.
źródło
MediaInfo to świetne narzędzie do uzyskiwania informacji o każdym pliku wideo, który chcesz w niego wrzucić. Może to umożliwić wyróżnienie potrzebnych informacji.
Kolejnym narzędziem jest GSpot, ale nie był aktualizowany od 2007 roku.
Spróbuj podać każdemu znany dobry i znany zły plik i porównaj wyniki.
Używałem GSpot, dopóki nie przestał być aktualizowany, a potem przełączyłem się na MediaInfo
źródło
mediainfo *
.mediainfo
najwyraźniej nie sprawdza kompletności. Wziąłemwebm
plik wideotruncate
o wielkości 33 MB i d do połowy.mediainfo
nadal miał prawie taki sam wynik dla obu, bez widocznych oznak korupcji. Potruncate
wejściu do 1 MB nadal nie było wyraźnych oznak uszkodzenia danych wyjściowych. Tylko jeśli przyjrzysz się dokładniej wynikowi, znajdziesz kilka sprzecznych informacji. Ale te części zależą od formatu pliku wideo, więc nie można zautomatyzować tego wykrywania.mediainfo
nie czyta nic oprócz metadanych. Nie sprawdzi to w żaden sposób ważności pliku.