linux-show-player icon indicating copy to clipboard operation
linux-show-player copied to clipboard

Video playback/Run Command cues

Open nodiscc opened this issue 9 years ago • 27 comments

Hi, thanks for writing this great tool. Are there any plans to support video cues? I see you are already using GStreamer which is able to do video decoding. Video playback in a separate window (e.g. placed on an external monitor/videoprojector) would be a nice addition.

nodiscc avatar Aug 30 '15 14:08 nodiscc

Hi, yes, I've plans to support video cues, probably it will take quite a bit because currently I'm working on a better software design and some new functionality for the 0.4 version, but the plan is to add the video support as soon as possible after this release.

FrancescoCeruti avatar Aug 30 '15 15:08 FrancescoCeruti

Looking forward to this. Currently there is no video show manager on linux (vlc and split playlist not counting because it is really clumsy to use during the show). Thanks in advance.

gnaag avatar Apr 27 '16 10:04 gnaag

Another way around would be adding cues with the abiity to run arbitrary commands (eg vlc /path/to/scene1.mpg). This would also be useful for interfacing with other programs that don't support MIDI IN/Jack transport, etc.

This way you leave video playback/decoding/filters to a full featured video player.

nodiscc avatar Apr 28 '16 15:04 nodiscc

@nodiscc good idea

FrancescoCeruti avatar Apr 28 '16 20:04 FrancescoCeruti

That would bring even more possiblities such as displaying webpages in a browser directly from cues or showing off applications. Nevertheless built-in videoplayer would be a bit better for end-users.

2016-04-28 22:53 GMT+02:00 Francesco Ceruti [email protected]:

@nodiscc https://github.com/nodiscc good idea

  • Video Playback
  • Run command cues

— You are receiving this because you commented. Reply to this email directly or view it on GitHub https://github.com/FrancescoCeruti/linux-show-player/issues/3#issuecomment-215557958

gnaag avatar May 04 '16 11:05 gnaag

@gnaag a need will inevitably arise for users to apply some filters/seek/do whatever an advanced player already does, which is what I suggesting leveraging this, instead of eating development time (do not reinvent the wheel)

nodiscc avatar May 04 '16 19:05 nodiscc

The question is whether it would be responsive enough. During show it is necessary to click and run.

2016-05-04 21:02 GMT+02:00 nodiscc [email protected]:

@gnaag https://github.com/gnaag a need will inevitably arise for users to apply some filters/seek/do whatever an advanced player already does, which is what I suggesting leveraging this, instead of eating development time (do not reinvent the wheel)

— You are receiving this because you were mentioned. Reply to this email directly or view it on GitHub https://github.com/FrancescoCeruti/linux-show-player/issues/3#issuecomment-216968053

gnaag avatar May 04 '16 19:05 gnaag

Ah I see what you mean (lag due to time required to launch the player). Regarding VLC specifically, if you set it to "only allow one window" it will start playback in an existing VLC window (very fast):

  • start VLC before the show, full screen it on your videoprojector display with a blank (black) frame
  • run the cue and it will attach to the player and play it on the projector.

Some other players are fast enough (mpv/mplayer) but I have no experience with "use existing window" with those.

nodiscc avatar May 04 '16 19:05 nodiscc

Well, since the "command-cues" are just a bunch of lines of code, I've implemented them, so someone che use them to play videos ... and to do other awesome things ;)

Anyway I've received more than one request for proper video-cues, and I think that having all you need in one piece of software, sometimes, is more simple than combining more tools, plus, the big work is to refactor the current code to allow video and audio streams, all the inputs/output and effects are almost only wrappers around GStreamer elements.

FrancescoCeruti avatar May 05 '16 18:05 FrancescoCeruti

Nice, will test this soon.

having all you need in one piece of software, sometimes, is more simple than combining more tools

Right.

... and to do other awesome things ;)

Looking forward to test this with lighting cues and puredata commands. Thanks!

nodiscc avatar May 06 '16 10:05 nodiscc

This feature is definitely desirable. Might be able to implement it with info-beamer...and it has a raspberry pi version. Multiple video displays could be commanded over the net with OSC or MIDI commands from LISP. https://info-beamer.com/

macdroid53 avatar Aug 16 '16 23:08 macdroid53

