web-dev-qa-db-ja.com

MP4が破損しています、修復方法は?

デジタルカメラで2本の動画を撮りました。両方のビデオは、同一のコーデックと設定を使用して保存されました。

2番目のビデオが何らかの理由で破損しており、VLCまたはビデオ編集ソフトウェアで開くことができません。 (最初のビデオは大丈夫です)。

私は「ビデオからビデオへ」ソフトウェアでビデオを変換しようとしました:

#8636.3: [h264 @ 04E10060]AVC: nal size -1920576098
#8636.3: [h264 @ 04E10060]no frame!
#8636.5: [mov,mp4,m4a,3gp,3g2,mj2 @ 04EC4020]decoding for stream 0 failed
#8636.4: [mov,mp4,m4a,3gp,3g2,mj2 @ 04EC4020]Could not find codec parameters 
for stream 0 (Video: h264 (avc1 / 0x31637661), 1920x1080, 11987 kb/s): 
 unspecified pixel format
#8636.4: Consider increasing the value for the 'analyzeduration' and 
 'probesize' options

***File load error: C:\..\PICT0002.MP4: could not find codec parameters

ビデオでのGspotを使用した分析(ビデオが右側で破損している:PICT0002):

enter image description here

誰かが2番目のビデオを修復するためのツールまたは方法を提案できますか?サイズは正しく(3GB)、VLCで開こうとすると長さは問題ないようです(40分)。

理論的には、ファイル内のコーデックメタデータを変更して、ソフトウェアで認識できるようにする必要がありますか?

[〜#〜]更新[〜#〜]

ffmpeg分析を試しました。コマンド:ffmpeg -analyzeduration 2000000000 -i PICT0002.mp4 -c:v libx264 -c:a copy PICT0002-fixed.mp4

応答:

C:\Programmi\ffmpeg\bin>ffmpeg -analyzeduration 2000000000 -i PICT0002.mp4 - 
c:v libx264 -c:a copy PICT0002-fixed.mp4
ffmpeg version N-91398-Gd08d4a8c73 Copyright (c) 2000-2018 the FFmpeg         
developers
   built with gcc 7.3.0 (GCC)
   configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable- 
   bzlib --enable-fontconfig --enable-gnutls --enable-iconv --enable-libass 
   --enable-libbluray --enable-libfreetype --enable-libmp3lame --enable- 
   libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg -- 
   enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr -- 
   enable-libtheora --enable-libtwolame --enable-libvpx --enable-libwavpack 
   --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 -- 
   enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable- 
   libvidstab --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa 
   --enable-libspeex --enable-libxvid --enable-libaom --enable-libmfx -- 
   enable-amf --enable-ffnvcodec --enable-cuvid --enable-d3d11va --enable- 
   nvenc --enable-nvdec --enable-dxva2 --enable-avisynth
      libavutil      56. 18.102 / 56. 18.102
      libavcodec     58. 20.104 / 58. 20.104
      libavformat    58. 17.101 / 58. 17.101
      libavdevice    58.  4.101 / 58.  4.101
      libavfilter     7. 25.100 /  7. 25.100
      libswscale      5.  2.100 /  5.  2.100
      libswresample   3.  2.100 /  3.  2.100
      libpostproc    55.  2.100 / 55.  2.100
 [h264 @ 000002036235d380] Invalid NAL unit size (-1920576098 > 197632).
 [h264 @ 000002036235d380] Error splitting the input into NAL units.
 [mov,mp4,m4a,3gp,3g2,mj2 @ 000002036234a300] decoding for stream 0 failed
 [mov,mp4,m4a,3gp,3g2,mj2 @ 000002036234a300] Could not find codec 
 parameters for stream 0 (Video: h264 (avc1 / 0x31637661), none, 1920x1080, 
 11987 kb/s): unspecified pixel format
 Consider increasing the value for the 'analyzeduration' and 'probesize' 
  options
 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'PICT0002.mp4':
   Metadata:
   major_brand     : avc1
   minor_version   : 0
   compatible_brands: avc1isom
   creation_time   : 2021-06-30T08:32:50.000000Z
   Duration: 00:40:53.45, start: 0.000000, bitrate: 12122 kb/s
   Stream #0:0(eng): Video: h264 (avc1 / 0x31637661), none, 1920x1080, 11987 
    kb/s, 29.97 fps, 29.97 tbr, 90k tbn, 180k tbc (default)
   Metadata:
     creation_time   : 2021-06-30T08:32:50.000000Z
     handler_name    :  Ambarella AVC
     encoder         : Ambarella AVC encoder
 Stream mapping:
   Stream #0:0 -> #0:0 (h264 (native) -> h264 (libx264))
 Press [q] to stop, [?] for help
 [h264 @ 000002036234dd40] Invalid NAL unit size (-1920576098 > 197632).
 [h264 @ 000002036234dd40] Error splitting the input into NAL units.
 [h264 @ 0000020363f92300] Invalid NAL unit size (1565499804 > 10496).
 [h264 @ 0000020363f92300] Error splitting the input into NAL units.
 Error while decoding stream #0:0: Invalid data found when processing input
     Last message repeated one time
 Cannot determine the format of input stream 0:0 after EOF
 Error marking filters as finished
 Conversion failed!

したがって、変換は失敗しました。

2
Marco

このツールをチェックしてください: ビデオ修復ツール

フリーウェアではありませんが、ビデオの50%を無料で修復するため、機能するかどうかがわかります。

このyoutubeビデオもチェックしてください: https://www.youtube.com/watch?v=5QK3vizVIds

1
Ricardo Bohner

解決策。

まず最初に、リカルド・ボーナーにあなたをタンクします。彼はビデオ 修復ツール を参照しています。

そのサイトにアクセスすると、このツールが利用できなくなっていることがわかります。 Restore Media に登録する必要があります。

別の方法として、 ここ に行くことができます。私は ここ に示された指示に従いました。

悲しいことに、私はビデオの40:00分の30:00分しか回復しませんでしたが、回復された部分は完璧です。

これがお役に立てば幸いです。

UPDATE:Riccardo Bonher(コメントで以下を参照)で説明されているように、トリック(mp4の長さを2倍にする)を使用して 修復ツール

このようにして、破損したmp4のすべての長さを修復することができました。これを行った後、VLC(ビデオリーダー)でビデオを見ることができました。

..しかし、editing-softare(VirtualDub、Video to Videoなど)で変換することはできませんでした。

そこで、私は組み合わせた手順を使用しました:A)ビデオ全体の長さを回復するためにRiccardoソリューション(コメントで説明されている)を使用するB)元のソリューション(recover-mp4-to-h264.Zip)によって復元されたビデオを再パスして正しくする一般的な編集ソフトウェアで読み取り可能です。これが人々を助けることができることを願っています。

1
Marco