Kemarin saya sedang syuting adegan dengan telepon saya tetapi tiba-tiba aplikasi crash dan ketika saya mencoba untuk membuka m4v yang dihasilkannya dikatakan rusak.
Saya telah mengunduh file video (sekitar 36MB) di PC saya dan saya mencoba untuk membuka dan memperbaikinya. Bisakah Anda menyarankan saya cara untuk melakukannya?
Info FFMPEG
Seperti yang disarankan dalam komentar saya mencoba memeriksa apa yang dikatakan FFMPEG tentang file itu dengan perintah ini
ffmpeg.exe -i VID_20120425_144739.m4v -c:v copy -c:a copy out.mp4 2> log.txt
Ini dia hasilnya:
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
Dua baris terbaru ditampilkan dengan warna merah.
Jawaban:
Dimungkinkan untuk memperbaiki file mp4 atau m4v yang rusak menggunakan Untrunc .
Untuk metode ini, Anda memerlukan file video lain dari perangkat yang sama yang tidak rusak.
Bagaimana cara meng-install
untrunc
Untuk kompilasi Anda memerlukan instalasi Linux (idealnya Ubuntu) dan kemampuan dasar untuk menggunakan baris perintah. Anda juga dapat melewati bagian ini dan menjalankannya
untrunc
melalui Docker (lihat jawaban di bawah ), jika Anda memilikinya.Inilah yang harus dilakukan:
Instal beberapa perpustakaan prasyarat dengan perintah ini:
sudo apt-get install libavformat-dev libavcodec-dev libavutil-dev
Dapatkan kode sumber untuk Untrunc dari repo GitHub (pilih satu metode):
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
Kompilasi kode sumber menggunakan perintah ini (semua satu baris):
g++ -o untrunc file.cpp main.cpp track.cpp atom.cpp mp4.cpp -L/usr/local/lib -lavformat -lavcodec -lavutil
(Anda dapat mencoba melewatkan langkah ini dan menggunakan executable yang disediakan, tetapi tidak berhasil bagi saya)
Maka Anda benar-benar dapat memperbaiki video. Anda membutuhkan video yang rusak & contoh video yang berfungsi.
Cara memperbaiki video
Cari video lain yang berfungsi, idealnya dari kamera yang sama dan lebih baik setidaknya selama yang rusak; juga resolusi yang sama jika memungkinkan (saya percaya ini dapat membantu meskipun tidak penting).
Jalankan perintah ini di folder tempat Anda membuka ritsleting dan mengkompilasi Untrunc tetapi ganti
/path/to/...
bit dengan 2 file video Anda:Maka seharusnya churn pergi dan mudah-mudahan menghasilkan file yang dapat diputar bernama
broken-video_fixed.m4v
Sudah selesai!
VLC Media Player sekarang seharusnya dapat memutar file. Namun mungkin melaporkan informasi panjang yang salah (Untrunc mencoba menebak / menyelesaikannya, tetapi tidak selalu benar). Untuk memperbaikinya, coba enkode ulang video melalui program lain.
[Terima kasih atas komentar slhck untuk saran untuk mencoba Batalkan Panggilan.]
[Terima kasih banyak kepada Federico Ponchio yang telah mengkode Untrunc sejak awal, untuk menyelesaikan masalah yang sebenarnya ini.]
sumber
untrunc-master
. Kemudian, jalankan: ./untrunc goodfile.mp4 badfile.mp4 Butuh sekitar 3 menit untuk file 2gb dan saya hanya perlu menyinkronkan ulang audio. Yang lainnya baik-baik saja.Jika orang lain menemukan ini, saya juga mencoba sparrowt aplikasi yang sedang dibicarakan, tetapi tidak berhasil bagi saya (lihat beberapa laporan bug yang saya buat di repositori pengembang). Mungkin ini karena itu bukan file mp4 tetapi file MOV ...
Apa yang membantu saya adalah posting ini: http://muzso.hu/2012/11/14/how-to-fix-a-broken-mp4-mov-video-ffmpeg-reports-moov-atom-not-found
Mereka menautkan ke program yang disebut "Utilitas Perbaikan Video HD" ( http://grauonline.de/cmsimple2_6/en/?Solutions:HD_Video_Repair_Utility ), yang jauh lebih murah daripada Treasured ( http://aeroquartet.com/movierepair/repair ) . Mereka bahkan menunjukkan, bahwa ada versi sebelumnya (versi 1.5) yang tidak memerlukan biaya apa pun ( http://nagasoft.cn/download/videorepair1.5.zip )!
Saya mencoba memperbaiki file menggunakan versi 1.5 dan membuatnya sebagian berfungsi. Setelah pengkodean ulang dengan ffmpeg (ada beberapa kesalahan di sana), saya menyadari, bahwa sebagian dari audio sudah tidak ada. Dalam log (dengan senang hati Video Repair Utility memiliki beberapa), tidak ada lagi penyebutan audio setelah waktu tertentu. Saya akan menganggapnya apa adanya ...
sumber
Anda dapat menginstal
docker
(tersedia untuk semua sistem operasi utama) dan menjalankan:Sintaksnya adalah untuk Bash di Linux atau macOS. Di sini,
GOOD-reference-file.MP4
danBAD-corrupt-file.md5
keduanya harus berada di direktori Anda saat ini, dan direktori tersebut akan dipasang ke/vol
dalam wadah Docker.Baca komentar lain di sekitar untuk penjelasan lebih mendalam.
Ini yang tercepat bagiku!
sumber
Dockerfile
tersedia di sini jika ada yang ingin melihat apa yang akan dijalankan sebelum menjalankannya di komputer Anda: github.com/synctree/docker-untrunc Ada jugaDockerfile
diuntrunc
repositori yang sebenarnya sekarang - saya belum menguji atau membandingkan secara terperinci tetapi menyebutkannya di sini untuk kelengkapan: github.com/ponchio/untrunc/blob/master/Dockerfile@sparrowt Instruksi Anda saat ini tidak berfungsi pada instalasi Ubuntu 16.10 saya yang terbaru. Saya mendapat kesalahan berikut saat mengompilasi yang tidak dibuka:
Seperti yang dijelaskan dalam repositori untrunc , Anda mungkin perlu mengunduh libav secara terpisah daripada menggunakan versi di repositori Ubuntu. Kode berikut ini berfungsi untuk saya:
Ini membuat file bernama broken-video_fixed.mp4 yang berfungsi untuk saya. Terima kasih banyak telah memulai utas ini.
sumber
h264dec.h
? karenatrack.cpp
sedang mencoba untuk memasukkannya dan saya tidak dapat menemukannya di mana pun: /sudo apt-get install yasm
,sudo apt-get install libbz2-dev
dan, untuk mengatasi referensi yang tidak terdefinisi ke 'clock_gettime', tambahkan-lrt
ke akhirg++
baris perintah (lihat stackoverflow.com/a/2418175/550712 ). Itu dikonversi sekitar 2/3 dari video saya.Jika untrunc tidak mendukung codec di dalam file Anda, Anda dapat mencoba memperbaikinya dengan hex editor:
mdat
bagian di file "ok" denganmdat
bagian di file "broken", tanpa header (mis. salin hanya byte setelah 'mdat')mdat
bagian, nilai saat ini akan menjadi ukuran lama ("ok"mdat
ukuran bagian file ), ganti dengan ukuran baru (" rusak "mdat
ukuran bagian file )Saya akhirnya coding program sederhana untuk melakukannya: https://github.com/golimarrrr/fix-3gp
Baik program dan dengan tangan menggunakan hex editor harus membuat file tetap yang sama
sumber
Sudahkah Anda mencoba membuka file dengan VLC Player ? Biasanya cukup baik memperbaiki file yang rusak.
sumber