Giter VIP home page Giter VIP logo

glide's Introduction

Glide Media Player

Glide is a simple and minimalistic media player relying on GStreamer for the multimedia support and GTK for the user interface. Glide should be able to play any multimedia format supported by GStreamer, locally or remotely hosted. Glide is developed in Rust and was tested on Linux and macOS so far. It should also work on Windows, please let me know if anyone managed to test it on that platform.

I aim to keep this project simple and it probably won't grow to become a very complicated GUI. If you feel adventurous and willing to help, feel free to pick up a task from the TODO list and open a PR. Users are also encouraged to file issues on the Github bug tracker of course.

alt text alt text

Installation

Install it with Cargo:

  1. Install RustUp:

    curl https://sh.rustup.rs -sSf | sh
    
  2. Install GStreamer and GTK. On Debian/Linux:

    sudo apt install gstreamer1.0-plugins-{base,good,bad} libgstreamer-plugins-{bad,base}1.0-dev
    sudo apt install libgtk-4-dev gstreamer1.0-gl libadwaita-1-dev
    

    On macOS, with brew:

    brew install pango gstreamer gtk+4 libadwaita
    brew install --build-from-source --with-pango --with-{libogg,libvorbis,opus,theora} gst-plugins-base
    brew install --build-from-source --with-libvpx gst-plugins-good
    brew install gst-plugins-bad
    
  3. Install Glide:

    cargo install glide
    # or if you want to have automatic update checking:
    cargo install --features self-updater glide
    

Packaging status

Flatpak

This is the most recommended way to use Glide as it will allow the maintainers to more easily reproduce reported bugs. There are two different flavours:

The Glide stable version is available on Flathub. After setting up the flathub Flatpak remote as documented in Flathub, install with the following command, or through GNOME Software.

flatpak install net.baseart.Glide

Users interested in the latest development snapshot of Glide can install the Devel version:

flatpak install https://philn.github.io/glide/glide.flatpakref
flatpak run net.baseart.Glide.Devel

Fedora

Available in COPR:

sudo dnf copr enable atim/glide-rs -y
sudo dnf install glide-rs

Using Glide

When used from the installed Flatpak, Glide can be set up as default media player, so double-clicking on a media file in your favorite file browser should bring up Glide.

Glide can also be used from the command line interface. In a terminal:

$ # starting the flatpak version
$ flatpak run net.baseart.Glide /path/to/localfile.mp4 http://some.com/remote/file.mp4
$ # starting the version installed with cargo or traditional distro packages
$ glide /path/to/localfile.mp4 http://some.com/remote/file.mp4

Once running you can use some menus to switch the subtitle and audio tracks, play, pause, seek and switch the window to fullscreen. There are also some keyboard shortcuts for these actions:

  • show shortcuts window: meta-? or ctrl-?
  • play/pause: space
  • seek forward: meta-right or ctrl-right
  • seek backward: meta-left or ctrl-left
  • switch to fullscreen: meta-f or ctrl-f
  • exit from fullscreen: escape
  • quit the application: meta-q or ctrl-q
  • load a subtitle file: meta-s or ctrl-s
  • increase volume: meta-up or ctrl-up
  • decrease volume: meta-up or ctrl-down
  • mute the audio track: meta-m or ctrl-m
  • open a new file: meta-o or ctrl-o

glide's People

Contributors

alatiera avatar bakerty avatar ceyusa avatar city-busz avatar ezequielgarcia avatar jimmac avatar k0ur05h avatar kianmeng avatar philn avatar sdroege avatar tathanhdinh avatar thiblahute avatar tim77 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  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  avatar  avatar  avatar  avatar  avatar  avatar

glide's Issues

Looking to add tegra decoding support

The nvidia tegra series uses a proprietary decoder pipeline for video decoding. It can still be used with glimagesink with the correct pipeline (example below).

gst-launch-1.0 souphttpsrc is-live=true location="$(youtube-dl --format "best[ext=mp4][protocol=https]" --get-url https://www.youtube.com/watch?v=Uo2SNtFofWI)" ! qtdemux name=demux ! queue ! h264parse ! nvv4l2decoder ! nvvidconv ! glimagesink -e demux.audio_0 ! queue ! avdec_aac ! audioconvert ! pulsesink -e

Unfortunately the automatic decoding pipeline in gstreamer does not do this and this has to be manually specified.

