Crates.io | bevy_video |
lib.rs | bevy_video |
version | 0.9.1 |
source | src |
created_at | 2023-01-18 20:31:35.449166 |
updated_at | 2023-01-18 20:39:10.166302 |
description | Decode and render h264 video in Bevy |
homepage | |
repository | https://github.com/PortalCloudInc/bevy_video |
max_upload_size | |
id | 762027 |
size | 9,645 |
Stream or play video in your Bevy app!
use bevy::prelude::*;
use bevy_video::prelude::*;
fn main() {
App::new()
.add_plugins(DefaultPlugins)
.add_plugin(VideoPlugin)
.add_startup_system(setup)
.add_system(push_frame)
.run();
}
fn setup(
mut commands: Commands,
mut images: ResMut<Assets<Image>>,
) {
let (image_handle, video_decoder) = VideoDecoder::create(&mut images);
// decoder
commands.spawn(video_decoder);
// ...
}
fn push_frame(
decoders: Query<&VideoDecoder>,
mut materials: ResMut<Assets<MaterialThatUsesTheImage>>,
) {
for _ in materials.iter_mut() {
// otherwise the image on screen wont update
}
for decoder in decoders.iter() {
decoder.add_video_packet(/* Vec<u8> representing an H.264 packet */);
// Note: packets are decoded asynchronously in another thread
// The Images will update automatically
}
}