Simple VLC-based media player that can play multiple videos at the same time

Overview

GridPlayer

GitHub release (latest by date) PyPI version

Screenshots

Screenshot 1 Screenshot 2 Screenshot 3

About

Simple VLC-based media player that can play multiple videos at the same time. You can play as many videos as you like, the only limit is your hardware. It supports all video formats that VLC supports (which is all of them). You can save your playlist retaining information about the position, sound volume, loops, aspect ratio, etc.

Features

  • Cross-platform (Linux, Mac, and Windows)
  • Support for any video format (VLC)
  • Hardware & software video decoding
  • Control video aspect, playback speed, zoom
  • Set loop fragments with frame percision
  • Configurable grid layout
  • Easy swap videos with drag-n-drop
  • Playlist retains settings for each video

Installation

Windows

Download Windows Installer Download Windows Portable

Linux

Get it from the Flathub Get it from the Snap Store Download AppImage

For better system integration install via Flathub.

Note on AppImage

You may need to set execute permissions on AppImage file in order to run it:

$ chmod +x GridPlayer-0.1.6-x86_64.AppImage

MacOS

Download DMG

DMG image is not signed. You will have to add an exception to run this app.

PIP

$ pip install -U gridplayer

Python 3.8 or later required.

This type of installation will also require a vlc package present in your system. Please refer to VLC official page for instructions on how to install it.

Some distros (e.g. Ubuntu) might also require libxcb-xinerama0 package.

From source

This project uses poetry for dependency management and packaging. You will have to install it first. See poetry official documentation for instructions.

$ git clone https://github.com/vzhd1701/gridplayer.git
$ cd gridplayer/
$ poetry install --no-dev
$ poetry run gridplayer

The same notes about the Python version and external packages from PIP installation apply here.

Known issues

Linux (Snap): X screen when opening a file from the mounted disk

You need to allow GridPlayer snap to access removable storage devices via Snap Store or by running:

$ sudo snap connect gridplayer:removable-media

Linux (Snap): mounted drives are not visible in file selection dialog

You will also see following error if you run GridPlayer from terminal:

GLib-GIO-WARNING **: Error creating IO channel for /proc/self/mountinfo: Permission denied (g-file-error-quark, 2)

To fix this, you need to allow GridPlayer snap to access system mount information and disk quotas via Snap Store or by running:

$ sudo snap connect gridplayer:mount-observe

Linux (KDE): black screen issue when using hardware decoder

Switch on "Opaque overlay (fix black screen)" checkbox in settings.

Overlay might be a bit glitchy in KDE with hardware decoder.

MacOS: "GridPlayer" is damaged and can't be opened

To fix this, you need to execute the following command using terminal:

$ sudo xattr -rd com.apple.quarantine /Applications/GridPlayer.app

Attributions

This software was build using

Python packages

Graphics

  • Hack Font by Source Foundry
    • Licensed under MIT License
  • Basic Icons by Icongeek26
    • Licensed under Flaticon License
  • Suru Icons by Sam Hewitt
    • Licensed under Creative Commons Attribution-Share Alike 4.0
  • Clean App Download Buttons by Tony Thomas
    • Licensed under MediaLoot License

License

This software is licensed under the terms of the GNU General Public License version 3 (GPLv3). Full text of the license is available in the LICENSE file and online.

