{"id":13436999,"url":"https://github.com/cisco/openh264","last_synced_at":"2025-05-14T09:06:19.895Z","repository":{"id":11449636,"uuid":"13909573","full_name":"cisco/openh264","owner":"cisco","description":"Open Source H.264 Codec ","archived":false,"fork":false,"pushed_at":"2025-03-27T07:21:59.000Z","size":128241,"stargazers_count":5723,"open_issues_count":262,"forks_count":1822,"subscribers_count":515,"default_branch":"master","last_synced_at":"2025-05-14T09:03:18.370Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-2-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cisco.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":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2013-10-27T20:20:31.000Z","updated_at":"2025-05-14T02:53:05.000Z","dependencies_parsed_at":"2024-11-05T09:23:25.220Z","dependency_job_id":"757637c7-a0f9-42e0-a473-c69f40c59900","html_url":"https://github.com/cisco/openh264","commit_stats":{"total_commits":3137,"total_committers":144,"mean_commits":21.78472222222222,"dds":0.6490277335033472,"last_synced_commit":"edbef4dfe27b44d4e4f25db0671f1073a680a0be"},"previous_names":[],"tags_count":22,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cisco%2Fopenh264","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cisco%2Fopenh264/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cisco%2Fopenh264/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cisco%2Fopenh264/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cisco","download_url":"https://codeload.github.com/cisco/openh264/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254110374,"owners_count":22016391,"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-07-31T03:00:53.632Z","updated_at":"2025-05-14T09:06:19.859Z","avatar_url":"https://github.com/cisco.png","language":"C++","readme":"OpenH264\n========\nOpenH264 is a codec library which supports H.264 encoding and decoding. It is suitable for use in real time applications such as WebRTC. See http://www.openh264.org/ for more details.\n\nEncoder Features\n----------------\n- Constrained Baseline Profile up to Level 5.2 (Max frame size is 36864 macro-blocks)\n- Arbitrary resolution, not constrained to multiples of 16x16\n- Rate control with adaptive quantization, or constant quantization\n- Slice options: 1 slice per frame, N slices per frame, N macroblocks per slice, or N bytes per slice\n- Multiple threads automatically used for multiple slices\n- Temporal scalability up to 4 layers in a dyadic hierarchy\n- Simulcast AVC up to 4 resolutions from a single input\n- Spatial simulcast up to 4 resolutions from a single input\n- Long Term Reference (LTR) frames\n- Memory Management Control Operation (MMCO)\n- Reference picture list modification\n- Single reference frame for inter prediction\n- Multiple reference frames when using LTR and/or 3-4 temporal layers\n- Periodic and on-demand Instantaneous Decoder Refresh (IDR) frame insertion\n- Dynamic changes to bit rate, frame rate, and resolution\n- Annex B byte stream output\n- YUV 4:2:0 planar input\n\nDecoder Features\n----------------\n- Constrained Baseline Profile up to Level 5.2 (Max frame size is 36864 macro-blocks)\n- Arbitrary resolution, not constrained to multiples of 16x16\n- Single thread for all slices\n- Long Term Reference (LTR) frames\n- Memory Management Control Operation (MMCO)\n- Reference picture list modification\n- Multiple reference frames when specified in Sequence Parameter Set (SPS)\n- Annex B byte stream input\n- YUV 4:2:0 planar output\n\nOS Support\n----------\n- Windows 64-bit and 32-bit\n- Mac OS X 64-bit and 32-bit\n- Mac OS X ARM64\n- Linux 64-bit and 32-bit\n- Android 64-bit and 32-bit\n- iOS 64-bit and 32-bit\n- Windows Phone 32-bit\n\nArchitectures verified to be working\n----------\n- ppc64el\n\nProcessor Support\n-----------------\n- Intel x86 optionally with MMX/SSE (no AVX yet, help is welcome)\n- ARMv7 optionally with NEON, AArch64 optionally with NEON\n- Any architecture using C/C++ fallback functions\n\nBuilding the Library\n--------------------\nNASM needed to be installed for assembly code: workable version 2.10.06 or above, NASM can be downloaded from http://www.nasm.us/.\nFor Mac OSX 64-bit NASM needed to be below version 2.11.08 as NASM 2.11.08 will introduce error when using RIP-relative addresses in Mac OSX 64-bit\n\nTo build the arm assembly for Windows Phone, gas-preprocessor is required. It can be downloaded from git://git.libav.org/gas-preprocessor.git\n\nFor Android Builds\n------------------\nTo build for android platform, You need to install android sdk and ndk. You also need to export `**ANDROID_SDK**/tools` to PATH. On Linux, this can be done by\n\n    export PATH=**ANDROID_SDK**/tools:$PATH\n\nThe codec and demo can be built by\n\n    make OS=android NDKROOT=**ANDROID_NDK** TARGET=**ANDROID_TARGET**\n\nValid `**ANDROID_TARGET**` can be found in `**ANDROID_SDK**/platforms`, such as `android-12`.\nYou can also set `ARCH`, `NDKLEVEL` according to your device and NDK version.\n`ARCH` specifies the architecture of android device. Currently `arm`, `arm64`, `x86` and `x86_64` are supported, the default is `arm`. (`mips` and `mips64` can also be used, but there's no specific optimization for those architectures.)\n`NDKLEVEL` specifies android api level, the default is 12. Available possibilities can be found in `**ANDROID_NDK**/platforms`, such as `android-21` (strip away the `android-` prefix).\n\nBy default these commands build for the `armeabi-v7a` ABI. To build for the other android\nABIs, add `ARCH=arm64`, `ARCH=x86`, `ARCH=x86_64`, `ARCH=mips` or `ARCH=mips64`.\nTo build for the older `armeabi` ABI (which has armv5te as baseline), add `APP_ABI=armeabi` (`ARCH=arm` is implicit).\nTo build for 64-bit ABI, such as `arm64`, explicitly set `NDKLEVEL` to 21 or higher.\n\nFor iOS Builds\n--------------\nYou can build the libraries and demo applications using xcode project files\nlocated in `codec/build/iOS/dec` and `codec/build/iOS/enc`.\n\nYou can also build the libraries (but not the demo applications) using the\nmake based build system from the command line. Build with\n\n    make OS=ios ARCH=**ARCH**\n\nValid values for `**ARCH**` are the normal iOS architecture names such as\n`armv7`, `armv7s`, `arm64`, and `i386` and `x86_64` for the simulator.\nAnother settable iOS specific parameter\nis `SDK_MIN`, specifying the minimum deployment target for the built library.\nFor other details on building using make on the command line, see\n'For All Platforms' below.\n\nFor Linux Builds\n--------------\n\nYou can build the libraries (but not the demo applications) using the\nmake based build system from the command line. Build with\n\n    make OS=linux ARCH=**ARCH**\n\n You can set `ARCH` according to your linux device .\n`ARCH` specifies the architecture of the device. Currently `arm`, `arm64`, `x86` and `x86_64` are supported   \n\n NOTICE:\n \tIf your computer is x86 architecture, for build the libnary which be used on arm/aarch64 machine, you may need to use cross-compiler, for example:\n \t\tmake OS=linux CC=aarch64-linux-gnu-gcc CXX=aarch64-linux-gnu-g++ ARCH=arm64\n   \t\t or\n    \tmake OS=linux CC=arm-linux-gnueabi-gcc CXX=arm-linux-gnueabi-g++ ARCH=arm\n\n\nFor Windows Builds\n------------------\n\n\"make\" must be installed. It is recommended to install the Cygwin and \"make\" must be selected to be included in the installation. After the installation, please add the Cygwin bin path to your PATH.\n\nopenh264/build/AutoBuildForWindows.bat is provided to help compile the libraries on Windows platform.  \nUsage of the .bat script:  \n\n    `AutoBuildForWindows.bat Win32-Release-ASM` for x86 Release build  \n    `AutoBuildForWindows.bat Win64-Release-ASM` for x86_64 Release build  \n    `AutoBuildForWindows.bat ARM64-Release-ASM` for arm64 release build  \nfor more usage, please refer to the .bat script help.  \n\nFor All Platforms\n-------------------\n\nUsing make\n----------\n\nFrom the main project directory:\n- `make` for automatically detecting architecture and building accordingly\n- `make ARCH=i386` for x86 32-bit builds\n- `make ARCH=x86_64` for x86 64-bit builds\n- `make ARCH=arm64` for arm64 Mac 64-bit builds\n- `make V=No` for a silent build (not showing the actual compiler commands)\n- `make DEBUGSYMBOLS=True` for two libraries, one is normal libraries, another one is removed the debugging symbol table entries (those created by the -g option)\n\nThe command line programs `h264enc` and `h264dec` will appear in the main project directory.\n\nA shell script to run the command-line apps is in `testbin/CmdLineExample.sh`\n\nUsage information can be found in `testbin/CmdLineReadMe`\n\nUsing meson\n-----------\n\nMeson build definitions have been added, and are known to work on Linux\nand Windows, for x86 and x86 64-bit.\n\nSee \u003chttp://mesonbuild.com/Installing.html\u003e for instructions on how to\ninstall meson, then:\n\n``` shell\nmeson setup builddir\nninja -C builddir\n```\n\nRun the tests with:\n\n``` shell\nmeson test -C builddir -v\n```\n\nInstall with:\n\n``` shell\nninja -C builddir install\n```\n\nUsing the Source\n----------------\n- `codec` - encoder, decoder, console (test app), build (makefile, vcproj)\n- `build` - scripts for Makefile build system\n- `test` - GTest unittest files\n- `testbin` - autobuild scripts, test app config files\n- `res` - yuv and bitstream test files\n\nKnown Issues\n------------\nSee the issue tracker on https://github.com/cisco/openh264/issues\n- Encoder errors when resolution exceeds 3840x2160\n- Encoder errors when compressed frame size exceeds half uncompressed size\n- Decoder errors when compressed frame size exceeds 1MB\n- Encoder RC requires frame skipping to be enabled to hit the target bitrate,\n  if frame skipping is disabled the target bitrate may be exceeded\n\nLicense\n-------\nBSD, see `LICENSE` file for details.\n","funding_links":[],"categories":["Video","C++","排序","视频","Codecs and Encoders","Maths","Software"],"sub_categories":["视频","Video"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcisco%2Fopenh264","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcisco%2Fopenh264","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcisco%2Fopenh264/lists"}