私の .mp4 の 25% に FFMPEG、OpenCV で「ヘッダーの読み取りエラー」が発生しますが、ビデオはすべて正常に再生されます

私の .mp4 の 25% に FFMPEG、OpenCV で「ヘッダーの読み取りエラー」が発生しますが、ビデオはすべて正常に再生されます

私は Reolink セキュリティ カメラを持っていて、FTP 経由で .mp4 ファイルをローカル サーバーに保存しています。その後、独自の Python ベースのアプリケーションでそれらのビデオを処理しています。過去 1 年ほどは問題なく動作していますが、Python コンソール (OpenCV から) に「ヘッダーの読み取りエラー」に関する警告が頻繁に表示されていましたが、とにかく動作していたため無視していました。

新しいサーバーを入手し、すべてのソフトウェアを再インストールして以来、Debian Linux、Python、OpenCVのバージョンが更新されましたが、エラーが許容されなくなり、それらのビデオをロードできません。心配なことに、FTP経由で保存されたビデオの約4分の1がPythonアプリでこのエラーを出し、サーバーまたは(Mac)ラップトップでFFMPEG経由でロードしようとすると、エラーが発生します。[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7ff492000400] error reading header [path]: Operation not permitted

ご覧いただけるように、ビデオの 1 つを Dropbox に置きました。https://www.dropbox.com/s/tu4ddegh6yn05nu/ErrorReadingHeader.mp4?dl=0

この問題の原因や解決方法について、何かアイデアをお持ちの方はいらっしゃいますか? いくつかの選択肢があると思いますが、どれを進めるにも情報が足りません。

  • ビデオが破損しないように修正してください。製造元の Reolink に、何か説明できるか問い合わせました...
  • FFMPEG などでエラーを許容するようにします。方法はわかりません...また、OpenCV がどのコーデックを使用しているかもわかりません (FFMPEG ではないことはわかっているので、これらのヘッダーに満足していないコーデックが複数あります)。
  • 処理する前にビデオを「修復」してみてください。解決策としてはこれなりの効果があるかもしれませんが、非常に非効率なため、できれば避けたいものです...ただし、これは最終手段としてあります。

どうもありがとう!

答え1

サンプル MP4 は断片化されているため、サンプル (フレーム) のグローバル インデックスではなく、メタデータはフラグメントごとに存在します。各フラグメントのメタデータ内には、trunフラグメント内のすべてのサンプルのデータを含むトラック ラン ボックスがあります。2017 年 10 月 (ffmpeg 4.0+) に変更が行われ、trun ボックスでフラグメント内に 0 個のサンプルが格納されていることが示されると、ffmpeg は終了するようになりました。

mp4box または ffmpeg の古いバージョンは失敗しないので、それらを使用してファイルを通常の MP4 に再多重化することができます。

ffmpeg-3.4 -i in.mp4 -c copy out.mp4

または

mp4box -add in.mp4 -new out.mp4

関連情報