Comments
  • [Bug]: Aspect Mode doesn't seem to work when opening from playlist

    [Bug]: Aspect Mode doesn't seem to work when opening from playlist

    GridPlayer version

    GridPlayer-0.3.0-x86_64.AppImage

    What OS are you using?

    Linux

    OS Version / Linux distribution

    Arch

    What distribution channel are you using? [LINUX ONLY]

    AppImage

    Bug description

    Example grid: two frames on top, one in the bottom. Even if I set the "Aspect mode:none" in Settings or is saved in the playlist, when I open the playlist, the bottom one is always loaded in "Aspect fit" mode. image

    When loaded the playlist, it is showing "Aspect none":

    #GRIDPLAYER
    #P:{"grid_state": {"mode": "auto_rows", "is_fit": true, "size": 0}, "window_state": [false, false, "AdnQywADAAAAAAAAAAADEAAAAoUAAASNAAAAAwAAAyMAAAKCAAAEigAAAAAAAAAAB4AAAAADAAADIwAAAoIAAASK"], "snapshots": {}, "seek_sync_mode": "disabled", "shuffle_on_load": false, "disable_click_pause": true, "disable_wheel_seek": true}
    #V0:{"id": "95fc8fd0-34ab-4fc4-a094-9573fd3f3e10", "title": "Africam - Tau", "color": "white", "repeat_mode": "single_file", "is_start_random": false, "rate": 1.0, "aspect_mode": "none", "is_muted": true, "scale": 1.0, "volume": 1.0, "stream_quality": "720p [95]"}
    #V1:{"id": "2ba07275-9b53-4448-8630-5f17cfd2900b", "title": "Africam - Olifants River", "color": "white", "repeat_mode": "single_file", "is_start_random": false, "rate": 1.0, "aspect_mode": "none", "is_muted": true, "scale": 1.0, "volume": 1.0, "stream_quality": "1080p [96]"}
    #V2:{"id": "5b4dae03-7de3-40e7-9248-597f5cd381dd", "title": "Africam - Nkorho", "color": "white", "repeat_mode": "single_file", "is_start_random": false, "rate": 1.0, "aspect_mode": "none", "is_muted": true, "scale": 1.0, "volume": 1.0, "stream_quality": "720p [95]"}
    https://www.youtube.com/watch?v=xtqkslRWaQg
    https://www.youtube.com/watch?v=nJdjWJr64Ps
    https://www.youtube.com/watch?v=IdeahH9ebp8
    

    image

    But it does not work: image

    However, when I click the already selected "Aspect none" again, only after that the aspect changes to the "Aspect none". image

    Log excerpt

    No response

    bug 
    opened by dv8472 8
  • Mail.ru fail and download media data independently from playback if weak connection and increase network cache

    Mail.ru fail and download media data independently from playback if weak connection and increase network cache

    GridPlayer version

    v0.3.0

    What OS are you using?

    Windows

    OS Version / Linux distribution

    windows10

    What distribution channel are you using? [LINUX ONLY]

    No response

    Bug description

    Hello, i tried to play this vidéo from mail.ru but Girdplayer failed to resolve url, it will be great if threr is fix please 👍

    https://my.mail.ru/mail/richard1339/video/_myvideo/1041.html?from=videoplayer

    and it will be great if Girdplayer add a button "paste url from clipboard" and option or button to increase network cache to avoid jerks and add this important option to people who have limited 4G data ou weak wifi please , option like the option made by "3DYD Youtube Source" software :

    Download media data independently from playback If this option is checked, filter performs media file download independently of playback. So it continues downloading even when playback is paused.

    This approach is useful when you have slow or unstable Internet connection (so playback is stuttering), or when you need to seek a lot within a file. However if all these cases are not about you, and usually you do not watch whole video, it may end up with bandwidth overuse since a lot of downloaded data eventually will be not watched.

    When this option is unchecked, filter downloads only part of data that is about to be played.

    Filter caches downloaded data in temporary directory regardless of the state of this option and never re-downloads the same data again. Caching is well visualized by Activity

    Log excerpt

    No response

    bug 
    opened by trimechee 7
  • [Feature request]: able to take snapshot of all movies and restore to the taken state

    [Feature request]: able to take snapshot of all movies and restore to the taken state

    Suggestion

    There is annoying task to set all movie time position and zoom level (and may be other things) to a particular state again and again while we analize them. It would be better if we can take a snapshot and than restore it whenever we need.

    enhancement 
    opened by the-liquid-metal 6
  • [Feature request]: Group speedup

    [Feature request]: Group speedup

    Suggestion

    Hello vzhd1701,

    Love this piece of software! I use it to observe the many recordings I have of the electroplating of microelectrodes. It is a great tool to just view or also present.

    Some features that would be awesome:

    • Speedup all the videos at once (or perhaps even a selection of them)
    • Sync all the video timelines
    • Render the complete playlist as a single video/gif

    2 Questions: Why does GridPlayer keep running in the background even when the program is closed? Why does the installation have "websockets" and "cryptodome" folders?

    enhancement 
    opened by SwaggerNiels 5
  • Plugin VLC 3DYD Youtube Source

    Plugin VLC 3DYD Youtube Source

    Hello, "3DYD Youtube Source" which is a set of plugins and has many amazing features like download media data independently from playback, manual quality selection before playback start, HLS live streams support, DASH streams support (video and audio goes from separate streams), support for audio-only playback.....

    and it works only for video players which support playback using DirectShow like "potplayer" and "mpc-hc" (or mpc-be) and they worked for me when i tried this software, an exception is VLC, for which is available separate plugin. : I admit, I installed the vlc plugin from "3DYD Youtube Source" but it didn't work with VLC player, I don't know if I did things wrong, so since our beloved GirdPlayer is compatible with VLC player, can GirdPlayer add an option to embed vlc plugin of "3DYD Youtube Source" so GirdPlayer will have even more outstanding options for streaming !

    Thanks a lot !

    https://ys.3dyd.com/download/

    https://ys.3dyd.com/home/

    Latest VLC plugin version details :

    preliminary support for VLC 3.0. Functionality and installation are the same as in VLC 2.2. Additionally added support for multiple ABI versions within one plugin. That means there will be single DLL plugin file for all VLC versions (per platform) instead of individual plugins for every VLC version.

    https://ys.3dyd.com/changelog/vlc/

    for developers, may it can help to integrate vlc plugin to GirdPlayer :

    https://ys.3dyd.com/developers/

    enhancement 
    opened by trimechee 5
  • Dailymotion fail

    Dailymotion fail

    GridPlayer version

    v0.3.0

    What OS are you using?

    Windows

    OS Version / Linux distribution

    windows 10

    What distribution channel are you using? [LINUX ONLY]

    No response

    Bug description

    Hello, i tried to play dailymotion video but it fails , Girdplayer says "buffering timeout" :

    https://www.dailymotion.com/video/x8bz3a5

    Log excerpt

    No response

    bug 
    opened by trimechee 5
  • [Feature request]: prevent accidentally mouse click and scroll

    [Feature request]: prevent accidentally mouse click and scroll

    Suggestion

    The default mouse click and scroll is useful if we just want to enjoy the show without being distracted by the state of the movie. This behavior is annoying when we want the state of all movies to not change while doing something.

    enhancement 
    opened by the-liquid-metal 5
  • [Bug]: jumbo size menu & setting font

    [Bug]: jumbo size menu & setting font

    GridPlayer version

    0.1.5

    What OS are you using?

    Windows

    OS Version / Linux distribution

    win10

    What distribution channel are you using? [LINUX ONLY]

    No response

    Bug description

    the menu & setting font are to big.

    Log excerpt

    No response

    bug 
    opened by the-liquid-metal 4
  • [Bug]: Error loading Python DLL

    [Bug]: Error loading Python DLL

    GridPlayer version

    0.1.4

    What OS are you using?

    Windows

    OS Version / Linux distribution

    Windows 10 64bit

    What distribution channel are you using? [LINUX ONLY]

    No response

    Bug description

    Version 0.1.4 doesn't work in Windows 10. It has a fatal error about loading a python module upon startup. Neither the installer version or portable version works.

    Error message is: Error loading Python DLL c:.......\GridPlayer\python38.dll. LoadLibrary: The specified module could not be found.

    Log excerpt

    No response

    bug 
    opened by johnnysmith65 4
  • [Feature request]: Sync all video timestamp

    [Feature request]: Sync all video timestamp

    Suggestion

    Due to the delay in opening several videos, there will often be 1+ second difference in the playback. Yes, it's possible to skip +15/-15 secs ahead/back, but I think what the player needs is a "Sync all video playback".

    Let's say you got 3 Video Windows

    Video 1: 00:00:01 Video 2: 00:00:02 Video 3: 00:00:03

    Suggestion either a right click video window, or a button that lets you enter the timestamp to sync to by input: XX:XX:XX or maybe even XX:XX is enough

    I would suggest an option to right click Video1 with an option to "Sync players", meaning all videos would sync to timestamp 00:00:01.

    If you right clicked Video 2 and chose "Sync Players" all videos would sync timestamp to 00:00:02 Video 3, 00:00:03.

    Another Example: Fast forward a video to say 04:00:00 and sync, and all other players would fast forward to 04:00:00 as well.

    Possible complication: if a videos duration is less than the sync time stamp though.

    Not sure if this is possible, but would appreciate if it could be considered as a feature request.

    enhancement 
    opened by eswiig 3
  • [Bug]: Differen length videos are out of sync after scrolling around

    [Bug]: Differen length videos are out of sync after scrolling around

    GridPlayer version

    0.2.0

    What OS are you using?

    Linux

    OS Version / Linux distribution

    Ubuntu 20.04.3 LTS

    What distribution channel are you using? [LINUX ONLY]

    Snap Store

    Bug description

    When playing videos of different length and skipping around or using the bar at the bottom the videos get out of sync. menaing, the playback time is not synchronized form the start, but by the length of each video, so each video is say 42% in, not 42seconds from the start, which with different lengths would be different values.

    Log excerpt

    No response

    bug 
    opened by joshinils 3
  • [Bug]:

    [Bug]:

    GridPlayer version

    0.4.3

    What OS are you using?

    Linux

    OS Version / Linux distribution

    Ubuntu 22.04.1

    What distribution channel are you using? [LINUX ONLY]

    None

    Bug description

    I download the source code of your project and try run it by "poetry run gridplayer" command but it crashed. Here is the full error log: 2022-12-14 14:51:31,300 (21039) | UNHANDLED | CRITICAL | Traceback (most recent call last): File "", line 1, in File "/home/harry/gridplayer/gridplayer/main.py", line 29, in main ret = run_app() File "/home/harry/gridplayer/gridplayer/main/run.py", line 14, in run_app vlc_version, vlc_python_version = init_vlc() File "/home/harry/gridplayer/gridplayer/utils/libvlc.py", line 32, in init_vlc vlc_version = _get_vlc_version() File "/home/harry/gridplayer/gridplayer/utils/libvlc.py", line 85, in _get_vlc_version with importing_embed_vlc(): File "/usr/lib/python3.10/contextlib.py", line 142, in exit next(self.gen) File "/home/harry/gridplayer/gridplayer/utils/libvlc_fixer.py", line 30, in importing_embed_vlc _fix_plugins_path() File "/home/harry/gridplayer/gridplayer/utils/libvlc_fixer.py", line 40, in _fix_plugins_path vlc_lib_root = _get_libvlc_root_path() File "/home/harry/gridplayer/gridplayer/utils/libvlc_fixer.py", line 62, in _get_libvlc_root_path vlc_lib_root = Path(vlc_module.dll._name) # noqa: WPS437 File "/usr/lib/python3.10/pathlib.py", line 960, in new self = cls._from_parts(args) File "/usr/lib/python3.10/pathlib.py", line 594, in _from_parts drv, root, parts = self._parse_args(args) File "/usr/lib/python3.10/pathlib.py", line 578, in _parse_args a = os.fspath(a) TypeError: expected str, bytes or os.PathLike object, not NoneType

    Can you tell me what is the problem here

    Log excerpt

    2022-12-14 14:51:31,300 (21039) | UNHANDLED | CRITICAL | Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/home/harry/gridplayer/gridplayer/__main__.py", line 29, in main
        ret = run_app()
      File "/home/harry/gridplayer/gridplayer/main/run.py", line 14, in run_app
        vlc_version, vlc_python_version = init_vlc()
      File "/home/harry/gridplayer/gridplayer/utils/libvlc.py", line 32, in init_vlc
        vlc_version = _get_vlc_version()
      File "/home/harry/gridplayer/gridplayer/utils/libvlc.py", line 85, in _get_vlc_version
        with importing_embed_vlc():
      File "/usr/lib/python3.10/contextlib.py", line 142, in __exit__
        next(self.gen)
      File "/home/harry/gridplayer/gridplayer/utils/libvlc_fixer.py", line 30, in importing_embed_vlc
        _fix_plugins_path()
      File "/home/harry/gridplayer/gridplayer/utils/libvlc_fixer.py", line 40, in _fix_plugins_path
        vlc_lib_root = _get_libvlc_root_path()
      File "/home/harry/gridplayer/gridplayer/utils/libvlc_fixer.py", line 62, in _get_libvlc_root_path
        vlc_lib_root = Path(vlc_module.dll._name)  # noqa: WPS437
      File "/usr/lib/python3.10/pathlib.py", line 960, in __new__
        self = cls._from_parts(args)
      File "/usr/lib/python3.10/pathlib.py", line 594, in _from_parts
        drv, root, parts = self._parse_args(args)
      File "/usr/lib/python3.10/pathlib.py", line 578, in _parse_args
        a = os.fspath(a)
    TypeError: expected str, bytes or os.PathLike object, not NoneType
    
    bug 
    opened by chudinhhai 0
  • [Bug]: Time shown is not accurate

    [Bug]: Time shown is not accurate

    GridPlayer version

    0.4.3

    What OS are you using?

    Windows

    OS Version / Linux distribution

    Windows 10

    What distribution channel are you using? [LINUX ONLY]

    None

    Bug description

    Video position (gridplayer.widgets.video_block.VideoBlock.video_params.current_position) is not the an actual timecode in the video.

    Log excerpt

    No response

    bug 
    opened by x4Cx58x54 0
  • Save a playlist with a relative path

    Save a playlist with a relative path

    Hi, I'd like to know if it is possible to save a playlist using a relative path for the video files. At the momento the videos are saved with a full path. Ex:

    C:\WTT\2022\000deg-P30\AXIS-P3245-LV_500.mp4

    I'd like save a playlist in order to be opened on different PCs, something like:

    ..\VIDEO\AXIS-P3245-LV_500.mp4

    Is it possible? thanks Lorenzo

    opened by lore7979 0
  • Hls streams and m3u8 bug

    Hls streams and m3u8 bug

    Hello, Ffmpeg seems to have some problems to decode hls m3u8 streams, but a tool like HLSDL seems to solve these problems, please it will be great if there is support for specific hls streams to some websites by integrating these m3u8 software , thank you very much !

    C program to download VoD HLS (.m3u8) files

    https://github.com/selsta/hlsdl

    m3u8 : Python m3u8 Parser for HTTP Live Streaming (HLS) Transmissions :

    https://github.com/globocom/m3u8

    [.NET] m3u8 downloader Open source command line m3u8/HLS/dash downloader, supports common AES-128-CBC decryption, multi-threading, custom request headers, etc. Supports Simplified Chinese, Traditional Chinese and English. English Supported.

    https://github.com/nilaoda/N_m3u8DL-CLI

    [.NET7] Cross-Platform stream downloader for DASH/HLS.

    https://github.com/nilaoda/N_m3u8DL-RE

    and

    https://github.com/HeiSir2014/M3U8-Downloader

    https://github.com/Spark-NF/hls-downloader

    " HLSDL appears working much better than ffmpeg in these cases. Hlsdl is public and the source code available. The stream plays almost immediately and is stable. No errors or buffering. Using ffmpeg for the download step gives a very long intial delay and is not very stable. so I assume that the new crypto+hls RAI flows are badly handled by ffmpeg based players now.

    the video is choppy and unable to buffer enough for a fluid vision. Parole has no problem.

    FFmpeg is not good for HLS streams, but I watched a lot of various HLS streams without any problems. The main problem is that FFmpeg downloads all streams (many video sizes at once), so you can watch only HLS stream with single video size"

    enhancement 
    opened by trimechee 0
  • [Feature request]: Add

    [Feature request]: Add "millisecond" in the Jump (to) Timecode settings

    Suggestion

    Hi, Love this software thank you so much for making it. Could you please Add "millisecond" in the Jump (to) Timecode settings as it is useful when syncing of different videos to precision otherwise i have to keep using the current option number of times to get it correct, as most times a lag or difference in time is caused due to it. Also is it possible to add subtitle viewing option for videos which have them.

    enhancement 
    opened by NightHawk007 1
