0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

GoPro動画からフレームドロップを検知する方法【ffprobe活用】

Last updated at Posted at 2025-04-27

やったことを忘れないようにするためのメモです。

🎥 はじめに

GoProなどのアクションカメラで撮影した動画では、フレームドロップ(一部のフレームが記録されない現象)が発生することがあります。
本記事では、ffprobeを使って各フレームのタイムスタンプを取得し、フレームドロップを検知する方法をまとめます!(文章のほとんどはChatGPTで作っています。)


🛠 環境構築

# Condaで新しい環境を作成
conda create -n ffmpeg-env ffmpeg
conda activate ffmpeg-env
  • OS: Linux (WSL2でも可)
  • 使用ツール: ffprobeffmpegに含まれます)

🔍 フレーム単位でタイムスタンプを取得する

1. ffprobeコマンド実行

動画ファイル(例:hero8.mp4)に対して、以下のコマンドを実行します。

ffprobe -select_streams v -show_frames -print_format json samples/hero8.mp4 > output.txt

オプション説明:

  • -select_streams v : 映像ストリームのみ対象
  • -show_frames : 各フレーム情報をすべて出力
  • -print_format json : JSON形式で出力
  • > output.txt : ファイルに保存

これで、全フレーム情報output.txtに記録されます!


2. 出力結果の確認

output.txtを見ると、各フレームについて次のような情報が記録されています。

{
    "media_type": "video",
    "stream_index": 0,
    "pts_time": "0.000000",
    ...
},
{
    "media_type": "video",
    "stream_index": 0,
    "pts_time": "0.033367",
    ...
}

pts_time が、各フレームのタイムスタンプ(秒単位)を示しています!pts_time は最初のフレームからの経過タイムスタンプを表しているので、そのフレームが何時何分何秒に撮影されたかを復元するには tmcd を確認し、pts_time の値を加えることで復元することができます。(Tentacle SYNCなどで記録されたタイムコードはこちらに入る)


📈 フレームドロップ検出の流れ

流れまとめ

  1. pts_timeのリストを取得する
  2. 隣接する2つのpts_timeの差分(Δt)を計算する
  3. 理想的なフレーム間隔(例:0.033367秒)と比較する
  4. Δtが異常に大きい場合 ⇒ フレームドロップ発生!

実際の例

正常な場合(30fps前後):

フレーム番号 pts_time Δt (秒)
1 0.000000 -
2 0.033367 0.033367
3 0.066733 0.033366
4 0.100100 0.033367

異常があった場合:

フレーム番号 pts_time Δt (秒)
100 3.333000 -
101 3.399000 0.066000 (※大きすぎる!)

⚠️ 注意ポイント

  • fps数は撮影モード(FPS設定)によって異なるので、必ず事前に確認!
  • 撮影時のブレや熱暴走、保存メディアエラーなどがフレームドロップの原因になります

🏁 まとめ

本記事では、

  • ffprobeで各フレームのタイムスタンプを取得
  • フレーム間の間隔からドロップを検出
    という手順を紹介しました。

この方法を使えば、動画の品質検査データ解析前の事前チェックが確実にできるようになります!


📚 参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?