{"id":21880493,"url":"https://github.com/brucewind/softcodec","last_synced_at":"2025-04-15T05:07:37.415Z","repository":{"id":58834567,"uuid":"74581204","full_name":"BruceWind/SoftCodec","owner":"BruceWind","description":"📀  Encoding YUV into H.246 \u0026 transmit it to rtmp server.","archived":false,"fork":false,"pushed_at":"2023-12-22T01:54:20.000Z","size":8533,"stargazers_count":10,"open_issues_count":0,"forks_count":5,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-04-15T05:07:28.113Z","etag":null,"topics":["android","android-codec","android-h264","android-openh264","codec","h264-encoder","librtmp","libyuv","mediastreamrecorder","openh264","rtmp","x264","yuv"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/BruceWind.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}},"created_at":"2016-11-23T13:51:38.000Z","updated_at":"2025-02-08T05:49:56.000Z","dependencies_parsed_at":"2023-01-18T00:45:53.634Z","dependency_job_id":null,"html_url":"https://github.com/BruceWind/SoftCodec","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BruceWind%2FSoftCodec","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BruceWind%2FSoftCodec/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BruceWind%2FSoftCodec/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BruceWind%2FSoftCodec/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/BruceWind","download_url":"https://codeload.github.com/BruceWind/SoftCodec/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249010199,"owners_count":21197797,"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":["android","android-codec","android-h264","android-openh264","codec","h264-encoder","librtmp","libyuv","mediastreamrecorder","openh264","rtmp","x264","yuv"],"created_at":"2024-11-28T09:14:09.437Z","updated_at":"2025-04-15T05:07:37.390Z","avatar_url":"https://github.com/BruceWind.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# SoftCodec \n\n[![Build](https://github.com/BruceWind/SoftCodec/actions/workflows/build.yml/badge.svg?branch=master)](https://github.com/BruceWind/SoftCodec/actions/workflows/build.yml)\n\n[中文](https://github.com/BruceWind/SoftCodec/blob/master/README_zh_cn.md)\n- [x] 1. encode with x264.\n- [x] 2. push into RTMP server.\n- [x] 3. encode with openh264.\n- [ ] 4. echo cancellation in software. Maybe need libspeex.\n\n## What It Does:\n\u003cdetails\u003e\n\u003csummary\u003eclick to expand.\u003c/summary\u003e\n\n``` javascrpt                                                     \n         phone                                                          \n+-----------------------+                                               \n|                       |                                               \n|                       |                                               \n|     +-----------+     |                                               \n|     |           |     |   +----------------+        +----------------+\n|     |  Camera   |--------\u003e|  YUV format A  | -----\u003e |  YUV format B  |\n|     |           |     |   +----------------+        +----------------+\n|     +-----------+     |                                     |         \n|                       |                                     |         \n|                       |                                     |         \n|                       |                                     v         \n|                       |      +------------+         +---------------+ \n|                       |      |            |         |               | \n|                       |      | YUV(NALs)  |\u003c------  |     Codec     | \n|                       |      |            |         |               | \n|                       |      +------------+         +---------------+ \n|                       |            |                                  \n|                       |            |                                  \n|                       |            |                                  \n|                       |            |                                  \n|                       |            v                                  \n|    +-------------+    |     +-------------+                           \n|    |             |    |     |             |                           \n|    |     WIFI    |\u003c-------- | RTMP \u0026 FLV  |                           \n|    |             |    |     |             |                           \n|    +-------------+    |     +-------------+                           \n|           |           |                                               \n+-----------|-----------+                                               \n            |                                                           \n            |                      RTMP server                                     \n            |                    +-----------+                                  \n            |                    |           |\n            |                    |   _____   |            \n            |                    |  |_____|  |            \n            +-------------------\u003e|    ___    |\n                                 |   |___|   |\n                                 |           |\n                                 |           |\n                                 |           |\n                                 +-----------+            \n```\n     \n\u003c/details\u003e\n\n## Building \u0026 Testing \n\u003cdetails\u003e\n\u003csummary\u003eclick to expand.\u003c/summary\u003e\n         \n**1. building**\n\nIt depend on NDK 16, but you don't need to download manually. \nBy the time you executed `./gradlew assembleDebug`, gradle will download it automatically in case \nyour computer has no NDK 16.\n         \n**2. Testing with a RTMP server:**\n\n\nYou must have a RTMP server which receives stream app pushed. The RTMP server can also transfer data to video players.\n \nI had written a blog to teach someone else how to establish it.\nYou can look into the [blog](https://github.com/BruceWind/BruceWind.github.io/blob/master/md/establish-RTMP-server-with-docker.md).\n\n**3. Pushing stream.**\n\nmodify this code line below in `MainActivity` to point to your rtmp server:\n``` java \nprivate String mRtmpPushUrl = \"rtmp://192.168.50.14/live/live\";\n```\n \u003c/details\u003e\n         \n---------------\n\nIn addition, `master` branch has all of stable codes, If you want to look code in development, checkout\n other branches.\n \n \nTake look at [CodecLibsBuildSH](https://github.com/BruceWind/CodecLibsBuildSH) in case you want to upgrade version of Codec.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbrucewind%2Fsoftcodec","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbrucewind%2Fsoftcodec","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbrucewind%2Fsoftcodec/lists"}