Releases(v0.4.3)
Owner
null
Media player custom component which works with MQTT.

Media player custom component which works with MQTT. I designed this to specifically work with a ESP32 which i used to control a speakercraft amp.

null 2 Feb 10, 2022
720p FPGA Media Player (RISC-V + Motion JPEG + SD + HDMI on an Artix 7)

FPGA Media Player This project is a FPGA based media player which is capable of playing Motion JPEG encoded video over HDMI or VGA on commonly availab

null 179 Dec 2, 2022
This plugin generates json files used by deovr allowing you to play 2d and 3d video's using the player

deovr-plugin This plugin generates json files used by deovr allowing you to play 2d and 3d video's using the player. Deovr looks for an index file /de

null 10 Sep 29, 2022
It is a simple python package to play videos in the terminal using characters as pixels

It is a simple python package to play videos in the terminal using characters as pixels

Joel Ibaceta 1.4k Jan 7, 2023
Playing videos through S3 buckets (Wasabi, AWS, etc.) through client-side VideoJS player

Playing videos through S3 buckets (Wasabi, AWS, etc.) through client-side VideoJS player without incurring ingress/egree traffic on EC2 Instance.

Syed Umar Arfeen 8 Mar 28, 2022
Program to play videos with props in Apex Legends

R5Fresh A video player for the Apex Legends mod R5Reloaded

