M4v या mp4 वीडियो फ़ाइल कैसे खोलें और उसकी मरम्मत कैसे करें?


59

कल मैं अपने फोन के साथ एक दृश्य फिल्मा रहा था लेकिन अचानक एप्लिकेशन क्रैश हो गया और जब मैंने m4v को खोलने का प्रयास किया तो यह कहा गया कि यह दूषित है।

मैंने अपने पीसी पर वीडियो फ़ाइलों (लगभग 36 एमबी) को डाउनलोड किया है और मैं इसे खोलने और मरम्मत करने की कोशिश कर रहा हूं। क्या आप मुझे ऐसा करने का कोई सुझाव दे सकते हैं?

FFMPEG जानकारी

जैसा कि टिप्पणियों में सुझाया गया है, मैं जांचने की कोशिश करता हूं कि एफएफएमपीईजी मुझे इस कमांड के साथ उस फाइल के बारे में क्या कहता है

ffmpeg.exe -i VID_20120425_144739.m4v -c:v copy -c:a copy out.mp4 2> log.txt

यहाँ यह परिणाम है:

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

नवीनतम दो पंक्तियों को लाल रंग में प्रदर्शित किया गया है।


मेरा ओएस विंडोज 7 है, लेकिन यदि आवश्यक हो तो मैं लिनक्स-आधारित डिस्ट्रो के साथ एक वर्चुअल मशीन तैयार कर सकता हूं।
ड्रेक

@slhck मदद के लिए धन्यवाद, मैंने वही किया जो आपने सुझाया और अद्यतन किया।
ड्रेक

7
आह, यही मैंने उम्मीद की थी। MOOV परमाणु डेटा का एक टुकड़ा है जो MP4 / M4V कंटेनर के अंदर कच्चे वीडियो स्ट्रीम को एक्सेस करने के लिए आवश्यक है। ऑनलाइन "वीडियो मरम्मत" उपकरण बहुत हैं, लेकिन मैं उनमें से ज्यादातर पर भरोसा नहीं करूंगा। आप निश्चित रूप से उन्हें एक शॉट दे सकते हैं - बस किसी भी चीज के लिए भुगतान न करें। होनहार लग रहा है जो असत्य है , जो इस सटीक समस्या के लिए कोडित किया गया है (अर्थात् एक लापता MOOV परमाणु)। या एटॉमिकपार्स्ले । सौभाग्य!
slhck

1
मैं एक टूटी हुई mp4 को AtomicParsley के साथ कैसे ठीक करूं?
चोवै जूल 8'16

जवाबों:


60

असत्य का उपयोग करके टूटी हुई mp4 या m4v फ़ाइल को सुधारना संभव है ।

इस विधि के लिए आपको उसी डिवाइस से एक और वीडियो फ़ाइल की आवश्यकता होती है जो टूटी नहीं है

स्थापित कैसे करें untrunc

संकलन के लिए आपको एक लिनक्स इंस्टॉलेशन (आदर्श रूप से उबंटू) और कमांड लाइन का उपयोग करने की बुनियादी क्षमता की आवश्यकता होती है। आप इस भाग को छोड़ सकते हैं और untruncडॉकर के माध्यम से चला सकते हैं ( नीचे उत्तर देखें ), यदि आपके पास ऐसा है।

यह क्या करना है:

  1. इस आदेश के साथ कुछ पूर्व-अपेक्षित लाइब्रेरी स्थापित करें:

    sudo apt-get install libavformat-dev libavcodec-dev libavutil-dev

  2. GitHub रेपो (एक विधि का चयन करें) से Untrunc के लिए स्रोत कोड प्राप्त करें:

    • 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
  3. इस आदेश (सभी एक पंक्ति) का उपयोग करके स्रोत कोड संकलित करें:

    g++ -o untrunc file.cpp main.cpp track.cpp atom.cpp mp4.cpp -L/usr/local/lib -lavformat -lavcodec -lavutil

    (आप इस कदम को छोड़ देने और तैयार-प्रदान निष्पादन योग्य का उपयोग करने की कोशिश कर सकते हैं, लेकिन यह मेरे लिए काम नहीं किया)

  4. तब आप वास्तव में वीडियो को ठीक कर सकते हैं। आपको टूटे हुए वीडियो और काम करने वाले वीडियो दोनों का उदाहरण चाहिए।