Spacebar / keyboard shortcuts break after using sub-dialogs or radiobuttons in the menubutton

  1. Open a video such as the sample mentioned in #118
  2. Notice that spacebar is able to play/pause
  3. Click the menu button, navigate to the subtitles menu, and click a different subtitles track radiobutton

Alternatives to step 3:

  • open the About dialog, then close it (note that any unimportant dialog should be dismissable with the Esc button, too…)
  • open the file chooser dialog
  • open the keyboard shortcuts dialog

Result: keyboard shortcuts don't work anymore, until you click the Play button on the toolbar.

I think I've seen this happen in other situations / other places in the app, but I don't remember which exactly. This is the easiest way to reproduce the issue.

Is this Meson/Ninja behaviour correct?

I cloned the repository and then created a Meson build for it. The build itself seems fine, but the install stage does:

|> ninja install
[0/1] Installing files.
Installing glide to /home/users/russel/Built/bin
This file does not have an rpath.
This file does not have a runpath.
Installing /home/Checkouts/Git/Glide/data/net.baseart.Glide.desktop to /home/users/russel/Built/share/applications
Installing /home/Checkouts/Git/Glide/data/net.baseart.Glide.svg to /home/users/russel/Built/share/icons/hicolor/scalable/apps
Installing /home/Checkouts/Git/Glide/data/net.baseart.Glide.appdata.xml to /home/users/russel/Built/share/appdata
Running custom install script '/home/Checkouts/Git/Glide/scripts/meson_post_install.py'
Update icon cache...
gtk-update-icon-cache: Cache file created successfully.
Compiling gsettings schemas...
Error opening directory “/home/users/russel/Built/share/glib-2.0/schemas”: No such file or directory

Should I be seeing something different?

[Feature Request] Playback Speed

Thanks for this lovely and useful player.
Please add playback speed, it's quite essential feature for every player.

Thanks again.

Seperated UI

Hi @philn
As we've discussed brieftly in #16, could you please take a look at this branch where I'm trying to separate UI design from the code.

The work is not ready yet, it's rather a WIP to get your feedback.

Many thanks for any comment.

State of Windows support

Hi,