Mapmap is also a possibity. Its still under development but under Linux sound works since some weeks and it has OSC support, which gives some more control options then their gui. And it is the only working mapping software under Linux I know so far I know.

Its possible to use command cues and "oscsend" to control mapmap. Mapmap still has some glitches (videos are only looped at the moment...), but not a big deal.

A native support for mapmap through a module in lisp would be awesome.

offtools avatar Dec 02 '16 01:12 offtools

Hey, I just wanted to refer to this for video cue: https://github.com/FrancescoCeruti/linux-show-player/issues/166#issuecomment-478291399

mpv is only a workaround, but it works really well. The feature set is really good, it supports many formats, is really customizable. I know it's probably not a good idea to depend on third party software, but for everyone who's searching for a workaround: I think it's perfect. You can even disable every OSD stuff in case you accidentally toggle it.

Edit: and I think that mapgen is not exactly suited for simply putting things on screen. There should be something easier (like mpv is).

Edit 2: I'll just share some of my mpv codes I use. Might be someone is looking for an urgent workaround:

run mpv on second screen: mpv --fs --fs-scren=1 FILE.mp4

run mpv and disable OSD: mpv --no-osc 1 --osd-font-size=1

run mpv on second screen with subtitles and some options: mpv --fs --fs-screen=1 --sub-file=FILE.ass FILE.mp4 --sub-scale=1.8 --sub-margin-y=0 --sub-ass-force-margins

run mpv via ssh on remote machine (that'what I usually use because of audio / video machine separation): ssh MACHINE "DISPLAY=:0 nohup mpv --fs-screen=1 --fs 'file.mp4'" Note the DISPLAY=:0 to identify the X display to use and the nohup to get independent from the ssh connection (Video might stop on network failure without)

well and that might be useful as well: --no-osd-bar

Using an awesome window manager (I'm running LMDE3 with Cinnamon (muffin) on my video machine. I enabled fading window effects, so starting and stopping videos, slideshows, presentations has got nice fading. Screen is black, but you can also add a wallpaper fitting to your organization. I sometimes use the clock desklet with custumizable text / format to display something like "Event XY on 13th May 2019, 22:45" when there's nothing else to show.

fnetX avatar May 13 '19 19:05 fnetX

Video cues wound be an awesome feature. There's absolutely no free alternative to QLab, which forced me to write my own app for live shows. And I don't like it :)

Himura2la avatar Sep 26 '21 17:09 Himura2la

I totally agree, video cues would make that awesome software perfect. Hope that feature will come soon :)

sonicyouch avatar Nov 14 '21 21:11 sonicyouch

A quick workaround might be to still depend on mpv, but allow some launcher wrappers for convenience. MPV is an awesome project and will work reliably and play kinda all your video files, you can even use it to create image slide shows etc (so whenever we need to launch a pic from within LiSP, we'll use mpv, too).

fnetX avatar Nov 28 '21 21:11 fnetX

I would be interested in helping this, but I am not familiar with the code base. @FrancescoCeruti

bgoldstone avatar Mar 22 '24 00:03 bgoldstone

I would be interested in helping this, but I am not familiar with the code base. @FrancescoCeruti

The way I've envisioned this task will require a non-trivial rework of the media backend, but I believe it can be approached in two main iterations:

  1. Implement video elements (wrapping GStreamer) to allow the creation of video-only cue
  2. Rework the elements composition logic and UI to support cues that can handle both audio and video

The area of interest is the gst_backend plugin, the entry point it's here: gst_backend.py

In there you should be able to register a custom "factory" to create a video cue, which should simply be a MediaCue but initialized with elements (pipeline) that handle the video stream instead of the audio.

The "pipeline" definition is a list of the elements class names.

Elements are located in the lisp.plugins.gst_backend.elements module, they are imported dynamically.

Most elements are simple wrappers, you can start with that, but you need to know what gstreamer-elements you need to use. To start experiment you can simply use videotestsrc (generates a test video stream) and autovideosink (display the video in a window), you can search the gstreamer documentation for details.

Just a quickstart, if you have any question we can chat via matrix @francesco.ceruti:matrix.org or open a discussion here on GitHub.

FrancescoCeruti avatar Mar 22 '24 22:03 FrancescoCeruti