Skip to content

📀 Encoding YUV into H.246 & transmit it to rtmp server.

License

Notifications You must be signed in to change notification settings

BruceWind/SoftCodec

Folders and files

NameName
Last commit message
Last commit date

Latest commit

97a88a5 · Dec 22, 2023

History

43 Commits
May 1, 2021
Jun 14, 2021
Jun 1, 2021
Jun 15, 2021
Jun 15, 2021
May 5, 2021
Jun 15, 2021
Jun 15, 2021
Dec 22, 2023
Sep 8, 2022
Feb 26, 2021
Nov 23, 2016
Nov 23, 2016
Nov 23, 2016
May 5, 2021

Repository files navigation

SoftCodec

Build

中文

  • 1. encode with x264.
  • 2. push into RTMP server.
  • 3. encode with openh264.
  • 4. echo cancellation in software. Maybe need libspeex.

What It Does:

click to expand.
         phone                                                          
+-----------------------+                                               
|                       |                                               
|                       |                                               
|     +-----------+     |                                               
|     |           |     |   +----------------+        +----------------+
|     |  Camera   |-------->|  YUV format A  | -----> |  YUV format B  |
|     |           |     |   +----------------+        +----------------+
|     +-----------+     |                                     |         
|                       |                                     |         
|                       |                                     |         
|                       |                                     v         
|                       |      +------------+         +---------------+ 
|                       |      |            |         |               | 
|                       |      | YUV(NALs)  |<------  |     Codec     | 
|                       |      |            |         |               | 
|                       |      +------------+         +---------------+ 
|                       |            |                                  
|                       |            |                                  
|                       |            |                                  
|                       |            |                                  
|                       |            v                                  
|    +-------------+    |     +-------------+                           
|    |             |    |     |             |                           
|    |     WIFI    |<-------- | RTMP & FLV  |                           
|    |             |    |     |             |                           
|    +-------------+    |     +-------------+                           
|           |           |                                               
+-----------|-----------+                                               
            |                                                           
            |                      RTMP server                                     
            |                    +-----------+                                  
            |                    |           |
            |                    |   _____   |            
            |                    |  |_____|  |            
            +------------------->|    ___    |
                                 |   |___|   |
                                 |           |
                                 |           |
                                 |           |
                                 +-----------+            

Building & Testing

click to expand.

1. building

It depend on NDK 16, but you don't need to download manually. By the time you executed ./gradlew assembleDebug, gradle will download it automatically in case your computer has no NDK 16.

2. Testing with a RTMP server:

You must have a RTMP server which receives stream app pushed. The RTMP server can also transfer data to video players.

I had written a blog to teach someone else how to establish it. You can look into the blog.

3. Pushing stream.

modify this code line below in MainActivity to point to your rtmp server:

private String mRtmpPushUrl = "rtmp://192.168.50.14/live/live";

In addition, master branch has all of stable codes, If you want to look code in development, checkout other branches.

Take look at CodecLibsBuildSH in case you want to upgrade version of Codec.