AudioVideoExample.kt
src/jvmMain/kotlin/afield/examples/video/AudioVideoExample.kt · 44 lines
package afield.examples.video
import afield.graphics.texture.video.AudioClock
import afield.graphics.texture.video.AudioDecoder
import afield.graphics.texture.video.AudioPlayer
AudioVideoExample demonstrates synchronized audio/video playback with clock integration.
fun basicAudioVideoPlaybackWithClock()
Example: Basic synchronized audio/video playback with clock
fun basicAudioVideoPlaybackWithClock() {
val videoPath = "path/to/video.mp4"
// Setup audio
val audioDecoder = AudioDecoder(videoPath)
audioDecoder.open(44100, 2)
val audioPlayer = AudioPlayer(44100, 2)
audioPlayer.initialize()
// Create AudioClock as master timing source
val audioClock = AudioClock(audioPlayer)
// Create VideoTexture with audio clock for sync
// val videoTexture = VideoTexture(renderer, clock = audioClock)
// videoTexture.load(videoPath)
// Pre-fill and start
repeat(3) { audioDecoder.decodeFrame()?.let { audioPlayer.queueAudioFrame(it) } }
audioPlayer.play()
// videoTexture.play()
// Render loop: video auto-syncs to audio clock
// audioPlayer.processBuffers()
// while (audioPlayer.getFreeBufferCount() > 0) {
// audioDecoder.decodeFrame()?.let { audioPlayer.queueAudioFrame(it) }
// }
// videoTexture.update(commandBuffer) // Syncs to audioClock internally
audioPlayer.cleanup()
audioDecoder.close()
}