null 9 Nov 13, 2022
VIT - VideoInTerminal. A quick piece of code to play videos in your terminal using python

VIT VIT - VideoInTerminal. A quick piece of code to play videos in your terminal using python.

ShellTear 3 Mar 3, 2022
Convert lecture videos to slides in one line. Takes an input of a directory containing your lecture videos and outputs a directory containing .PDF files containing the slides of each lecture.

Convert lecture videos to slides in one line. Takes an input of a directory containing your lecture videos and outputs a directory containing .PDF files containing the slides of each lecture.

Sidharth Anand 12 Sep 10, 2022
Terminal-Video-Player - A program that can display video in the terminal using ascii characters

Terminal-Video-Player - A program that can display video in the terminal using ascii characters

null 15 Nov 10, 2022
Cvplayer - A simple video player written in python using ffpyplayer and OpenCV

Video Player cvplayer is a minimal wrapper around the ffpyplayer.MediaPlayer cla

ADI 7 Dec 19, 2022
TkVideoplayer - This is a simple library to play video files in tkinter.

TkVideoplayer - This is a simple library to play video files in tkinter.

Art/Paul 38 Dec 23, 2022
A web RTSP play platform based on websocket and tornado, websocket use blob binaryType read as ArrayBuffer

A web RTSP play platform based on websocket and tornado, websocket use blob binaryType read as ArrayBuffer

