2023-11-16の記事を追加
This commit is contained in:
parent
e8c142c481
commit
725b392279
|
@ -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)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
```
|
Loading…
Reference in New Issue