I was able to compile the latest GIT checkout with Rust 1.66.0 with the stable-x86_64-pc-windows-msvc toolchain, along with Visual Studio 2015, however:

  • I had to drop the following lines, for pretty clear reasons:
 fn main() -> anyhow::Result<()> {
-    #[cfg(not(unix))]
-    {
-        return Err(anyhow::anyhow!("Add support for target platform"));
-    }
  • The program panicked on startup, with RUST_BACKTRACE=full I had:
%HOMEPATH%\.cargo\bin\glide e:/mp3/BeyondBeauty/4.mp3
thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: BoolError { message: "Failed to get cast value to a different type Unexpected None", filename: "C:\\Users\\fanc999\\.cargo\\registry\\src\\github.com-1ecc6299db9ec823\\glib-0.15.12\\src\\object.rs", function: "glib::object", line: 2353 }', C:\Users\fanc999\.cargo\registry\src\github.com-1ecc6299db9ec823\glib-0.15.12\src\object.rs:2359:42
stack backtrace:
   0:     0x7ff61e2a3972 - std::backtrace_rs::backtrace::dbghelp::trace
                               at /rustc/69f9c33d71c871fc16ac445211281c6e7a340943/library\std\src\..\..\backtrace\src\backtrace\dbghelp.rs:98
   1:     0x7ff61e2a3972 - std::backtrace_rs::backtrace::trace_unsynchronized
                               at /rustc/69f9c33d71c871fc16ac445211281c6e7a340943/library\std\src\..\..\backtrace\src\backtrace\mod.rs:66
   2:     0x7ff61e2a3972 - std::sys_common::backtrace::_print_fmt
                               at /rustc/69f9c33d71c871fc16ac445211281c6e7a340943/library\std\src\sys_common\backtrace.rs:65
   3:     0x7ff61e2a3972 - std::sys_common::backtrace::_print::impl$0::fmt
                               at /rustc/69f9c33d71c871fc16ac445211281c6e7a340943/library\std\src\sys_common\backtrace.rs:44
   4:     0x7ff61e2bb6cb - core::fmt::write
                               at /rustc/69f9c33d71c871fc16ac445211281c6e7a340943/library\core\src\fmt\mod.rs:1209
   5:     0x7ff61e29f8fa - std::io::Write::write_fmt<std::sys::windows::stdio::Stderr>
                               at /rustc/69f9c33d71c871fc16ac445211281c6e7a340943/library\std\src\io\mod.rs:1682
   6:     0x7ff61e2a36bb - std::sys_common::backtrace::_print
                               at /rustc/69f9c33d71c871fc16ac445211281c6e7a340943/library\std\src\sys_common\backtrace.rs:47
   7:     0x7ff61e2a36bb - std::sys_common::backtrace::print
                               at /rustc/69f9c33d71c871fc16ac445211281c6e7a340943/library\std\src\sys_common\backtrace.rs:34
   8:     0x7ff61e2a5eb9 - std::panicking::default_hook::closure$1
                               at /rustc/69f9c33d71c871fc16ac445211281c6e7a340943/library\std\src\panicking.rs:267
   9:     0x7ff61e2a5b3a - std::panicking::default_hook
                               at /rustc/69f9c33d71c871fc16ac445211281c6e7a340943/library\std\src\panicking.rs:286
  10:     0x7ff61e2a6741 - std::panicking::rust_panic_with_hook
                               at /rustc/69f9c33d71c871fc16ac445211281c6e7a340943/library\std\src\panicking.rs:688
  11:     0x7ff61e2a64cd - std::panicking::begin_panic_handler::closure$0
                               at /rustc/69f9c33d71c871fc16ac445211281c6e7a340943/library\std\src\panicking.rs:579
  12:     0x7ff61e2a439f - std::sys_common::backtrace::__rust_end_short_backtrace<std::panicking::begin_panic_handler::closure_env$0,never$>
                               at /rustc/69f9c33d71c871fc16ac445211281c6e7a340943/library\std\src\sys_common\backtrace.rs:137
  13:     0x7ff61e2a6190 - std::panicking::begin_panic_handler
                               at /rustc/69f9c33d71c871fc16ac445211281c6e7a340943/library\std\src\panicking.rs:575
  14:     0x7ff61e2c6985 - core::panicking::panic_fmt
                               at /rustc/69f9c33d71c871fc16ac445211281c6e7a340943/library\core\src\panicking.rs:65
  15:     0x7ff61e2c6c23 - core::result::unwrap_failed
                               at /rustc/69f9c33d71c871fc16ac445211281c6e7a340943/library\core\src\result.rs:1791
  16:     0x7ff61e21f9f4 - <T as glib::object::ObjectExt>::property::hd380932258c6cfc7
  17:     0x7ff61e23a8d2 - <O as gtk::auto::widget::WidgetExt>::connect_configure_event::configure_event_trampoline::h6d2a81325c4e9ee1
  18:     0x7ffbfd840c0f - gtk_print_run_page_setup_dialog_async
  19:     0x7ffc568c71b3 - g_closure_invoke
  20:     0x7ffc568db48e - g_signal_stop_emission_by_name
  21:     0x7ffc568d7c3b - g_signal_emit_valist
  22:     0x7ffc568d7318 - g_signal_emit
  23:     0x7ffbfd805a2c - gtk_widget_path_append_for_widget
  24:     0x7ffbfd7f0386 - gtk_widget_event
  25:     0x7ffbfd53a470 - gtk_drawing_area_new
  26:     0x7ffbfd53a249 - gtk_drawing_area_new
  27:     0x7ffc568c7977 - g_signal_type_cclosure_new
  28:     0x7ffc568c71b3 - g_closure_invoke
  29:     0x7ffc568db283 - g_signal_stop_emission_by_name
  30:     0x7ffc568d7b95 - g_signal_emit_valist
  31:     0x7ffc568d7318 - g_signal_emit
  32:     0x7ffbfd7ee67c - gtk_widget_realize
  33:     0x7ffbfd7ee3f4 - gtk_widget_map
  34:     0x7ffbfd4eb8b2 - gtk_container_get_path_for_child
  35:     0x7ffbfd47be71 - gtk_box_get_center_widget
  36:     0x7ffbfd4e6534 - gtk_container_forall
  37:     0x7ffbfd4e89fc - gtk_container_get_path_for_child
  38:     0x7ffc568c7977 - g_signal_type_cclosure_new
  39:     0x7ffc568c71b3 - g_closure_invoke
  40:     0x7ffc568db283 - g_signal_stop_emission_by_name
  41:     0x7ffc568d7b95 - g_signal_emit_valist
  42:     0x7ffc568d7318 - g_signal_emit
  43:     0x7ffbfd7ee414 - gtk_widget_map
  44:     0x7ffbfd817d36 - gtk_window_set_interactive_debugging
  45:     0x7ffbfd46bba1 - gtk_application_window_get_help_overlay
  46:     0x7ffc568c7977 - g_signal_type_cclosure_new
  47:     0x7ffc568c71b3 - g_closure_invoke
  48:     0x7ffc568db283 - g_signal_stop_emission_by_name
  49:     0x7ffc568d7b95 - g_signal_emit_valist
  50:     0x7ffc568d7318 - g_signal_emit
  51:     0x7ffbfd7ee414 - gtk_widget_map
  52:     0x7ffbfd817b36 - gtk_window_set_interactive_debugging
  53:     0x7ffc568c7977 - g_signal_type_cclosure_new
  54:     0x7ffc568c71b3 - g_closure_invoke
  55:     0x7ffc568db283 - g_signal_stop_emission_by_name
  56:     0x7ffc568d7b95 - g_signal_emit_valist
  57:     0x7ffc568d7318 - g_signal_emit
  58:     0x7ffbfd7ede36 - gtk_widget_show
  59:     0x7ffbfd4e88c1 - gtk_container_get_path_for_child
  60:     0x7ffbfd7ee18f - gtk_widget_show_all
  61:     0x7ff61e226830 - glide::VideoPlayer::start::hce07537b4228dfc3
  62:     0x7ff61e21a7ff - <O as gio::auto::application::ApplicationExt>::connect_activate::activate_trampoline::hf51f5e3f29471816
  63:     0x7ffc568c71b3 - g_closure_invoke
  64:     0x7ffc568db48e - g_signal_stop_emission_by_name
  65:     0x7ffc568d7b95 - g_signal_emit_valist
  66:     0x7ffc568d7318 - g_signal_emit
  67:     0x7ff61e23ad98 - <O as gio::application::ApplicationExtManual>::connect_open::open_trampoline::h5fbab9cd703f6e6f
  68:     0x7ffc568c71b3 - g_closure_invoke
  69:     0x7ffc568db48e - g_signal_stop_emission_by_name
  70:     0x7ffc568d7b95 - g_signal_emit_valist
  71:     0x7ffc568d7318 - g_signal_emit
  72:     0x7ffc423c06fb - g_application_open
  73:     0x7ffc423c1043 - g_application_quit
  74:     0x7ffbfd467590 - gtk_application_get_menu_by_id
  75:     0x7ffc423c157f - g_application_run
  76:     0x7ff61e235412 - <O as gio::application::ApplicationExtManual>::run_with_args::h2b49f9062a12163a
  77:     0x7ff61e22c6c7 - glide::VideoPlayer::leave_fullscreen::h26148a341d8c778a
  78:     0x7ff61e236e76 - std::sys_common::backtrace::__rust_begin_short_backtrace::h0741fdf45da76bf9
  79:     0x7ff61e21808a - std::rt::lang_start::{{closure}}::hd20a9f1efe7defb0
  80:     0x7ff61e2999ee - core::ops::function::impls::impl$2::call_once
                               at /rustc/69f9c33d71c871fc16ac445211281c6e7a340943/library\core\src\ops\function.rs:286
  81:     0x7ff61e2999ee - std::panicking::try::do_call
                               at /rustc/69f9c33d71c871fc16ac445211281c6e7a340943/library\std\src\panicking.rs:483
  82:     0x7ff61e2999ee - std::panicking::try
                               at /rustc/69f9c33d71c871fc16ac445211281c6e7a340943/library\std\src\panicking.rs:447
  83:     0x7ff61e2999ee - std::panic::catch_unwind
                               at /rustc/69f9c33d71c871fc16ac445211281c6e7a340943/library\std\src\panic.rs:137
  84:     0x7ff61e2999ee - std::rt::lang_start_internal::closure$2
                               at /rustc/69f9c33d71c871fc16ac445211281c6e7a340943/library\std\src\rt.rs:148
  85:     0x7ff61e2999ee - std::panicking::try::do_call
                               at /rustc/69f9c33d71c871fc16ac445211281c6e7a340943/library\std\src\panicking.rs:483
  86:     0x7ff61e2999ee - std::panicking::try
                               at /rustc/69f9c33d71c871fc16ac445211281c6e7a340943/library\std\src\panicking.rs:447
  87:     0x7ff61e2999ee - std::panic::catch_unwind
                               at /rustc/69f9c33d71c871fc16ac445211281c6e7a340943/library\std\src\panic.rs:137
  88:     0x7ff61e2999ee - std::rt::lang_start_internal
                               at /rustc/69f9c33d71c871fc16ac445211281c6e7a340943/library\std\src\rt.rs:148
  89:     0x7ff61e22de3c - main
  90:     0x7ff61e2c1b55 - invoke_main
                               at f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl:64
  91:     0x7ff61e2c1b55 - __scrt_common_main_seh
                               at f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl:253
  92:     0x7ffc65187614 - BaseThreadInitThunk
  93:     0x7ffc659426a1 - RtlUserThreadStart

Thanks for the great work!

Doesn't start in Arch

Manjaro Gnome, built from AUR, I get this:

thread '<unnamed>' panicked at 'attempted to leave type `std::mem::ManuallyDrop<internal::SealedBag>` uninitialized, which is invalid', /build/rust/src/rustc-1.48.0-src/library/core/src/mem/mod.rs:658:9
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
Segmentation fault (core dumped)

Play a sequence of files

Using Glide master/HEAD built with Rust 1.30.1 on Debian Sid using GStreamer build from master/HEAD everything seems to work for playing FLAC files… except:

It seems not possible to play a sequence of files. The use case is to play an album comprising a sequence of FLAC (or MP3 or Ogg) files. I would like to either select a directory and have all playable files played and/or select a sequence of files using the file chooser.

Currently the file chooser allows the selection of files but Glide then only plays the first in the sequence.

Projector usecase: configurable subtitles size & brightness, and auto-positioning of image and subtitles

I would like to be able to use this video player with a projector, on a big wall, which creates a 10' diagonal display… where subtitles can be overwhelmingly big and bright.

To be useful for this type of usecase,

  • The app should automagically position the video image and regular (non-ASS) subtitles to avoid overlap:
    when a video has subtitles and the viewport/fullscreen is taller than the video for the current aspect ratio (ex: 16:9 projector showing a wide cinema aspect ratio video fullscreen), the image should be positioned at the top and subtitles should be positioned below the image as much as possible, essentially, making the letterbox have only one black band (below) instead of one at the top and one at the bottom.
  • Subtitles would need to have a dimmable color: I would want to be able to set the subtitles' to 30-50% brightness (i.e. gray instead of pure white) to avoid glare (which would be difficult on the eyes in dark scenes, and introduce light bleed for the projector).
  • The maximum font size should be configurable: on large screens (such as a whole wall), when sitting close to it, large subtitles are hard to read because they make your eye dart across the whole room, so I would need to be able to limit their size. However, this is very dependent on the screen size and viewing distance, so it's not like we can have a one-size-fits-all hardcoded value here.

Error playing video from YouTube/PeerTube url

Attempting to play a remote video from a YouTube or PeerTube url results in the following error:

$ flatpak run net.baseart.Glide https://www.youtube.com/watch?v=ivO_fl0HrXs

Internal player error: Error from element /GstPlayBin3:playbin3/GstURIDecodeBin3:uridecodebin3/GstURISourceBin:urisourcebin0/GstSoupHTTPSrc:souphttpsrc0: GStreamer encountered a general stream error.
Internal data stream error.
../libs/gst/base/gstbasesrc.c(3132): gst_base_src_loop (): /GstPlayBin3:playbin3/GstURIDecodeBin3:uridecodebin3/GstURISourceBin:urisourcebin0/GstSoupHTTPSrc:souphttpsrc0:
streaming stopped, reason error (-5)
bye!

Keyboard input broken

v0.5.6-Flatpak (would be cool if you would provide an “info” screen in the program)

Here are some problems I encountered:

  • I cannot use the arrow keys to navigate through the video – at pressing those keys, I just hear that “limit reached sound” (which you also encounter in an empty terminal, when you try to scroll down when there is no newer prompt line in the history).
  • Pressing the space bar pauses the video, while the play button still shows the “pause” icon (i.e. it does not change). Pressing the space bar again does nothing.

Open files by drag and drop

It would be a useful feature to allow opening video files by simply drag and drop them into the playback area.

wl_proxy_set_queue: Assertion

glide /mnt/media/torrents/Chernobyl.S01.1080p.AMZN.WEB-DL.DDP5.1.H.264-EniaHD/Chernobyl.S01E01.1.23.45.1080p.AMZN.WEB-DL.DDP5.1.H.264-EniaHD.mkv 
glide: ../wayland-1.20.0/src/wayland-client.c:2312: wl_proxy_set_queue: Assertion `proxy->display == queue->display' failed.
Аварийный останов

glide ver: 0.5.9

Sadly cannot play an MP4

I used the "cargo run" approach:

|> cargo run /home/users/russel/tmp/20101029-210000-classic-albums-h264sm.mp4
    Finished dev [unoptimized + debuginfo] target(s) in 0.37s                                                                                                                                                                
     Running `target/debug/glide /home/users/russel/tmp/20101029-210000-classic-albums-h264sm.mp4`
Error!

Can't build on Debian Sid

I just pulled the repository and tried a compilation:

error[E0412]: cannot find type `c_void` in this scope                                                                                                                                                                                              
  --> src/ui_context.rs:37:38                                                                                                                                                                                                                      
   |                                                                                                                                                                                                                                               
37 |             pub fn XInitThreads() -> c_void;                                                                                                                                                                                                  
   |                                      ^^^^^^ not found in this scope                                                                                                                                                                           
help: possible candidates are found in other modules, you can import them into scope                                                                                                                                                               
   |                                                                                                                                                                                                                                               
7  | use failure::_core::ffi::c_void;                                                                                                                                                                                                              
   |                                                                                                                                                                                                                                               
7  | use std::ffi::c_void;                                                                                                                                                                                                                         
   |                                                                                                                                                                                                                                               
7  | use std::os::raw::c_void;                                                                                                                                                                                                                     
   |                                                                                                                                                                                                                                               
                                                                                                                                                                                                                                                   
error: aborting due to previous error                                                                                                                                                                                                              
                                                                                                                                                                                                                                                   
For more information about this error, try `rustc --explain E0412`.                                                                                                                                                                                
error: Could not compile `glide`.                                                                                                                                                                                                                  

Is this a problem at my end?

Install error on macOS

Hi,

When I try to install step 2.Install GStreamer and GTK+ with brew install command brew install --build-from-source --with-pango --with-{libogg,libvorbis,opus,theora} gst-plugins-base, I always get this error

image

It seems like brew remove the options, is there anything I can do to install this successful?

TIA..

[Bug] Crash on 10 bits x265 mkv

The player crash on selecting a 10bits x265 file.
The file is healthy and playable in mpv.

log:

Internal player error: Error from element /GstPlayBin:playbin/GstURIDecodeBin:uridecodebin0/GstDecodeBin:decodebin0/GstMatroskaDemux:matroskademux0: GStreamer encountered a general stream error.
Internal data stream error.
../gstreamer/subprojects/gst-plugins-good/gst/matroska/matroska-demux.c(6095): gst_matroska_demux_loop (): /GstPlayBin:playbin/GstURIDecodeBin:uridecodebin0/GstDecodeBin:decodebin0/GstMatroskaDemux:matroskademux0:
streaming stopped, reason not-negotiated (-4)
bye!

OS: Arch Linux
Version: 0.5.11
Gstreamer: 1.22.6
Hardware Accelaration: Supported

Frame-stepping UI

Would be nice to have keyboard shortcuts for seeking to the next/prev video frame when the player is paused.

Meson: console log support

[14:49:45] <nirbheek> alatiera, zeenix, you should change the custom_target that calls the cargo script to also use `console: true`
[14:49:49] <nirbheek> That will cause it to print progress
[14:49:52] <nirbheek> See: https://mesonbuild.com/Reference-manual.html#custom_target

No subtitles shown on this video sample

Unlike Clapper with GStreamer 1.22.x, it seems Glide (from flathub) with GStreamer 1.24.0 does not show the subtitles from the "anime" sample from this folder. The image plays smoothly, and you can somehow turn on the sound track by switching between the audio tracks (not sure that's expected, I thought all audio tracks had sound), but subtitles will not show no matter what I try to pick in the Glide menus.

I am not sure if this is a Glide-specific issue, or if the fix for https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3171 broke something; I don't have an easy way to test GStreamer 1.24.x on Fedora 39 other than Glide...

Troubleshooting info

{
  "dependencies": [
    {
      "name": "GTK",
      "version": "4.14.1"
    },
    {
      "name": "GStreamer",
      "version": "GStreamer 1.24.0"
    }
  ],
  "playbin3_enabled": true,
  "audio_decoders": [
    {
      "name": "MP3",
      "gst_element_name": "mpg123audiodec",
      "rank": 256,
      "hardware": false
    },
    {
      "name": "MP3",
      "gst_element_name": "avdec_mp3",
      "rank": 64,
      "hardware": false
    },
    {
      "name": "AAC",
      "gst_element_name": "fdkaacdec",
      "rank": 64,
      "hardware": false
    },
    {
      "name": "AC3",
      "gst_element_name": "avdec_ac3",
      "rank": 64,
      "hardware": false
    },
    {
      "name": "Flac",
      "gst_element_name": "flacdec",
      "rank": 256,
      "hardware": false
    },
    {
      "name": "Flac",
      "gst_element_name": "avdec_flac",
      "rank": 64,
      "hardware": false
    },
    {
      "name": "Opus",
      "gst_element_name": "opusdec",
      "rank": 256,
      "hardware": false
    }
  ],
  "video_decoders": [
    {
      "name": "H.264",
      "gst_element_name": "vah264dec",
      "rank": 257,
      "hardware": true
    },
    {
      "name": "H.264",
      "gst_element_name": "avdec_h264",
      "rank": 256,
      "hardware": false
    },
    {
      "name": "H.264",
      "gst_element_name": "openh264dec",
      "rank": 64,
      "hardware": false
    },
    {
      "name": "H.265",
      "gst_element_name": "avdec_h265",
      "rank": 256,
      "hardware": false
    },
    {
      "name": "AV1",
      "gst_element_name": "av1dec",
      "rank": 128,
      "hardware": false
    },
    {
      "name": "VP8",
      "gst_element_name": "vp8alphadecodebin",
      "rank": 266,
      "hardware": false
    },
    {
      "name": "VP8",
      "gst_element_name": "vp8dec",
      "rank": 256,
      "hardware": false
    },
    {
      "name": "VP8",
      "gst_element_name": "avdec_vp8",
      "rank": 64,
      "hardware": false
    },
    {
      "name": "VP9",
      "gst_element_name": "vp9alphadecodebin",
      "rank": 266,
      "hardware": false
    },
    {
      "name": "VP9",
      "gst_element_name": "vp9dec",
      "rank": 256,
      "hardware": false
    },
    {
      "name": "VP9",
      "gst_element_name": "avdec_vp9",
      "rank": 64,
      "hardware": false
    }
  ],
  "features": [
    "wayland",
    "x11egl",
    "x11glx"
  ]
}

Seeking in uri videos crashes

If you start the program using a web url and try to seek the application will crash returning
`(glide:50183): GStreamer-Video-CRITICAL **: 21:17:28.828: gst_video_center_rect: assertion 'src->h != 0' failed

(glide:50183): GStreamer-CRITICAL **: 21:17:28.880: gst_buffer_get_meta: assertion 'buffer != NULL' failed
Internal player error: Failed to seek to 0:00:00.000000000
bye!`

I have experienced with GTK-rs on my own and have had the same problem without finding a solution, so unfortunately I don't have a clue on how to fix it! Alternatively you could disable seeking on url videos, but that is kind of just working around the problem (this is what https://gitlab.gnome.org/YaLTeR/identity does, or rather, it ignores the error from my quick glance at the code)

Panic when reopening an audio file while it's playing or stopped

thread 'main' panicked at src/main.rs:261:59:
No player channel receiver
stack backtrace:
   0:     0x561b3ca0990c - <unknown>
   1:     0x561b3ca3096c - <unknown>
   2:     0x561b3ca070ad - <unknown>
   3:     0x561b3ca096f5 - <unknown>
   4:     0x561b3ca0acc3 - <unknown>
   5:     0x561b3ca0a9dd - <unknown>
   6:     0x561b3ca0b249 - <unknown>
   7:     0x561b3ca0b147 - <unknown>
   8:     0x561b3ca09e46 - <unknown>
   9:     0x561b3ca0ae92 - <unknown>
  10:     0x561b3c93ec03 - <unknown>
  11:     0x561b3c93ebc3 - <unknown>
  12:     0x561b3c94366d - <unknown>
  13:     0x561b3c951578 - <unknown>
  14:     0x7f34ab75f6c0 - g_closure_invoke
  15:     0x7f34ab78da36 - <unknown>
  16:     0x7f34ab77ea42 - <unknown>
  17:     0x7f34ab77ec77 - g_signal_emit_valist
  18:     0x7f34ab77ed34 - g_signal_emit
  19:     0x561b3c96125f - <unknown>
  20:     0x7f34ab75f6c0 - g_closure_invoke
  21:     0x7f34ab78da36 - <unknown>
  22:     0x7f34ab77ea42 - <unknown>
  23:     0x7f34ab77ef50 - g_signal_emit_by_name
  24:     0x7f34aaae61a1 - <unknown>
  25:     0x7f34aab0b198 - <unknown>
  26:     0x7f34ab658f19 - <unknown>
  27:     0x7f34ab6b72b7 - <unknown>
  28:     0x7f34ab657112 - g_main_context_iteration
  29:     0x7f34aaae7af6 - g_application_run
  30:     0x561b3c950dd7 - <unknown>
  31:     0x561b3c947b7b - <unknown>
  32:     0x561b3c9576c3 - <unknown>
  33:     0x561b3c95c51d - <unknown>
  34:     0x561b3ca01eab - <unknown>
  35:     0x561b3c94932c - <unknown>
  36:     0x7f34aa56acd0 - <unknown>
  37:     0x7f34aa56ad8a - __libc_start_main
  38:     0x561b3c93f2e5 - <unknown>
  39:                0x0 - <unknown>
[1]    13167 segmentation fault (core dumped)  RUST_BACKTRACE=full glide Music.mp3

Version: 0.6.0
OS : Arch Linux

Glide failing to launch

Hi,

I'm trying to package glide for NetBSD, I've manged to build and install the package but, it fails to run with the following,

$ glide movie.mp4
thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: BoolError { message: "Failed to create element from factory name", filename: "/usr/pkgsrc/wip/glide/work/vendor/gstreamer-0.16.3/src/auto/element_factory.rs", function: "gstreamer::auto::element_factory", line: 184 }', src/channel_player.rs:273:71
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
$ RUST_BACKTRACE=full glide movie.mp4
thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: BoolError { message: "Failed to create element from factory name", filename: "/usr/pkgsrc/wip/glide/work/vendor/gstreamer-0.16.3/src/auto/element_factory.rs", function: "gstreamer::auto::element_factory", line: 184 }', src/channel_player.rs:273:71
stack backtrace:
   0:         0xad67b453 - <unknown>
   1:         0xad695a8d - <unknown>
   2:         0xad677f87 - <unknown>
   3:         0xad674440 - <unknown>
   4:         0xad67416a - <unknown>
   5:         0xad674a64 - <unknown>
   6:         0xad67464b - <unknown>
   7:         0xad694d11 - <unknown>
   8:         0xad694da3 - <unknown>
   9:         0xad6268cb - <unknown>
  10:         0xad6235c0 - <unknown>
  11:         0xad616d73 - <unknown>
  12:         0xad67ef50 - <unknown>
  13:         0xad623f72 - <unknown>
  14:         0xad61198d - <unknown>
$

Any hints on how to fix this?
You can find the package here, https://github.com/NetBSD/pkgsrc-wip/tree/master/glide

Problem with shell scripts on Debian

The build scripts start:

#!/bin/sh

but use Bash features such as [[. This fails on Debian since /bin/sh is Dash and not Bash:

|> ninja
[0/1] Generating cargo-build with a custom command.
/home/Checkouts/Git/Glide/scripts/cargo.sh: 5: /home/Checkouts/Git/Glide/scripts/cargo.sh: [[: not found
RELEASE MODE
    Updating crates.io index
  Downloaded serde_json v1.0.38
…

wayland issues (again)

This seems identical to #1, but that issue has been closed and there was little information given.

Upon launching glide from either command line or desktop/menu shortcut, it exits with return code 255 and prints the following to stderr:

Add support for display type 'GdkWaylandDisplay'

This happens immediately after calling the program, before a window is created, with or without arguments (besides -h/--help, -V/--version, or an invalid flag; which all behave normally).

System is running arch GNU/linux-zen, x86_64, up-to-date packages, fresh install of glide, NVIDIA (sadly) RTX2070 with nouveau/mesa drivers, and (of course) Wayland with Sway compositor.

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.