49405


現在、動画のframe rateを正確に表示する方法を探しています。

まず、ここまでに行ってきたことを少し記述します。  
raspberry pi 3とそのcamera moduleを使って、動画を製作しています。  
具体的には、raspividを使って、以下の3つのコードを試しました。

[code]

    raspivid -w 640 -h 480 -fps 30 -t 10000 -o test30fps.h264
    raspivid -w 640 -h 480 -fps 90 -t 10000 -o test90fps.h264
    raspivid -w 640 -h 480 -fps 180 -t 10000 -o test180fps.h264
    
[/code]

ここでは、各動画(.h264)は、640x480のサイズで、上から毎秒30, 90, 180フレームのスピードで、10秒間撮影しています。

このframe speedを測定するために、ffmpegを使いましたが、  
すべて25fpsと表示されてしまいます。

ここではtest90fps.h264の結果を例として表示します。

[code]

    ＞ffmpeg -i test90fps.h264
    
    Input #0, h264, from 'test90fps.h264':
      Duration: N/A, bitrate: N/A
        Stream #0:0: Video: h264 (High), yuv420p, 640x480, 25 fps, 25 tbr, 1200k tbn, 50 tbc
    
[/code]

ここで、質問ですが、上記の3つの動画のframe
speedを正しく表示してくれる方法を探しています。test30fps.h264では30fpsであり、test90fps.h264では90fpsと表示したいです。  
ffmpegをここでは使っていますが、この方法に固執してはいません。

動画のframe rateの正しい表示をお知りの方がおられましたら、  
ご教授をお願いします。

ただし、上記のコードを使ってraspberry piで作成される動画のframe
rateは動画を見た限りでは、変わっていると思っています。しかし、この作成の時点で違うかもしれません。


CC BY-SA 4.0
2018-10-17T23:23:00.560
49397
2018-10-18T03:02:17.123
11048
question
ubuntu raspberry-pi ffmpeg
動画のframe rateを正確に表示する方法


残念ながら、h264ファイル（正確にはH.264 Bitstreamフォーマット）はフレームレート情報を正しく保持できません(※)。FFmpegが表示する
"25fps" は、単に入力ファイルにはフレームレート情報がないためにデフォルト値を表示しているだけです。

[raspivid公式ドキュメント](https://www.raspberrypi.org/documentation/usage/camera/raspicam/raspivid.md)にも記載あるように、MP4ファイルフォーマットではフレームレートが保持されます。フレームレートを知っているのはあなた自身ですから、「raspividへのキャプチャFPS指定」と「h264→mp4変換へのFPS指定」を組み合わせることで、正しいフレームレート情報が含まれた動画ファイルを生成できます。

※: 厳密にはH.264
BitstreamでもFPSを格納するオプション的なフィールドは存在しますが、該当フィールドを正しく読み書きするかはアプリケーション依存です。大抵は無視されるようです。

* * *

実環境を所有していないため単なる推測ですが、所望されている高フレームレート(180fps)は期待通りに動作しないはずです。[カメラモジュール仕様](https://www.raspberrypi.org/documentation/hardware/camera/)
もあわせて参照ください。


CC BY-SA 4.0
2018-10-18T02:45:48.380
49405
2018-10-18T03:02:17.123
2018-10-18T03:02:17.123
3060
49
49397
answer