#audio-player #egui #transcription #audio-transcription #video

egui_player

A player for rust using egui. Currently audio playback and transcription are supported

3 releases

Uses new Rust 2024

0.1.3 Oct 22, 2025
0.1.2 Jul 6, 2025
0.1.1 Jul 5, 2025
0.1.0 Jul 5, 2025

#1712 in Audio

Unlicense

53KB
522 lines

A Player for Rust using Egui

Playback files

https://github.com/user-attachments/assets/f2dc0ac1-1248-46c2-8619-f9e413a9c515

Interactive Transcription

transcript_demo

Usage

First, add Player to your App variables. Insert the path to the file to be played in new()

New takes an enum called InputMode. This lets you play a file from a filepath (String) or with bytes (Vec<u8>)

struct MyApp {
    player: Player,
}

impl Default for MyApp {
    fn default() -> Self {
        Self {
            player: Player::from_path("file_path"),
        }
    }
}

For bytes, enter the following line instead:

player: Player::from_bytes(bytes),

For transcriptions: Set up an async block to allow for asynchronous tokio functions

fn main() {
    let rt = Runtime::new().unwrap();
    let _ = rt.block_on(async {
        eframe::run_native(
            "Player Example",
            NativeOptions::default(),
            Box::new(|_| Ok(Box::new(MyApp::default()))),
        )
    });
}

Now, under the update function, add this line to display the player:

self.player.ui(ui);

For faster transcription, run with the release flag

Examples

To play your own files, clone/download this repository and use: cargo run --example main --release

Supported Audio Formats

Format Playback Transcription
mp3
m4a
wav
flac

Supported Video Formats

Currently working on support

Credits

Dreamweaver.mp3 track in demo assets made by @romms921

Dependencies

~46–98MB
~1.5M SLoC