वीडियो कैसे ठीक करें

एक और कामकाजी वीडियो ढूंढें, आदर्श रूप से एक ही कैमरे से और अधिमानतः कम से कम जब तक टूटा हुआ नहीं है; यदि संभव हो तो एक ही संकल्प भी (मेरा मानना ​​है कि यह मदद कर सकता है हालांकि आवश्यक नहीं है)।

इस कमांड को उस फोल्डर में चलाएं जहाँ आपने अनरजक और कंपेयर किया है, लेकिन /path/to/...बिट्स को अपनी 2 वीडियो फाइलों से बदलें:

./untrunc /path/to/working-video.m4v /path/to/broken-video.m4v

फिर इसे दूर करना चाहिए और उम्मीद है कि नामक एक बजाने योग्य फ़ाइल का उत्पादन करें broken-video_fixed.m4v

यह आप कर रहे हैं!

VLC Media Player अब फ़ाइल चलाने में सक्षम होना चाहिए। हालाँकि, यह गलत लंबाई की सूचना दे सकता है (अनट्रैक यह अनुमान लगाने / काम करने की कोशिश करता है, लेकिन यह हमेशा सही नहीं होता है)। इसे ठीक करने के लिए किसी अन्य प्रोग्राम के माध्यम से वीडियो को पुनः एन्कोडिंग करने का प्रयास करें।

[अट्रैन्क को आज़माने के सुझाव के लिए स्ल्क की टिप्पणी के लिए धन्यवाद।]

[इस सटीक समस्या को हल करने के लिए अक्रुंक्र को कोड करने के लिए फेडेरिको पोंचियो को बहुत धन्यवाद।]


कूल, यहाँ पूर्ण निर्देश प्रदान करने के लिए धन्यवाद!
'16

3
धन्यवाद @ एलेक्स मैंने लिंक को अपडेट कर दिया है। मनोरंजक रूप से गीथुब पर रीडमी इस उत्तर पर आधारित है!
गौरैया

1
एक विंडोज आधारित समाधान देना होगा। < superuser.com/questions/938185/recover-incomplete-video-files > क्योंकि मेरे लिनक्स डिस्ट्रो में इंटरनेट एक्सेस नहीं है।
Rogue

2
FWIW ने मेरे लिए कोई भी प्ले करने योग्य वीडियो तैयार नहीं किया है - लेकिन शराब के माध्यम से पुनर्प्राप्त_mp4_to_h264 चलाकर अच्छा काम किया।
कंपाइलर

1
मेरे लिए काम नहीं किया गया, लेकिन मुझे छिपी हुई .untrunc फ़ोल्डर की उपनिर्देशिका में दोनों वीडियो फ़ाइलों को रखना पड़ा untrunc-master। फिर, रन: ./untrunc goodfile.mp4 badfile.mp4 यह एक 2gb फ़ाइल के लिए लगभग 3 मिनट का समय लगा और मुझे केवल ऑडियो को फिर से दिखाना था। बाकी सब ठीक था।
user8547

8

अगर कोई और इस पर ठोकर खाता है, तो मैंने भी कोशिश की ऐप स्पैरो के बारे में बात कर रहा था, लेकिन यह मेरे लिए काम नहीं करता था (कुछ बग-रिपोर्ट मैंने डेवलपर्स रिपॉजिटरी में बनाई है देखें)। शायद ऐसा इसलिए था क्योंकि यह एक mp4 फ़ाइल नहीं थी, बल्कि एक MOV फ़ाइल थी ...

मेरे लिए इस पोस्ट ने क्या मदद की: http://muzso.hu/2012/11/14/how-to-fix-a-broken-mp4-mov-video-ffmpeg-reports-moov-atom-not-found

