Skip to content

Commit

Permalink
update to v3.2.8
Browse files Browse the repository at this point in the history
  • Loading branch information
illuspas committed Sep 14, 2024
1 parent 6c30c26 commit 8cf443f
Show file tree
Hide file tree
Showing 8 changed files with 121 additions and 4 deletions.
3 changes: 3 additions & 0 deletions ChangeLog.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
## 3.2.8 - 2024-09-14
增加原始数据推流拉流类

## 3.2.7 - 2024-03-06
修复一处音频采样声道兼容问题

Expand Down
6 changes: 3 additions & 3 deletions NodeMediaClient/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@ android {
defaultConfig {
minSdkVersion 21
targetSdkVersion 33
versionCode 30207
versionName "3.2.7"
versionCode 30208
versionName "3.2.8"
}

buildTypes {
Expand Down Expand Up @@ -40,7 +40,7 @@ afterEvaluate {
from components.release
groupId = 'com.github.NodeMedia'
artifactId = 'NodeMediaClient-Android'
version = '3.2.7'
version = '3.2.8'
}
}
}
Expand Down
114 changes: 114 additions & 0 deletions NodeMediaClient/src/main/java/cn/nodemedia/NodeStreamer.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,114 @@
package cn.nodemedia;

import android.content.Context;

import androidx.annotation.NonNull;

public class NodeStreamer {
static {
System.loadLibrary("NodeMediaClient");
}

public static final int NMC_RAW_VIDEO_YUV420 = 0;
public static final int NMC_RAW_VIDEO_NV12 = 23;
public static final int NMC_RAW_VIDEO_NV21 = 24;

public static final int NMC_RAW_AUDIO_PCMU8 = 0;
public static final int NMC_RAW_AUDIO_PCMS16 = 1;
public static final int NMC_RAW_AUDIO_PCMS32 = 2;
public static final int NMC_RAW_AUDIO_PCMF32 = 3;

private Context ctx;
private long id;

private OnNodeStreamerEventListener nodeStreamerEventListener;

private OnNodeStreamerMediaListener nodeStreamerMediaListener;

public void setNodeStreamerEventListener(OnNodeStreamerEventListener nodeStreamerEventListener) {
this.nodeStreamerEventListener = nodeStreamerEventListener;
}

public void setNodeStreamerMediaListener(OnNodeStreamerMediaListener nodeStreamerMediaListener) {
this.nodeStreamerMediaListener = nodeStreamerMediaListener;
}

public NodeStreamer(@NonNull Context context, @NonNull String license) {
ctx = context;
id = jniInit(context, license);
}

private native long jniInit(Context context, String license);

private native void jniFree();

public native void setRawVideoMediaFormat(int format, int width, int height);

public native void setRawAudioMediaFormat(int format, int sampleRate, int channels);

public native void setEncVideoMediaFormat(int codec, int profile, int width, int height, int fps, int keyInterval, int bitrate);

public native void setEncAudioMediaFormat(int codec, int profile, int sampleRate, int channels, int bitrate);

public native int sendRawVideoFrame(byte[] data, int length, long timestamp);

public native int sendRawAudioFrame(byte[] data, int length, long timestamp);

public native int startPull(String url);

public native int stopPull();

public native int startPush(String url);

public native int stopPush();

public interface OnNodeStreamerEventListener {
void onEventCallback(NodeStreamer publisher, int event, String msg);
}

public interface OnNodeStreamerMediaListener {

void onAudioInfoCallback(NodeStreamer publisher, int format, int sampleRate, int channels);

void onVideoInfoCallback(NodeStreamer publisher, int format, int width, int height);

void onAudioFrameCallback(NodeStreamer publisher, byte[] data, int length, long timestamp);

void onVideoFrameCallback(NodeStreamer publisher, byte[] data, int length, long timestamp);

}

private void onEvent(int event, String msg) {
// Log.d(TAG, "on Event: " + event + " Message:" + msg);
if (this.nodeStreamerEventListener != null) {
this.nodeStreamerEventListener.onEventCallback(this, event, msg);
}
}

private void onAudioInfo(int format, int sampleRate, int channels) {
// Log.d(TAG, "on Event: " + event + " Message:" + msg);
if (this.nodeStreamerMediaListener != null) {
this.nodeStreamerMediaListener.onAudioInfoCallback(this, format, sampleRate, channels);
}
}

private void onVideoInfo(int format, int width, int height) {
// Log.d(TAG, "on Event: " + event + " Message:" + msg);
if (this.nodeStreamerMediaListener != null) {
this.nodeStreamerMediaListener.onVideoInfoCallback(this, format, width, height);
}
}

private void onAudioFrame(byte[] data, int length, long timestamp) {
if (this.nodeStreamerMediaListener != null) {
this.nodeStreamerMediaListener.onAudioFrameCallback(this, data, length, timestamp);
}
}

private void onVideoFrame(byte[] data, int length, long timestamp) {
if (this.nodeStreamerMediaListener != null) {
this.nodeStreamerMediaListener.onVideoFrameCallback(this, data, length, timestamp);
}
}

}
Binary file not shown.
Binary file not shown.
Binary file modified NodeMediaClient/src/main/jniLibs/x86/libNodeMediaClient.so
Binary file not shown.
Binary file modified NodeMediaClient/src/main/jniLibs/x86_64/libNodeMediaClient.so
Binary file not shown.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ dependencyResolutionManagement {
### 2. Add the dependency
```
dependencies {
implementation 'com.github.NodeMedia:NodeMediaClient-Android:3.2.7'
implementation 'com.github.NodeMedia:NodeMediaClient-Android:3.2.8'
}
```

Expand Down

0 comments on commit 8cf443f

Please sign in to comment.