1.4 KiB
1.4 KiB
author | draft | categories | date | tags | keywords | title | relpermalink | url | decription | |||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
usbharu | true |
|
2023-11-16T20:36:52+09:00 |
|
|
JavaCVを利用して動画を特定のFPSにする | posts/2023-11-16/ | posts/2023-11-16/ | JavaCVを利用して動画を特定のFPSで再エンコードし、保存します。 |
取りあえず動くリポジトリ
https://git.usbharu.dev/usbharu/javacv-demo
JavaCV で FPS を変更する
GPU を利用したフレーム補間などではなく、単にフレームを複製、もしくは削減してフレーム数を調整します。
このコードの肝はwhile
がネストしている部分で、フレームが増えたり減ったりして音声と同期が取れなくなった分を多めに取得することで途中で無音になる問題を解決しています。
while (true) {
val grab = grabber.grab() ?: break
println("GRAB ${grab.timestamp} : ${grab.image} ${grab.samples}")
if (grab.image != null || grab.samples != null) {
filter.push(grab)
}
while (true) {
val frame = filter.pull() ?: break
it.record(frame)
}
}