https://github.com/membranesoftware/membrane-media-player
Media player application for Windows, Mac, and Linux
https://github.com/membranesoftware/membrane-media-player
c-plus-plus ffmpeg gui lua multimedia sdl2
Last synced: 2 months ago
JSON representation
Media player application for Windows, Mac, and Linux
- Host: GitHub
- URL: https://github.com/membranesoftware/membrane-media-player
- Owner: membranesoftware
- License: other
- Created: 2024-12-20T17:48:34.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2025-02-05T23:56:04.000Z (over 1 year ago)
- Last Synced: 2025-04-08T20:48:53.023Z (about 1 year ago)
- Topics: c-plus-plus, ffmpeg, gui, lua, multimedia, sdl2
- Language: C++
- Homepage:
- Size: 7.11 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
README
## Membrane Media Player
This GUI application was created to run on Microsoft Windows, macOS, and Linux computers. Its primary purpose is to browse video and audio files, provide a detailed view of video timelines, and execute playback of a single media file or many media files at once.
 
Builds: https://membranesoftware.com/membrane-media-player/
About Membrane Media Player: https://membranesoftware.com/i/about-membrane-media-player
### Third-Party Dependencies
Membrane Media Player makes use of other software components.
- [curl](https://curl.se/): the multiprotocol file transfer library
- [ffmpeg](https://www.ffmpeg.org/): a complete, cross-platform solution to record, convert, and stream audio and video
- [freetype](https://www.freetype.org/): a freely available software library to render fonts
- [jpeg](http://jpegclub.org/reference/reference-sources/): the Independent JPEG Group reference implementation of the JPEG standard
- [libpng](http://www.libpng.org/pub/png/libpng.html): the official reference library for PNG images
- [lua](https://www.lua.org/): a lightweight embeddable scripting language
- [openssl](https://www.openssl.org/): a robust, commercial-grade, and full-featured toolkit for the Transport Layer Security (TLS) and Secure Sockets Layer (SSL) protocols
- [sdl2](https://www.libsdl.org/): a cross-platform development library designed to provide low level access to audio, keyboard, mouse, joystick, and graphics hardware
- [sdl2image](https://www.libsdl.org/projects/SDL_image/): an image file loading library
- [sqlite](https://sqlite.org/): an in-process library that implements a self-contained, serverless, zero-configuration, transactional SQL database engine
- [x264](https://www.videolan.org/developers/x264.html): a free software library and application for encoding video streams into the H.264/MPEG-4 AVC compression format
- [zlib](https://zlib.net/): A Massively Spiffy Yet Delicately Unobtrusive Compression Library
## Reference Source
The Membrane Media Player source files provide examples for possible ways to solve certain problems.
- Playing sound by use of the SDL audio device interface: [SoundMixer.cpp](src/SoundMixer.cpp) start method and audioCallback function
- Generating an SDL render texture from downloaded image data: [ImageWindow.cpp](src/ImageWindow.cpp) executeCreateImageFromUrlResponseData method
- Processing SDL keyboard and mouse input events: [Input.cpp](src/Input.cpp) pollEvents method
- Processing ffmpeg audio and video streams decoded from a media file: [Video.cpp](src/Video.cpp) executeReadPackets method
- Writing an ffmpeg video stream composed from captured frame images: [MediaWriter.cpp](src/MediaWriter.cpp) executeWritePackets method
- Parsing subtitle entries from srt (SubRip) files: [SubtitleReader.cpp](src/SubtitleReader.cpp) readSubtitles method
- Rendering audio visualization as a waveform line: [WaveformShader.cpp](src/WaveformShader.cpp) updateRenderState and assignParticlePositions methods
- Drawing a line of pixels by use of Bresenham's line algorithm: [Shader.cpp](src/Shader.cpp) drawLine method
- Storing and retrieving records in sqlite3 files: [Database.cpp](src/Database.cpp) open and exec methods
- Running a text string as Lua script: [LuaScript.cpp](src/LuaScript.cpp) run method
- Making C++ functions available for call by Lua scripts: [LuaScript.cpp](src/LuaScript.cpp) constructor
- Sending an http or https request with libcurl: [Network.cpp](src/Network.cpp) sendHttpRequest method
- Reading freetype character and glyph data from a ttf file: [Font.cpp](src/Font.cpp) load method
- Generating pseudo-random numbers by use of the Mersenne Twister algorithm: [Prng.cpp](src/Prng.cpp) seed and extract methods
- Executing filesystem operations in Windows, Mac, or Linux environments: [OsUtil.cpp](src/OsUtil.cpp) fileExists, getFileSize, getFileMtime, getFileType methods, plus others
- Detecting available network interfaces in Windows, Mac, or Linux environments: [Network.cpp](src/Network.cpp) resetInterfaces method