Safe and idiomatic Rust wrapper for FFplay
This crate provides a high-level, safe interface to FFplay functionality, allowing you to play multimedia files with various options.
Examples
Basic playback
use ffplay_rs::FFplayBuilder;
# async fn example() -> ffmpeg_common::Result<()> {
// Play a video file
let mut player = FFplayBuilder::play("video.mp4")
.spawn()
.await?;
// Wait for playback to complete
player.wait().await?;
# Ok(())
# }
Advanced usage
use ffplay_rs::{FFplayBuilder, ShowMode};
use ffplay_rs::playback::SyncType;
use ffmpeg_common::{Duration, StreamSpecifier};
# async fn example() -> ffmpeg_common::Result<()> {
// Play with custom options
let mut player = FFplayBuilder::new()?
.input("https://example.com/stream.m3u8")
.size(1280, 720)
.fullscreen(false)
.window_title("My Stream")
.seek(Duration::from_secs(30))
.duration(Duration::from_secs(120))
.volume(75)
.audio_stream(StreamSpecifier::Index(1))
.sync(SyncType::Audio)
.autoexit(true)
.spawn()
.await?;
// Kill the player after some time
tokio::time::sleep(std::time::Duration::from_secs(10)).await;
player.kill().await?;
# Ok(())
# }
Audio visualization
use ffplay_rs::{FFplayBuilder, ShowMode};
# async fn example() -> ffmpeg_common::Result<()> {
// Play audio with waveform visualization
let mut player = FFplayBuilder::play("audio.mp3")
.show_mode(ShowMode::Waves)
.window_title("Audio Player")
.spawn()
.await?;
player.wait().await?;
# Ok(())
# }