null 2 Feb 25, 2022
Streamlink is a CLI utility which pipes video streams from various services into a video player

Streamlink is a CLI utility which pipes video streams from various services into a video player

null 8.2k Dec 26, 2022
MPV remote controller is a program for remote controlling mpv player with device in your local network through web browser.

MPV remote controller is a program for remote controlling mpv player with device in your local network through web browser.

null 5 May 26, 2022
A Advanced Anime Theme VC Video Player created for playing vidio in the voice chats of Telegram Groups

Yui Vidio Player A Advanced Anime Theme VC Video Player created for playing vidio in the voice chats of Telegram Groups Demo Setting up Add this Bot t

Achu biju 32 Sep 16, 2021
Zaid Vc Player Bot For Telegram

Zaid Vc Player Bot For Telegram

null 1 Dec 4, 2021
A simple Telegram bot to extract hard-coded subtitle from videos using FFmpeg & Tesseract.

Video Subtitle Extractor Bot A simple Telegram bot to extract hard-coded subtitle from videos using FFmpeg & Tesseract. Note that the accuracy of reco

null 14 Oct 28, 2022
A GUI based datamoshing apllication for everyone! Apply this glitch to your videos and gifs. Supports all video formats!

A GUI based datamoshing apllication for everyone! Apply this glitch to your videos and gifs. Supports all video formats!

Akascape 131 Dec 31, 2022
A GUI based glitch tool that uses FFMPEG to create motion interpolated glitches in your videos.

FF Dissolve Glitch This is a GUI based glitch tool that uses FFmpeg to create awesome and wierd motion interpolated glitches in videos. I call it FF d

Akash Bora 19 Nov 10, 2022