jak naprawić plik ffmpeg
ffmpeg -i uszkodzony.mp4 -c copy -movflags +faststart naprawiony.mp4
-err_detect ignore_err
, -fflags +genpts
lub pełne rekodowanie -c:v libx264 -c:a aac
. Kluczowe punkty
• Diagnoza: czy problem leży w bibliotece, czy w danych multimedialnych.
• Reinstalacja lub prawidłowa konfiguracja (Audacity, PATH, zależności).
• Remuksowanie bez rekompresji jako pierwsza próba naprawy kontenera.
• Zaawansowane flagi FFmpeg do ignorowania błędów, naprawy PTS, przeniesienia atomu moov.
1.1. Pobranie i weryfikacja
• Oficjalny build: https://ffmpeg.org (Linux/macOS) lub dystrybucje Gyan.dev / BtbN / Buanzo (Windows).
• Sprawdź SHA-256 plików, uruchom ffmpeg -version
– błędy segmentacji lub brak wersji = uszkodzone binaria.
1.2. Instalacja systemowa
Windows – wypakuj do C:\ffmpeg\
; dodaj C:\ffmpeg\bin
do PATH.
Linux – sudo apt install ffmpeg
(Ubuntu) lub dnf / pacman / brew
.
macOS – brew install ffmpeg --with-libx264 --with-fdk-aac
(Homebrew).
1.3. Integracja z Audacity (najczęstszy kłopot)
• Uruchom Audacity → Edycja → Preferencje → Biblioteki → Locate.
• Wskaż avformat-6x.dll
(Windows) lub libavformat.6*.dylib/so
.
• Zwróć uwagę na zgodność architektury (32-/64-bit).
1.4. Diagnostyka zależności
Windows: Dependency Walker; Linux: ldd ffmpeg
; macOS: otool -L
.
Brakujące biblioteki = doinstaluj pakiet/systemową .dll/.so lub skompiluj statycznie.
2.1. Analiza pliku
ffprobe -v error -show_format -show_streams uszkodzony.mp4
– identyfikacja brakujących indeksów, moov, niespójnych PTS.
2.2. Remuksowanie (bez strat)
ffmpeg -i uszkodzony.mp4 -c copy naprawiony.mp4
• Odtwarza strukturę kontenera, tworzy nowy indeks.
2.3. Ignorowanie błędów ramek
ffmpeg -err_detect ignore_err -i uszkodzony.mp4 -c copy naprawiony.mp4
2.4. Naprawa znaczników czasowych
ffmpeg -i uszkodzony.mp4 -c copy -fflags +genpts -avoid_negative_ts make_zero naprawiony.mp4
2.5. Przeniesienie atomu moov („Moov atom not found”)
ffmpeg -i uszkodzony.mp4 -c copy -movflags faststart naprawiony.mp4
2.6. Pełne rekodowanie (ostatnia deska ratunku)
ffmpeg -i uszkodzony.mp4 -c:v libx264 -preset slow -crf 18 -c:a aac -b:a 192k naprawiony.mp4
2.7. Konwersja kontenera
ffmpeg -i uszkodzony.mp4 -c copy naprawiony.mkv
– bywa skuteczne, gdy MP4 ma uszkodzone boxy, a MKV toleruje braki.
2.8. Zewnętrzne narzędzia komplementarne
• Untrunc (rekonstruuje nagłówek MP4 przy pomocy pliku wzorcowego).
• FFmpeg-based GUI (Shutter Encoder, LosslessCut) – łatwiejsza obsługa flag.
Teoretyczne podstawy
• Kontener (MP4, MKV, AVI) przechowuje tablice czasów (stts), indeksy (mdat/moov).
• Uszkodzenie moov
lub kolejności boxów skutkuje błędami odtwarzania.
• FFmpeg potrafi wygenerować brakujące PTS/DTS i przepisać nagłówki bez transkodowania.
Praktyczne zastosowania
• Odzysk nagrań z kamer akcji po awarii zasilania.
• Naprawa plików pobranych z sieci (brak końcówki strumienia).
• Poprawa kompatybilności z serwisami streamingowymi (faststart).
• FFmpeg 6.x (2024) – natywne wsparcie dla kodeka SVT-AV1 i rozszerzone opcje -err_detect
.
• Paczki „universal build” dla Windows (Gyan.dev) mają włączone x264/x265, libfdk-aac, zlib i obsługę hardware decoders (QSV, NVDEC, V4L2).
• Tendencja: dystrybucje Linux migrują do współdzielonych bibliotek (libavcodec60), przez co starsze programy mogą wymagać przekompilowania.
• -c copy
≠ transkodowanie – brak utraty jakości, operacja kilkukrotnie szybsza.
• -movflags faststart
przenosi tablicę moov przed mdat → streaming natychmiastowy.
• -async 1
wyrównuje audio/video, użyteczne po łączeniu plików o różnych fps.
• Kodeki AAC, H.264, HEVC są objęte patentami – w niektórych jurysdykcjach wymagają licencji.
• Dystrybucja skompilowanych binariów z obsługą libfdk-aac lub OpenH264 może podlegać ograniczeniom.
• Przetwarzanie nagrań objętych prawem autorskim wymaga zgody właściciela.
• Zawsze pracuj na kopii pliku – naprawa może pogorszyć stan źródła.
• W przypadku błędów I/O sprawdź SMART dysku; uszkodzenie fizyczne ≠ problem software’owy.
• Do automatycznych testów integracji użyj ffmpeg -f lavfi -i testsrc
(wideo) lub sine
(audio).
• Głębokie uszkodzenie strumienia (brak klatek kluczowych) może uniemożliwić 100 % odzysk.
• Rekodowanie poprawi odtwarzalność kosztem jakości i czasu.
• Starsze wersje FFmpeg (<4.x) nie obsługują części opisanych flag.
• Analiza narzędzia bento4 (mp4fragment, mp4dash) dla diagnostyki boxów stbl
.
• Własna kompilacja FFmpeg z flagą --enable-librist
do naprawy transportu RTP.
• Testy z biblioteką libav (fork FFmpeg) – porównanie odporności na błędy kontenera.
Naprawa „pliku FFmpeg” zazwyczaj oznacza: