{"id":29050786,"url":"https://github.com/williamd1k0/m5-vids","last_synced_at":"2026-05-07T13:45:51.579Z","repository":{"id":301065574,"uuid":"1007551561","full_name":"williamd1k0/m5-vids","owner":"williamd1k0","description":"A simple video player for M5Stack Cardputer","archived":false,"fork":false,"pushed_at":"2025-06-25T00:53:03.000Z","size":26,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-06-25T01:45:07.393Z","etag":null,"topics":["arduino","cardputer","esp32","m5cardputer","m5stack","mjpeg","video-player"],"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/williamd1k0.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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,"zenodo":null}},"created_at":"2025-06-24T07:09:43.000Z","updated_at":"2025-06-25T00:53:06.000Z","dependencies_parsed_at":"2025-06-25T01:55:23.560Z","dependency_job_id":null,"html_url":"https://github.com/williamd1k0/m5-vids","commit_stats":null,"previous_names":["williamd1k0/m5-vids"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/williamd1k0/m5-vids","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/williamd1k0%2Fm5-vids","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/williamd1k0%2Fm5-vids/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/williamd1k0%2Fm5-vids/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/williamd1k0%2Fm5-vids/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/williamd1k0","download_url":"https://codeload.github.com/williamd1k0/m5-vids/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/williamd1k0%2Fm5-vids/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":262145454,"owners_count":23265926,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["arduino","cardputer","esp32","m5cardputer","m5stack","mjpeg","video-player"],"created_at":"2025-06-26T21:36:39.618Z","updated_at":"2026-05-07T13:45:51.546Z","avatar_url":"https://github.com/williamd1k0.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# M5 Vids\n\nThis project is a simple video player experiment I made to test if I could use the M5Stack Cardputer to play videos.\n\nhttps://github.com/user-attachments/assets/1cad9f04-546c-40a6-82ce-70d8677e0596\n\nhttps://github.com/user-attachments/assets/01d49514-d8be-49d2-8a9f-848927d2ad81\n\nhttps://github.com/user-attachments/assets/2f9e45e1-8a41-4943-b442-0deff69500f7\n\n\n\u003e [!WARNING]\n\u003e As I am not a professional MCU/IoT developer, this code may not be the most efficient or optimal solution. It was created as a personal project and may not follow best practices. Use it at your own risk!\n\nThis project is essentially a mix of the following projects:\n\n- [ESP32_ScreenShotReceiver](https://github.com/lovyan03/ESP32_ScreenShotReceiver)\n  - Thanks to [lovyan03](https://github.com/lovyan03) for the JPEG decoder code (especially the jpgWriteRow implementation)!\n- [Play Video With ESP32\n@ Instructables](https://www.instructables.com/Play-Video-With-ESP32/) (which seems to be based on the ESP32_ScreenShotReceiver project as well)\n  - Thanks to [moononournation](https://github.com/moononournation) for the MJPEG decoder code and all the video transcoding tips!\n\nThe project can be built using the Arduino IDE, and it requires no additional libraries other than the standard M5Stack Cardputer libraries.\n\n\u003e [!NOTE]\n\u003e The Makefile in the root directory and the compile_flags.txt.in file are just helpers to improve my development experience with the Zed Editor, so they can be ignored.\n\n## How it works\n\nThe program plays a video from the SD card using two separated files (one for the video and one for the audio).\nThe video file must be in the MJPEG format and the audio file must be in the raw PCM u8 format.\n\n\u003e [!TIP]\n\u003e There is a Makefile in the `vids` directory that can be used to convert a video file (such as an MP4 file) to the required formats (requires [ffmpeg](https://ffmpeg.org/)).\n\u003e You can use the following command to convert a video file:\n\u003e ```bash\n\u003e cd vids\n\u003e make i=myvideo.mp4\n\u003e # which will create myvideo.mjpeg and myvideo.pcm in the `vids/out` directory\n\u003e ```\n\nTo play the MJPEG+PCM video, just copy the two files to the SD card, insert the SD card into the M5Stack Cardputer, and run the program (the MJPEG file and the PCM file must have the same name, but with the extensions `.mjpeg` and `.pcm`, respectively).\n\nThe program supports multiple MJPEG+PCM files, so you can have multiple videos on the SD card.\n\n## Usage\n\n- \u003ckbd\u003eBtnA\u003c/kbd\u003e (aka \u003ckbd\u003eBtnG0\u003c/kbd\u003e): Pause/Resume the video\n- Keyboard \u003ckbd\u003eLeft\u003c/kbd\u003e/\u003ckbd\u003eRight\u003c/kbd\u003e (aka \u003ckbd\u003e,\u003c/kbd\u003e/\u003ckbd\u003e/\u003c/kbd\u003e): Previous/Next video\n- Keyboard \u003ckbd\u003e-\u003c/kbd\u003e/\u003ckbd\u003e+\u003c/kbd\u003e (aka \u003ckbd\u003e_\u003c/kbd\u003e/\u003ckbd\u003e=\u003c/kbd\u003e): Volume down/up\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwilliamd1k0%2Fm5-vids","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwilliamd1k0%2Fm5-vids","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwilliamd1k0%2Fm5-vids/lists"}