2023-11-16の記事を追加

This commit is contained in:
usbharu 2023-11-16 20:45:38 +09:00
parent e8c142c481
commit 725b392279
Signed by: usbharu
GPG Key ID: 6556747BF94EEBC8
1 changed files with 44 additions and 0 deletions

View File

@ -0,0 +1,44 @@
---
author: usbharu
draft: true
categories:
- 技術
date: 2023-11-16T20:36:52+09:00
tags:
- Kotlin
- JavaCV
- FFmpeg
keywords:
- Kotlin
- JavaCV
- FFmpeg
title: JavaCVを利用して動画を特定のFPSにする
relpermalink: posts/2023-11-16/
url: posts/2023-11-16/
decription: JavaCVを利用して動画を特定のFPSで再エンコードし、保存します。
---
取りあえず動くリポジトリ
[https://git.usbharu.dev/usbharu/javacv-demo](https://git.usbharu.dev/usbharu/javacv-demo)
## JavaCV で FPS を変更する
GPU を利用したフレーム補間などではなく、単にフレームを複製、もしくは削減してフレーム数を調整します。
このコードの肝は`while`がネストしている部分で、フレームが増えたり減ったりして音声と同期が取れなくなった分を多めに取得することで途中で無音になる問題を解決しています。
```kotlin
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)
}
}
```