{"id":13732102,"url":"https://github.com/emericg/MiniVideo","last_synced_at":"2025-05-08T06:31:21.691Z","repository":{"id":13455297,"uuid":"16144883","full_name":"emericg/MiniVideo","owner":"emericg","description":"A multimedia framework developed from scratch in C/C++, bundled with test programs and a neat media analyzer.  ","archived":false,"fork":false,"pushed_at":"2024-07-09T16:35:45.000Z","size":6005,"stargazers_count":84,"open_issues_count":1,"forks_count":14,"subscribers_count":11,"default_branch":"master","last_synced_at":"2024-07-09T21:10:07.964Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"lgpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/emericg.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE.md","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},"funding":{"github":["emericg"],"custom":["https://paypal.me/EmericGrange"]}},"created_at":"2014-01-22T16:30:43.000Z","updated_at":"2024-07-09T16:35:49.000Z","dependencies_parsed_at":"2024-07-09T21:06:33.373Z","dependency_job_id":null,"html_url":"https://github.com/emericg/MiniVideo","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emericg%2FMiniVideo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emericg%2FMiniVideo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emericg%2FMiniVideo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emericg%2FMiniVideo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/emericg","download_url":"https://codeload.github.com/emericg/MiniVideo/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":213757415,"owners_count":15634168,"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":[],"created_at":"2024-08-03T02:01:46.437Z","updated_at":"2024-11-14T23:31:10.766Z","avatar_url":"https://github.com/emericg.png","language":"C++","readme":"MiniVideo framework\n===================\n\n[![GitHub action](https://img.shields.io/github/actions/workflow/status/emericg/MiniVideo/builds_minivideo.yml?style=flat-square)](https://github.com/emericg/MiniVideo/actions/workflows/builds_minivideo.yml)\n[![GitHub action](https://img.shields.io/github/actions/workflow/status/emericg/MiniVideo/builds_minianalyser.yml?style=flat-square)](https://github.com/emericg/MiniVideo/actions/workflows/builds_minianalyser.yml)\n\nMiniVideo is a **multimedia framework developed from scratch** in C/C++, bundled with small testing programs and a neat [media analyser](mini_analyser/).  \nMiniVideo has been tested with several CPU architectures (x86, SH4, MIPS, ARM).  \nThe project uses a dual CMake/QMake build system (CMake is prefered though). Both library and test programs can be installed into your system.  \n\nMiniVideo has been initially developed in 2010/2011 during an internship I did in a French company called *httv*, as a small **video decoding library developed from scratch** in C.\nIts goal was to generate video thumbnails, with a source code easy to read and to understand for learning purpose.\nAfter a clean-up pass, the code has been published early 2014 with *httv* permission under the LGPL v3 license (video framework) and GPLv3 (test softwares).  \n\nThe minivideo library can:\n* Open video files with various container to demux and remux audios/videos content.\n* Open H.264 compressed videos and decode/export intra-coded pictures.\n* Extract various metadata from container and elementary streams.\n* Map exact container structure to XML file / GUI.\n\n### Supported video codec (decoding)\n- H.264 / MPEG-4 part 10 \"Advance Video Coding\"\n  - I frames only...\n  - please note that at still a few bugs inside CABAC decoding process being worked on...\n\n### Supported container formats (import modules)\n- AVI [.avi]\n- WAVE [.wav]\n- ASF [.asf, .wma, .wmv]\n- MKV [.mkv, .webm, ...]\n- MP4 / MOV (ISOM container) [.mp4, .mov, .3gp, ...]\n- MPEG-PS (MPEG \"Program Stream\") [.mpg, .mpeg, .vob, ...]\n- MPEG-1/2 \"elementary stream\" [.mpg, .mpeg]\n- H.264 / H.265  / H.266 \"elementary stream\" (\"Annex B\" format) [.264, .265, .266]\n- MP3 \"elementary stream\" [.mp3]\n\n### Supported container formats (export modules)\n- Elementary Streams\n\n### Supported picture formats (output modules)\n- jpeg (internal OR when libjpeg support is available)\n- png (internal OR when libpng support is available)\n- webp (when libwebp support is available)\n- bmp\n- tiff\n- tga\n\n\nBuilding minivideo library\n--------------------------\n\n```bash\n$ cd minivideo/build/\n$ cmake ..\n$ make -j$(grep -c ^processor /proc/cpuinfo)\n```\n\nYou can change several build options directly into the \"minivideo/CMakeLists.txt\" \nfile, or you can tune CMake by adding extra arguments to the cmake call:\n\n\u003e -DCMAKE_BUILD_TYPE=Release/Debug  \n\u003e -DCMAKE_BUILD_Mode=Dynamic/Static  \n\u003e -DCMAKE_TOOLCHAIN_FILE=../cmake/toolchains/xxx.cmake  \n\u003e -DCMAKE_INSTALL_PREFIX=/usr/bin  \n\nInstallation into the system, available for root user:\n\n```bash\n$ su\n$ make install # system installation, need root user\n```\n\nGenerating online documentation with Doxygen\n--------------------------------------------\n\n```bash\n$ cd minivideo/doc/\n$ ./generate_doxygen.sh\n```\n\nOpen \"minivideo/doc/doxygen.html\" with your favorite browser.\n\nGenerating error report with cppcheck\n-------------------------------------\n\n```bash\n$ cd minivideo/doc/\n$ ./generate_cppcheck.sh\n```\n\nOpen \"minivideo/doc/cppcheck.html\" with your favorite browser.\n\nBuilding MiniVideo's testing softwares\n--------------------------------------\n\nDo not forget \"FindLibMiniVideo.cmake\" directory in the cmake/modules/, which defines\nhow to find the library (libminivideoframework.so file) and its header (minivideoframework.h file).  \nIn case of problem, it may be necessary to manually indicate the paths of these files.\n\n```bash\n$ cd mini_analyser/\n$ qmake\n$ make\n```\n\n```bash\n$ cd mini_extractor/build/\n$ cmake ..\n$ make\n```\n\n```bash\n$ cd mini_thumbnailer/build/\n$ cmake ..\n$ make\n```\n\nInstallation into the system, available for root user with both testing softwares:\n\n```bash\n$ su\n$ make install # system installation, need root user\n```\n\nUsing mini_analyser\n-------------------\n\n```bash\n$ cd mini_analyser/build/\n$ ./mini_analyser\n```\n\nThen drag and drop files to analyse them!\n\nUsing mini_extractor\n--------------------\n\n```bash\n$ cd mini_extractor/build/\n$ ./mini_extractor -i 'myfilepath' [-o 'mydirectory'] [-a nb_tracks] [-v nb_tracks]\n```\n\nCommand line arguments:\n\u003e -h : print help  \n\u003e -i : path to the input video  \n\u003e -o : path to the output folder, where extracted streams will be saved  \n\u003e -a : maximum number of audio stream(s) to extract  \n\u003e -v : maximum number of video stream(s) to extract  \n\nUsing mini_thumbnailer\n----------------------\n\n```bash\n$ cd mini_thumbnailer/build/\n$ ./mini_thumbnailer -i 'myfilepath' [-o 'mydirectory'] [-f picture_format] [-q picture_quality] [-n picture_number] [-m picture_extractionmode]\n```\n\nCommand line arguments:\n\u003e -h : print help  \n\u003e -i : path to the input video  \n\u003e -o : path to the output folder, where generated thumbnails will be saved  \n\u003e -f : export format for the thumbnails (can be 'webp' 'jpg' 'png' 'bmp' 'tga' 'yuv420' 'yuv444')  \n\u003e -q : thumbnail quality (1 to 100 range)  \n\u003e -n : number of thumbnail to generate (1 to 999 range)  \n\u003e -m : extraction mode for the thumbnails (can be 'unfiltered', 'ordered' or 'distributed')  \n","funding_links":["https://github.com/sponsors/emericg","https://paypal.me/EmericGrange"],"categories":["Multimedia"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Femericg%2FMiniVideo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Femericg%2FMiniVideo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Femericg%2FMiniVideo/lists"}