動画の記録失敗
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
できた