वे "एचडी वीडियो रिपेयर यूटिलिटी" ( http://grauonline.de/cmsimple2_6/en/?Solutions:HD_Video_Repair_Utility ) नामक एक कार्यक्रम से लिंक करते हैं , जो कि ट्रेजर्ड ( http://aeroquartet.com/movierepair/repair ) से कहीं सस्ता है। । उन्होंने यह भी बताया कि इसका एक पुराना संस्करण (संस्करण 1.5) था, जिसमें कुछ भी खर्च नहीं हुआ ( http://nagasoft.cn/download/videorepair1.5.zip )!

मैंने संस्करण 1.5 का उपयोग करके फ़ाइल की मरम्मत की कोशिश की और इसे आंशिक रूप से काम कर रहा हूं। Ffmpeg के साथ पुन: एन्कोडिंग करने के बाद (वहां कुछ त्रुटियां मिलीं), मुझे एहसास हुआ, कि ऑडियो का एक हिस्सा चला गया था। लॉग्स में (ख़ुशी से वीडियो रिपेयर यूटिलिटी के पास कुछ है), एक निश्चित समय के बाद ऑडियो का कोई उल्लेख नहीं था। मैं इसे ले जाऊँगा ...


3
DROPBOX url मर चुका है। मिला विकल्प: nagasoft.cn/download/videorepair1.5.zip
T.Todua

2
@ T.Todua, सूचित करने के लिए धन्यवाद। मैंने आपके द्वारा दिए गए लिंक द्वारा ड्रॉपबॉक्स-लिंक को बदल दिया है।
साइमनसिमिटी

8

आप स्थापित कर सकते हैं docker(सभी प्रमुख ऑपरेटिंग सिस्टम के लिए उपलब्ध) और चला सकते हैं:

docker run -v $(pwd):/vol -it synctree/untrunc /vol/GOOD-reference-file.MP4 /vol/BAD-corrupt-file.mdt

सिंटैक्स लिनक्स या macOS के तहत बैश के लिए है। यहां, GOOD-reference-file.MP4और BAD-corrupt-file.md5आपकी वर्तमान निर्देशिका में दोनों होने चाहिए, और निर्देशिका को /volडॉकर कंटेनर में रखा जाएगा ।

अधिक गहराई से व्याख्या के लिए अन्य टिप्पणियों के आसपास पढ़ें।

यह मेरे लिए सबसे तेज था!


धन्यवाद @slhck, Dockerfileयहां उपलब्ध है अगर कोई यह देखना चाहता है कि यह आपके कंप्यूटर पर इसे निष्पादित करने से पहले क्या चलेगा: github.com/synctree/docker-untrunc अब Dockerfileवास्तविक untruncभंडार में भी है - मैंने या तो परीक्षण नहीं किया है या तुलना की है उनके बारे में विस्तार से लेकिन पूर्णता के लिए यहां उल्लेख करें: github.com/ponchio/untrunc/blob/master/Dockerfile
गौरैया

7

@sparrowt आपके वर्तमान निर्देश मेरे हाल के Ubuntu 16.10 इंस्टॉलेशन पर काम नहीं कर रहे हैं। असत्य का संकलन करते समय मुझे निम्नलिखित त्रुटि मिली:

track.cpp: In member function ‘int Codec::getLength(unsigned char*, int)’:
track.cpp:204:40: error: ‘avcodec_alloc_frame’ was not declared in this scope
   AVFrame *frame = avcodec_alloc_frame();

जैसा कि असत्य रिपॉजिटरी में बताया गया है, आपको उबंटू रिपॉजिटरी में संस्करण का उपयोग करने के बजाय अलग से लिबाव डाउनलोड करना पड़ सकता है। निम्नलिखित कोड ने मेरे लिए काम किया:

sudo apt-get install unzip yasm g++ zlib1g-dev libbz2-dev
cd /tmp/
wget https://github.com/ponchio/untrunc/archive/master.zip
unzip master.zip
cd untrunc-master
wget http://libav.org/releases/libav-12.2.tar.xz
tar xvf libav-12.2.tar.xz
cd libav-12.2
./configure
make
cd ..
g++ -o untrunc file.cpp main.cpp track.cpp atom.cpp mp4.cpp -I./libav-12.2 -L./libav-12.2/libavformat -lavformat -L./libav-12.2/libavcodec -lavcodec -L./libav-12.2/libavresample -lavresample -L./libav-12.2/libavutil -lavutil -lpthread -lz -lbz2
./untrunc /path/to/working-video.mp4 /path/to/broken-video.mp4

इसने मेरे लिए काम करने वाली टूटी-वीडियो_फिक्सड .mp4 नामक एक फाइल बनाई। इस सूत्र को शुरू करने के लिए बहुत-बहुत धन्यवाद।


1
धन्यवाद! असत्य संकलन लाइन पर मुझे "BZ2_bzDecompressInit" के लिए अपरिभाषित संदर्भ की पंक्तियों के साथ कुछ त्रुटियां थीं, मुझे -lbz2 जोड़ना था
एंड्रयू स्मार्ट

यह बड़ी फ़ाइलों को संभाल नहीं सकता है। बस देता है।
केन शार्प

क्या आपके परिवाद में एक है h264dec.h? क्योंकि track.cppइसे शामिल करने की कोशिश की जा रही है और मैं इसे कहीं भी नहीं पा सकता: /
x29a

उस निर्भरता को 10 अक्टूबर, 2017 को प्रतिबद्ध github.com/ponchio/untrunc/commit/… के साथ जोड़ा गया था । मेरा मानना ​​है कि अब आपको libav-0.8.7 के बजाय libav-12.2 को लोड करना होगा
freeseek

अंत में यह Ubuntu 14.04.5 LTS पर काम करने के लिए मिला। चलाने के लिए sudo apt-get install yasm, sudo apt-get install libbz2-devऔर, 'clock_gettime' के एक अपरिभाषित संदर्भ को दूर करने के लिए, कमांड लाइन -lrtके अंत में जोड़ें g++(देखें stackoverflow.com/a/2418175/550712 )। इसने मेरे वीडियो का लगभग 2/3 रूपांतरण किया।
मार्क बेरी

2

यदि आपकी फाइल के अंदर कोडेक का समर्थन नहीं होता है, तो आप इसे हेक्स संपादक के साथ ठीक करने का प्रयास कर सकते हैं:

  1. उसी प्रारूप के साथ एक और फ़ाइल प्राप्त करें, मुझे एक बड़ा मिला, लेकिन शायद कोई भी लंबाई काम करेगी
  2. दोनों फाइलों को एक हेक्स एडिटर में खोलें
  3. "टूटी हुई" फ़ाइल में अनुभाग के mdatसाथ "ठीक" फ़ाइल में अनुभाग को बदलें mdat, हेडर के बिना (यानी 'mdat' के बाद केवल बाइट्स की प्रतिलिपि बनाएँ)
  4. यह शायद पहले से ही इस तरह काम करेगा, यदि नहीं, 'mdat' से पहले 4 बाइट्स mdatअनुभाग का आकार निर्दिष्ट करते हैं , तो वर्तमान मान पुराने आकार ("ठीक" फ़ाइल mdatअनुभाग आकार) होगा, इसे नए आकार से बदलें (") टूट "फ़ाइल mdatअनुभाग आकार)

मैंने इसे करने के लिए एक साधारण प्रोग्राम को कोडिंग किया: https://github.com/golimarrrr/fix-3gp

दोनों प्रोग्राम और हेक्स एडिटर का उपयोग करके एक ही निश्चित फ़ाइल बनाना चाहिए


-3

क्या आपने VLC प्लेयर के साथ फाइल खोलने की कोशिश की है ? यह आमतौर पर क्षतिग्रस्त फ़ाइलों की मरम्मत में काफी अच्छा है।


8
मुझे लगता है कि यह AVI फाइलों पर लागू हो सकता है जहां सूचकांक को मेमोरी में बनाया जा सकता है, लेकिन एक MP4 फाइल Ffmpeg प्रसंस्करण के दौरान "moov परमाणु नहीं मिला" की एक त्रुटि VLC में कुछ भी नहीं खेलती है।
सूर्य

2
VLC इसे भी खेलने में विफल रहता है, मेरे मामले में (.mov फ़ाइल)
rogerdpack
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.