Skip to content

Latest commit

 

History

History
47 lines (37 loc) · 4 KB

README.md

File metadata and controls

47 lines (37 loc) · 4 KB

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.

Screenshot 1 Screenshot 2

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: the multiprotocol file transfer library
  • ffmpeg: a complete, cross-platform solution to record, convert, and stream audio and video
  • freetype: a freely available software library to render fonts
  • jpeg: the Independent JPEG Group reference implementation of the JPEG standard
  • libpng: the official reference library for PNG images
  • lua: a lightweight embeddable scripting language
  • openssl: a robust, commercial-grade, and full-featured toolkit for the Transport Layer Security (TLS) and Secure Sockets Layer (SSL) protocols
  • sdl2: a cross-platform development library designed to provide low level access to audio, keyboard, mouse, joystick, and graphics hardware
  • sdl2image: an image file loading library
  • sqlite: an in-process library that implements a self-contained, serverless, zero-configuration, transactional SQL database engine
  • x264: a free software library and application for encoding video streams into the H.264/MPEG-4 AVC compression format
  • zlib: 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 start method and audioCallback function
  • Generating an SDL render texture from downloaded image data: ImageWindow.cpp executeCreateImageFromUrlResponseData method
  • Processing SDL keyboard and mouse input events: Input.cpp pollEvents method
  • Processing ffmpeg audio and video streams decoded from a media file: Video.cpp executeReadPackets method
  • Writing an ffmpeg video stream composed from captured frame images: MediaWriter.cpp executeWritePackets method
  • Parsing subtitle entries from srt (SubRip) files: SubtitleReader.cpp readSubtitles method
  • Rendering audio visualization as a waveform line: WaveformShader.cpp updateRenderState and assignParticlePositions methods
  • Drawing a line of pixels by use of Bresenham's line algorithm: Shader.cpp drawLine method
  • Storing and retrieving records in sqlite3 files: Database.cpp open and exec methods
  • Running a text string as Lua script: LuaScript.cpp run method
  • Making C++ functions available for call by Lua scripts: LuaScript.cpp constructor
  • Sending an http or https request with libcurl: Network.cpp sendHttpRequest method
  • Reading freetype character and glyph data from a ttf file: Font.cpp load method
  • Generating pseudo-random numbers by use of the Mersenne Twister algorithm: Prng.cpp seed and extract methods
  • Executing filesystem operations in Windows, Mac, or Linux environments: OsUtil.cpp fileExists, getFileSize, getFileMtime, getFileType methods, plus others
  • Detecting available network interfaces in Windows, Mac, or Linux environments: Network.cpp resetInterfaces method