FixMyVideos

動画の再生時間が0:00と表示される — 修正方法

ファイルは数百メガバイト(またはギガバイト)です。Finder/Explorerのプレビューサムネイルが表示されている可能性もあります。しかし、QuickTime、Finderの[情報の取得]、Premiereのインポートダイアログ、および「ffprobe」では、再生時間は「0:00」と表示されます。ビデオには長さがないようです。

これはほとんどの場合、コンテンツの問題ではなく、メタデータの問題です。ビデオデータはファイルにあります。ビデオの長さを示す情報が欠落しているか、破損しています。

MP4/MOVでの持続時間の場所

再生時間は、MOOV内の「mvhd」アトム(ムービーヘッダー)に保存され、またトラックごとに「tkhd」と「mdhd」に保存されます。3つすべてが一致している必要があります。MOOVが完全に欠落している場合、3つすべてが欠落しています。読み取るものがないため、再生時間は0と表示されます。

3つのパターン:

パターン1:MOOVが欠落している→再生時間は0を示す

MOOV アトムが見つかりませんと同じ根本原因です。インデックスが書き込まれる前に録画が中断されました。durationフィールドはファイルのどこにも存在しません。

ヒント:ファイルは大きいですが、「ffprobe」は「moov atom not found」を返し、durationは0または「N/A」と報告されます。

これは最も回復可能なケースです。

パターン2:MOOVは存在するが、タイムスケール= 0または期間= 0

MOOVは存在します。「mvhd」内のdurationフィールドがゼロに設定されています(またはtimescaleがゼロで、それによって表示されるdurationがゼロになっています)。これは、カメラが停止する前に期間の入力が完了しなかった部分書き込みMOOVで時々発生します。

兆候:「ffprobe」はストリーム数とコーデック情報を返しますが、期間は0またはN/Aです。ファイルは再生されますが、プレーヤーはシークできず、進捗バーも表示されません。

多くの場合、フレームのタイムスタンプから再計算するリムックスによって修正されます。

ffmpeg -i broken.mp4 -c copy fixed.mp4

FFmpegは、コーデックレベルのタイムスタンプから持続時間を再計算し、新しいMOOVを書き込みます。

パターン3:非常に長い録画での整数オーバーフロー

あまり一般的ではありません。一部の古いツールは、高いタイムスケールの32ビット値として時間を保存します。これは、数時間を超える録画の場合にオーバーフローします。値は負の数値にラップされるか、ゼロとして読み取られます。

手がかり:ファイルは数時間の録画(防犯カメラ、ライブストリーム、長時間のイベント)からのものです。FFmpegのリミュックスは、必要に応じて64ビットの期間を書き込むことでこれを修正します。

どのパターンかを判断する方法

ffprobe -v error -show_format broken.mp4

出力を見てください。

'duration' 値パターン
'N/A'および"moov atom not found"警告パターン1
ストリーム情報が存在する '0.000000'パターン2
負の数または大きなナンセンスパターン3
実数だが間違っている以下を参照

持続時間が実数値であるものの間違っている場合(たとえば、ファイルには12分と表示されているものの、実際の録画は47分である場合)、これは別の「間違った持続時間」パターンであり、通常はタイムスケールの不一致です。FFmpegで再マルチプレクシングすると、ほとんどの場合修正されます。

自分で試せること

パターン1の場合:MOOVリカバリガイドを参照してください。

パターン2と3の場合、最も簡単な修正はFFmpegのリムックスです。

ffmpeg -i broken.mp4 -c copy out.mp4

これにより、フレームのタイムスタンプから計算された時間でMOOVが書き換えられます。通常はうまくいきます。

'-c copy'で再生時間が修正されない場合は、オーディオストリームの再エンコードを強制します(これにより、タイムスタンプのメタデータが確実に再生成されます)。

ffmpeg -i broken.mp4 -c:v copy -c:a aac out.mp4

どちらも機能しない場合は、コーデックストリームのタイムスタンプデータも破損しており、より困難な回復の領域にあります。

当社の復元によるゼロ期間ファイルの処理方法

  • パターン1 — フレームからの完全なMOOV合成。期間は、「mdat」で検出されたフレームのカウントとタイミングから計算されます。
  • パターン2/3 — MOOVはゼロから再構築されます(既存のMOOVは信頼できません)。録画の長さがそれを正当化する場合、64ビットの値で書き込まれた時間。コーデックの自然なレートに一致するように選択されたタイムスケール。
  • 4 GBを超えるファイルの場合は「co64」 これにより、チャンクオフセットが期間の修正とともにオーバーフローすることがありません。

手順

  1. ファイルをアップロード
  2. 約1分後に5秒間の無料プレビュー。復元されたファイルの再生時間には、実際の録画時間が表示されます。
  3. 成功した場合にのみお支払い。

FAQ

私のファイルはVLCでは正しい長さを表示していますが、QuickTimeでは0:00と表示されています。 寛容なリーダーと厳格なリーダー。VLCは、MOOVが0と表示している場合でもフレームのタイムスタンプから再生時間を計算します。QuickTimeはMOOVを信頼します。Re-muxは両方を修正します。

ファイルは防犯カメラ/ドライブレコーダーからのものです。数時間の録画では再生時間が正しくありません。 パターン3の可能性が高い(整数オーバーフロー)。現在のビルドでFFmpeg re-muxを使用すると、ほとんどの場合、この問題が修正されます。

回復したファイルには再生時間がありますが、プレーヤーはシークしません。 多くの場合、「stss」(同期サンプルテーブル)が欠落しています。プレーヤーには長さがありますが、シークするキーフレームマップがありません。回復は、観測されたIDR/キーフレーム位置から「stss」を再構築します。

別のツールの復元からのファイルで、期間がゼロになります。 他のツールの復元により、部分的なMOOVが生成された可能性があります。元の(復元前の)ファイルをアップロードしてください。ゼロからやり直します。

私の映像は安全ですか? フランスにあるサーバーで、48時間後に自動削除され、トレーニングや共有には一切使用されません。プライバシーポリシー

関連

ファイルをアップロード →

無料プレビュー · 義務はありません

動画を復元する準備はできましたか?

ファイルをアップロードしてください。約1分で5秒間の無料プレビューをご覧いただけます。プレビューが正しいと思える場合にのみお支払いください。

動画をアップロード →