Wczoraj nagrywałem scenę za pomocą telefonu, ale nagle aplikacja uległa awarii i gdy próbuję otworzyć wygenerowany m4v, mówi, że jest uszkodzony.
Pobrałem pliki wideo (około 36 MB) na komputer i próbuję je otworzyć i naprawić. Czy możesz mi zasugerować, jak to zrobić?
Informacje o FFMPEG
Jak sugerowałem w komentarzach, próbuję sprawdzić, co FFMPEG mówi mi o tym pliku za pomocą tego polecenia
ffmpeg.exe -i VID_20120425_144739.m4v -c:v copy -c:a copy out.mp4 2> log.txt
Oto wynik:
ffmpeg version N-40126-ga4b58fd Copyright (c) 2000-2012 the FFmpeg developers
built on Apr 26 2012 03:29:50 with gcc 4.6.3
configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-runtime-cpudetect --enable-avisynth --enable-bzlib --enable-frei0r --enable-libass --enable-libcelt --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libfreetype --enable-libgsm --enable-libmp3lame --enable-libnut --enable-libopenjpeg --enable-librtmp --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libutvideo --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxavs --enable-libxvid --enable-zlib
libavutil 51. 47.100 / 51. 47.100
libavcodec 54. 15.100 / 54. 15.100
libavformat 54. 3.100 / 54. 3.100
libavdevice 53. 4.100 / 53. 4.100
libavfilter 2. 72.100 / 2. 72.100
libswscale 2. 1.100 / 2. 1.100
libswresample 0. 11.100 / 0. 11.100
libpostproc 52. 0.100 / 52. 0.100
[mov,mp4,m4a,3gp,3g2,mj2 @ 003fc940] moov atom not found
VID_20120425_144739.m4v: Invalid data found when processing input
Ostatnie dwa wiersze są wyświetlane na czerwono.
Odpowiedzi:
Możliwe jest naprawienie uszkodzonego pliku MP4 lub MP4 przy użyciu Untrunc .
Do tej metody potrzebujesz innego pliku wideo z tego samego urządzenia, który nie jest uszkodzony.
Jak zainstalować
untrunc
Do kompilacji potrzebujesz instalacji Linuksa (najlepiej Ubuntu) i podstawowej umiejętności korzystania z wiersza poleceń. Możesz również pominąć tę część i uruchomić
untrunc
za pomocą Dockera (patrz odpowiedź poniżej ), jeśli ją masz.Oto co należy zrobić:
Zainstaluj niektóre wstępnie wymagane biblioteki za pomocą tego polecenia:
sudo apt-get install libavformat-dev libavcodec-dev libavutil-dev
Pobierz kod źródłowy dla Untrunc z repozytorium GitHub (wybierz jedną metodę):
wget https://github.com/ponchio/untrunc/archive/master.zip && unzip master.zip && cd untrunc-master
git clone https://github.com/ponchio/untrunc.git && cd untrunc
Skompiluj kod źródłowy za pomocą tego polecenia (wszystkie w jednym wierszu):
g++ -o untrunc file.cpp main.cpp track.cpp atom.cpp mp4.cpp -L/usr/local/lib -lavformat -lavcodec -lavutil
(możesz spróbować pominąć ten krok i użyć gotowego pliku wykonywalnego, ale to nie działało dla mnie)
Następnie możesz naprawić wideo. Potrzebujesz zarówno uszkodzonego wideo, jak i przykładowego działającego wideo.
Jak naprawić wideo
Znajdź inny działający film, najlepiej z tej samej kamery, najlepiej przynajmniej tak długi, jak zepsuty; także ta sama rozdzielczość, jeśli to możliwe (uważam, że to może pomóc, choć nie jest konieczne).
Uruchom to polecenie w folderze, w którym rozpakowałeś i skompilowałeś Untrunc, ale zamień
/path/to/...
bity na 2 pliki wideo:Następnie powinien się odejść i, mam nadzieję, stworzyć plik do odtworzenia o nazwie
broken-video_fixed.m4v
To już koniec!
VLC Media Player powinien teraz móc odtwarzać plik. Może jednak zgłaszać nieprawidłowe informacje o długości (Untrunc próbuje zgadnąć / rozwiązać problem, ale nie zawsze robi to poprawnie). Aby rozwiązać ten problem, spróbuj ponownie zakodować wideo za pomocą innego programu.
[Dzięki komentarzowi slhck za sugestię wypróbowania Untrunc.]
[Wielkie podziękowania dla Federico Ponchio za kodowanie Untrunc w pierwszej kolejności, aby rozwiązać ten dokładnie problem.]
źródło
untrunc-master
. Następnie uruchom: ./untrunc goodfile.mp4 badfile.mp4 Plik 2 GB zajął około 3 minut i musiałem tylko ponownie zsynchronizować dźwięk. Wszystko inne było w porządku.Jeśli ktoś się na to natknie, spróbowałem też aplikacji, o której mówił sparrowt, ale to nie działało dla mnie (zobacz kilka raportów o błędach, które utworzyłem w repozytorium programistów). Może to dlatego, że nie był to plik MP4, ale plik MOV ...
Pomógł mi ten post: http://muzso.hu/2012/11/14/how-to-fix-a-broken-mp4-mov-video-ffmpeg-reports-moov-atom-not-found
Łączą się z programem o nazwie „Narzędzie naprawy wideo HD” ( http://grauonline.de/cmsimple2_6/en/?Solutions:HD_Video_Repair_Utility ), który jest znacznie tańszy niż Treasured ( http://aeroquartet.com/movierepair/repair ) . Wskazali nawet, że istnieje wcześniejsza wersja (wersja 1.5), która nic nie kosztuje ( http://nagasoft.cn/download/videorepair1.5.zip )!
Próbowałem naprawić plik przy użyciu wersji 1.5 i częściowo go uruchomiłem. Po ponownym kodowaniu za pomocą ffmpeg (dostałem kilka błędów), zdałem sobie sprawę, że część audio zniknęła. W dziennikach (na szczęście w narzędziu do naprawy wideo) nie było żadnej wzmianki o dźwięku po pewnym czasie. Wezmę to tak, jak jest ...
źródło
Możesz zainstalować
docker
(dostępny dla wszystkich głównych systemów operacyjnych) i uruchomić:Składnia dotyczy Bash pod Linuksem lub macOS. Tutaj
GOOD-reference-file.MP4
iBAD-corrupt-file.md5
oba muszą znajdować się w bieżącym katalogu, a katalog zostanie zamontowany/vol
w kontenerze Docker.Przeczytaj pozostałe komentarze, aby uzyskać bardziej szczegółowe wyjaśnienia.
To było dla mnie najszybsze!
źródło
Dockerfile
jest dostępny tutaj, jeśli ktoś chce zobaczyć, co to będzie działać, zanim uruchomi się go na twoim komputerze: github.com/synctree/docker-untrunc Teraz jest teżDockerfile
wuntrunc
repozytorium - nie testowałem ani nie porównałem je szczegółowo, ale wspomnij o tym tutaj dla kompletności: github.com/ponchio/untrunc/blob/master/Dockerfile@sparrowt Twoje bieżące instrukcje nie działały na mojej ostatniej instalacji Ubuntu 16.10. Podczas kompilowania untrunc wystąpił następujący błąd:
Jak wyjaśniono w repozytorium untrunc , może być konieczne oddzielne pobranie libav zamiast używania wersji z repozytorium Ubuntu. Poniższy kod działał dla mnie:
To stworzyło plik o nazwie broken-video_fixed.mp4, który działał dla mnie. Dziękuję bardzo za zainicjowanie tego wątku.
źródło
h264dec.h
? ponieważtrack.cpp
próbuje to dołączyć i nie mogę go znaleźć nigdzie: /sudo apt-get install yasm
,sudo apt-get install libbz2-dev
a do pokonania niezdefiniowanej odniesienie do „clock_gettime” dodaj-lrt
do końcag++
wiersza poleceń (patrz stackoverflow.com/a/2418175/550712 ). Konwertuje około 2/3 mojego filmu.Jeśli untrunc nie obsługuje kodeka w twoim pliku, możesz spróbować go naprawić za pomocą edytora szesnastkowego:
mdat
sekcję w pliku „ok” namdat
sekcję w „uszkodzonym” pliku, bez nagłówka (tzn. skopiuj tylko bajty po „mdat”)mdat
sekcji, bieżącą wartością będzie stary rozmiar (mdat
rozmiar sekcji pliku „ok” ), zamień go na nowy rozmiar („ uszkodzony „mdat
rozmiar sekcji pliku )W końcu napisałem prosty program, aby to zrobić: https://github.com/golimarrrr/fix-3gp
Zarówno program, jak i ręcznie za pomocą edytora szesnastkowego powinny utworzyć ten sam ustalony plik
źródło
Czy próbowałeś otworzyć plik za pomocą VLC Player ? Zwykle jest bardzo dobry w naprawie uszkodzonych plików.
źródło