Help us understand the problem. What is going on with this article?

ffmpegを使って、mp4ファイルの結合とフレームレートの水増し

More than 1 year has passed since last update.

動画の記録失敗

30fpsで、1分1ファイル記録して、あとで1時間分に結合しようとおもったんだけど
なんだか早回しみたいな動画しか取れてなかった。
1分のファイルなのに、7秒ぐらいしか再生されない。
早回しなのか、フレーム数が足りていないのか…?

とりあえず結合

結合するために、ファイルのリストを作っておく必要がある。
今回はWindowsでやったのでファイルパスもそんな感じ。¥マークは2つ

20191129_16.txt
file D:\\moviefiles\\20191129_1600.mp4
file D:\\moviefiles\\20191129_1601.mp4
file D:\\moviefiles\\20191129_1602.mp4
…

このファイルを指定して実行する

ffmpeg.exe -f concat -safe 0 -i 20191129_16.txt -c copy 20191129_16.mp4

結合したファイルのフレーム数を調べてみる。

30fpsなら、1時間で108,000フレームあるはず…

ffprobe.exe -v error -i 20191129_16.mp4 -select_streams v:0 -show_entries stream=nb_frames -of csv=p=0
23992

なかった。結局想定フレームレート30fpsに対して20%程度しか記録できていなかった。
フレームを水増しして、実時間に合わせるしかない。

フレーム数の水増し

どれだけ増やせば理想のフレーム数になるか…
1時間なら108000フレームなので…
$108000 / 23992= 4.5015005...$
こうなる。

それに合わせてこんな感じで実行

ffmpeg.exe -y -i 20191129_16.mp4 --filter:v "setpts=4.5015005*PTS" 20191129_16_a.mp4

実行後、フレーム数を再確認

ffprobe.exe -v error -i 20191129_16_a.mp4 -select_streams v:0 -show_entries stream=nb_frames -of csv=p=0
108000

できた

h-sh
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away