#multimedia #ffmpeg #video-player #api-bindings

rust_ffplay

Safe and idiomatic Rust wrapper for FFplay

2 releases (1 stable)

Uses new Rust 2024

1.0.0 Jul 19, 2025
0.1.0 Jul 19, 2025

#429 in Video

MIT/Apache

120KB
3K SLoC

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;

// Play a video file
let mut player = FFplayBuilder::play("video.mp4")
    .spawn()
    .await?;

// Wait for playback to complete
player.wait().await?;

Advanced usage

use ffplay_rs::{FFplayBuilder, ShowMode};
use ffplay_rs::playback::SyncType;
use ffmpeg_common::{Duration, StreamSpecifier};

// 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?;

Audio visualization

use ffplay_rs::{FFplayBuilder, ShowMode};

// 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?;

Dependencies

~9–14MB
~166K SLoC