GithubHelp home page GithubHelp logo

egui-video's Introduction

egui-video, a video playing library for egui

crates.io docs license

main_L3Yxngkb7T.mp4

plays videos in egui from file path or from bytes

dependancies:

  • requires ffmpeg 6. follow the build instructions here
  • requires sdl2. by default, a feature is enabled to automatically compile it for you, but you are free to disable it and follow these instructions

usage:

/* called once (top level initialization) */

{ // if using audio...
    let audio_device = egui_video::AudioDevice::new()?;
    
    // don't let audio_device drop out of memory! (or else you lose audio)

    add_audio_device_to_state_somewhere(audio_device);
}
/* called once (creating a player) */

let mut player = egui_video::Player::new(ctx, my_media_path)?;

{ // if using audio...
    player = player.with_audio(&mut my_state.audio_device)
}
/* called every frame (showing the player) */
player.ui(ui, player.size);

contributions

are welcome :)

current caveats

  • need to compile in release or opt-level=3 otherwise limited playback performance

egui-video's People

Contributors

dr-42 avatar n00kii avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

egui-video's Issues

compile error

rror[E0635]: unknown feature proc_macro_span_shrink
--> C:.cargo\registry\src\mirrors.ustc.edu.cn-61ef6e0cd06fb9b8\proc-macro2-1.0.56\src\lib.rs:92:30
|
2 | feature(proc_macro_span, proc_macro_span_shrink)

Add subtitle support

I tried to think of a way to create a pull request myself, but the subtitle decoder has a different api and it has this single function which takes a packet and a Subtitle buffer. Hence I cannot fit it in the Streamer trait. Any ideas on how to go about it? I know I have been troubling you a lot recently, but can you look into it?

Please and thank you.

Video and audio desync

It usually only takes a couple seconds, at most 30 seconds.
(Yes, I am compiling on release build).

I did this:

        //let frame_timer_guard = self.frame_timer.schedule_repeating(video_wait_duration, move || {
        let frame_timer_guard = self.frame_timer.schedule_repeating(Duration::zero(), move || {
            play(&video_streamer_ref);
            ctx.request_repaint();
        });

and it did not have trouble decoding video unthrottled, so it's not a problem of getting frames to the GPU.

I did this test real quick with OBS and the example program:
Video
so the video stream is playing slightly too fast on my machine.

(I also tried this on chubby1968's fork (commit 7abbc48), and I have the same problems.)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.