{"id":23401017,"url":"https://github.com/membranesoftware/membrane-media-player","last_synced_at":"2026-04-17T10:31:32.114Z","repository":{"id":269207795,"uuid":"906351371","full_name":"membranesoftware/membrane-media-player","owner":"membranesoftware","description":"Media player application for Windows, Mac, and Linux","archived":false,"fork":false,"pushed_at":"2025-02-05T23:56:04.000Z","size":7456,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-08T20:48:53.023Z","etag":null,"topics":["c-plus-plus","ffmpeg","gui","lua","multimedia","sdl2"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/membranesoftware.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-12-20T17:48:34.000Z","updated_at":"2025-02-05T23:56:07.000Z","dependencies_parsed_at":null,"dependency_job_id":"36e44309-9a14-4580-a271-44673d4a47af","html_url":"https://github.com/membranesoftware/membrane-media-player","commit_stats":null,"previous_names":["membranesoftware/membrane-media-player"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/membranesoftware/membrane-media-player","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/membranesoftware%2Fmembrane-media-player","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/membranesoftware%2Fmembrane-media-player/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/membranesoftware%2Fmembrane-media-player/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/membranesoftware%2Fmembrane-media-player/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/membranesoftware","download_url":"https://codeload.github.com/membranesoftware/membrane-media-player/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/membranesoftware%2Fmembrane-media-player/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31925309,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-17T10:19:20.377Z","status":"ssl_error","status_checked_at":"2026-04-17T10:19:18.682Z","response_time":62,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["c-plus-plus","ffmpeg","gui","lua","multimedia","sdl2"],"created_at":"2024-12-22T11:13:59.386Z","updated_at":"2026-04-17T10:31:32.073Z","avatar_url":"https://github.com/membranesoftware.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"## Membrane Media Player\n\nThis 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.\n\n![Screenshot 1](doc/1.png) ![Screenshot 2](doc/2.png)\n\nBuilds: https://membranesoftware.com/membrane-media-player/\n\nAbout Membrane Media Player: https://membranesoftware.com/i/about-membrane-media-player\n\n### Third-Party Dependencies\n\nMembrane Media Player makes use of other software components.\n\n- [curl](https://curl.se/): the multiprotocol file transfer library\n- [ffmpeg](https://www.ffmpeg.org/): a complete, cross-platform solution to record, convert, and stream audio and video\n- [freetype](https://www.freetype.org/): a freely available software library to render fonts\n- [jpeg](http://jpegclub.org/reference/reference-sources/): the Independent JPEG Group reference implementation of the JPEG standard\n- [libpng](http://www.libpng.org/pub/png/libpng.html): the official reference library for PNG images\n- [lua](https://www.lua.org/): a lightweight embeddable scripting language\n- [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\n- [sdl2](https://www.libsdl.org/): a cross-platform development library designed to provide low level access to audio, keyboard, mouse, joystick, and graphics hardware\n- [sdl2image](https://www.libsdl.org/projects/SDL_image/): an image file loading library\n- [sqlite](https://sqlite.org/): an in-process library that implements a self-contained, serverless, zero-configuration, transactional SQL database engine\n- [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\n- [zlib](https://zlib.net/): A Massively Spiffy Yet Delicately Unobtrusive Compression Library\n\n## Reference Source\n\nThe Membrane Media Player source files provide examples for possible ways to solve certain problems.\n\n- Playing sound by use of the SDL audio device interface: [SoundMixer.cpp](src/SoundMixer.cpp) start method and audioCallback function\n- Generating an SDL render texture from downloaded image data: [ImageWindow.cpp](src/ImageWindow.cpp) executeCreateImageFromUrlResponseData method\n- Processing SDL keyboard and mouse input events: [Input.cpp](src/Input.cpp) pollEvents method\n- Processing ffmpeg audio and video streams decoded from a media file: [Video.cpp](src/Video.cpp) executeReadPackets method\n- Writing an ffmpeg video stream composed from captured frame images: [MediaWriter.cpp](src/MediaWriter.cpp) executeWritePackets method\n- Parsing subtitle entries from srt (SubRip) files: [SubtitleReader.cpp](src/SubtitleReader.cpp) readSubtitles method\n- Rendering audio visualization as a waveform line: [WaveformShader.cpp](src/WaveformShader.cpp) updateRenderState and assignParticlePositions methods\n- Drawing a line of pixels by use of Bresenham's line algorithm: [Shader.cpp](src/Shader.cpp) drawLine method\n- Storing and retrieving records in sqlite3 files: [Database.cpp](src/Database.cpp) open and exec methods\n- Running a text string as Lua script: [LuaScript.cpp](src/LuaScript.cpp) run method\n- Making C++ functions available for call by Lua scripts: [LuaScript.cpp](src/LuaScript.cpp) constructor\n- Sending an http or https request with libcurl: [Network.cpp](src/Network.cpp) sendHttpRequest method\n- Reading freetype character and glyph data from a ttf file: [Font.cpp](src/Font.cpp) load method\n- Generating pseudo-random numbers by use of the Mersenne Twister algorithm: [Prng.cpp](src/Prng.cpp) seed and extract methods\n- Executing filesystem operations in Windows, Mac, or Linux environments: [OsUtil.cpp](src/OsUtil.cpp) fileExists, getFileSize, getFileMtime, getFileType methods, plus others\n- Detecting available network interfaces in Windows, Mac, or Linux environments: [Network.cpp](src/Network.cpp) resetInterfaces method\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmembranesoftware%2Fmembrane-media-player","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmembranesoftware%2Fmembrane-media-player","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmembranesoftware%2Fmembrane-media-player/lists"}