Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Android平台使用mk api 去推流到Android本地的server,尝试了很久没有成功, 一直没有查到ZLMediaKit server有相应的视频流 #3369

Closed
sheng930920 opened this issue Mar 12, 2024 · 5 comments

Comments

@sheng930920
Copy link

Android平台使用,根据 Android demo先把ZLMediaKit server运行启动起来,然后使用mk api 把录屏的H264视频流去推到本地的server,尝试了很久没有成功, 一直没有查到ZLMediaKit server有相应的视频流

下面是Android logcat反馈日志

2024-03-12 16:44:24.869 30968-30968/? I/d.ijkplayerdem: Late-enabling -Xcheck:jni
2024-03-12 16:44:24.892 30968-30968/? E/d.ijkplayerdem: Unknown bits set in runtime_flags: 0x8000
2024-03-12 16:44:24.930 30968-30968/com.shd.ijkplayerdemo W/d.ijkplayerdemo: type=1400 audit(0.0:285116): avc: denied { search } for name="bbkcore" dev="dm-3" ino=1426 scontext=u:r:untrusted_app:s0:c174,c257,c512,c768 tcontext=u:object_r:vivo_data_file:s0 tclass=dir permissive=0
2024-03-12 16:44:25.280 30968-30968/com.shd.ijkplayerdemo W/d.ijkplayerdemo: type=1400 audit(0.0:285124): avc: denied { search } for name="bbkcore" dev="dm-3" ino=1426 scontext=u:r:untrusted_app:s0:c174,c257,c512,c768 tcontext=u:object_r:vivo_data_file:s0 tclass=dir permissive=0
2024-03-12 16:44:25.288 30968-30968/com.shd.ijkplayerdemo I/VPerformance: Connecting to vperf service.
2024-03-12 16:44:25.350 30968-30968/com.shd.ijkplayerdemo W/d.ijkplayerdemo: type=1400 audit(0.0:285126): avc: denied { search } for name="bbkcore" dev="dm-3" ino=1426 scontext=u:r:untrusted_app:s0:c174,c257,c512,c768 tcontext=u:object_r:vivo_data_file:s0 tclass=dir permissive=0
2024-03-12 16:44:25.383 30968-30968/com.shd.ijkplayerdemo I/PhoneWindow: initSystemUIColor
2024-03-12 16:44:25.404 30968-30968/com.shd.ijkplayerdemo W/d.ijkplayerdem: Accessing hidden method Landroid/view/View;->computeFitSystemWindows(Landroid/graphics/Rect;Landroid/graphics/Rect;)Z (greylist, reflection, allowed)
2024-03-12 16:44:25.405 30968-30968/com.shd.ijkplayerdemo W/d.ijkplayerdem: Accessing hidden method Landroid/view/ViewGroup;->makeOptionalFitsSystemWindows()V (greylist, reflection, allowed)
2024-03-12 16:44:25.506 30968-31003/com.shd.ijkplayerdemo I/AdrenoGLES: QUALCOMM build                   : bfa6487, Ia11ce2d146
    Build Date                       : 09/04/20
    OpenGL ES Shader Compiler Version: EV031.27.05.02
    Local Branch                     : 
    Remote Branch                    : refs/tags/AU_LINUX_ANDROID_LA.UM.8.3.R1.10.00.00.520.063
    Remote Branch                    : NONE
    Reconstruct Branch               : NOTHING
2024-03-12 16:44:25.506 30968-31003/com.shd.ijkplayerdemo I/AdrenoGLES: Build Config                     : S P 8.0.11 AArch64
2024-03-12 16:44:25.508 30968-31003/com.shd.ijkplayerdemo I/AdrenoGLES: PFP: 0x016ee187, ME: 0x00000000
2024-03-12 16:44:25.509 30968-31003/com.shd.ijkplayerdemo W/AdrenoUtils: <ReadGpuID_from_sysfs:194>: Failed to open /sys/class/kgsl/kgsl-3d0/gpu_model
2024-03-12 16:44:25.510 30968-31003/com.shd.ijkplayerdemo W/AdrenoUtils: <ReadGpuID:218>: Failed to read chip ID from gpu_model. Fallback to use the GSL path
2024-03-12 16:44:25.500 30968-30968/com.shd.ijkplayerdemo W/RenderThread: type=1400 audit(0.0:285127): avc: denied { search } for name="kgsl-3d0" dev="sysfs" ino=49865 scontext=u:r:untrusted_app:s0:c174,c257,c512,c768 tcontext=u:object_r:sysfs_kgsl:s0 tclass=dir permissive=0
2024-03-12 16:44:25.529 30968-31003/com.shd.ijkplayerdemo W/Gralloc3: mapper 3.x is not supported
2024-03-12 16:44:25.537 30968-30968/com.shd.ijkplayerdemo I/System.out: 获取权限成功
2024-03-12 16:44:25.574 30968-30968/com.shd.ijkplayerdemo I/JNI: registerPlugin Load codec: H264
2024-03-12 16:44:25.574 30968-30968/com.shd.ijkplayerdemo I/JNI: registerPlugin Load codec: H265
2024-03-12 16:44:25.574 30968-30968/com.shd.ijkplayerdemo I/JNI: registerPlugin Load codec: JPEG
2024-03-12 16:44:25.574 30968-30968/com.shd.ijkplayerdemo I/JNI: registerPlugin Load codec: mpeg4-generic
2024-03-12 16:44:25.574 30968-30968/com.shd.ijkplayerdemo I/JNI: registerPlugin Load codec: opus
2024-03-12 16:44:25.574 30968-30968/com.shd.ijkplayerdemo I/JNI: registerPlugin Load codec: PCMA
2024-03-12 16:44:25.574 30968-30968/com.shd.ijkplayerdemo I/JNI: registerPlugin Load codec: PCMU
2024-03-12 16:44:25.574 30968-30968/com.shd.ijkplayerdemo I/JNI: registerPlugin Load codec: L16
2024-03-12 16:44:25.589 30968-31013/com.shd.ijkplayerdemo I/JNI: JNI_OnLoad 
2024-03-12 16:44:25.589 30968-31013/com.shd.ijkplayerdemo D/JNI: Java_com_zlmediakit_jni_ZLMediaKit_startDemo sd_path:/storage/emulated/0
2024-03-12 16:44:25.589 30968-31013/com.shd.ijkplayerdemo D/JNI: Java_com_zlmediakit_jni_ZLMediaKit_startDemo ini file:/storage/emulated/0/zlmediakit.ini
2024-03-12 16:44:25.590 30968-31013/com.shd.ijkplayerdemo I/JNI: systemSetup core文件大小设置为:18446744073709551615
2024-03-12 16:44:25.590 30968-31013/com.shd.ijkplayerdemo I/JNI: systemSetup 文件最大描述符个数设置为:32768
2024-03-12 16:44:25.590 30968-31015/com.shd.ijkplayerdemo I/JNI: start_main ZLMediaKit(git hash:87cb488/2024-02-19T11:54:13+08:00,branch:master,build time:2024-03-12T09:48:20)
2024-03-12 16:44:25.602 30968-31015/com.shd.ijkplayerdemo W/JNI: loadPublicKey BIO_new_file failed: error:02001002:system library:fopen:No such file or directory
2024-03-12 16:44:25.602 30968-31015/com.shd.ijkplayerdemo W/JNI: loadPrivateKey BIO_new_file failed: error:2006D080:BIO routines:BIO_new_file:no such file
2024-03-12 16:44:25.602 30968-31015/com.shd.ijkplayerdemo W/JNI: makeSSLContext SSL_CTX_check_private_key failed: error:02001002:system library:fopen:No such file or directory
2024-03-12 16:44:25.602 30968-31015/com.shd.ijkplayerdemo D/JNI: operator() Stamp thread started
2024-03-12 16:44:25.604 30968-31015/com.shd.ijkplayerdemo I/JNI: EventPollerPool EventPoller created size: 8
2024-03-12 16:44:25.606 30968-31015/com.shd.ijkplayerdemo I/JNI: start_main 已启动http api 接口
2024-03-12 16:44:25.606 30968-31015/com.shd.ijkplayerdemo I/JNI: start_main 已启动http hook 接口
2024-03-12 16:44:25.607 30968-31015/com.shd.ijkplayerdemo I/JNI: start_l TCP server listening on [::]: 8554
2024-03-12 16:44:25.608 30968-31015/com.shd.ijkplayerdemo I/JNI: start_l TCP server listening on [::]: 8332
2024-03-12 16:44:25.609 30968-31015/com.shd.ijkplayerdemo I/JNI: start_l TCP server listening on [::]: 1935
2024-03-12 16:44:25.610 30968-31015/com.shd.ijkplayerdemo I/JNI: start_l TCP server listening on [::]: 19350
2024-03-12 16:44:25.611 30968-31015/com.shd.ijkplayerdemo I/JNI: start_l TCP server listening on [::]: 8080
2024-03-12 16:44:25.611 30968-31015/com.shd.ijkplayerdemo I/JNI: start_l TCP server listening on [::]: 8443
2024-03-12 16:44:25.612 30968-31015/com.shd.ijkplayerdemo I/JNI: start_l TCP server listening on [::]: 9000
2024-03-12 16:44:25.614 30968-31015/com.shd.ijkplayerdemo I/JNI: start_l TCP server listening on [::]: 10000
2024-03-12 16:44:25.615 30968-31015/com.shd.ijkplayerdemo I/JNI: start_l UDP server bind to [::]: 10000
2024-03-12 16:44:25.616 30968-31015/com.shd.ijkplayerdemo I/JNI: start_l UDP server bind to [::]: 9000
2024-03-12 16:44:36.806 30968-30968/com.shd.ijkplayerdemo W/d.ijkplayerdem: Accessing hidden method Landroid/os/ServiceManager;->getService(Ljava/lang/String;)Landroid/os/IBinder; (greylist, reflection, allowed)
2024-03-12 16:44:36.806 30968-30968/com.shd.ijkplayerdemo W/d.ijkplayerdem: Accessing hidden method Landroid/hardware/display/IDisplayManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/hardware/display/IDisplayManager; (greylist, reflection, allowed)
2024-03-12 16:44:36.806 30968-30968/com.shd.ijkplayerdemo W/d.ijkplayerdem: Accessing hidden method Landroid/hardware/display/IDisplayManager$Stub$Proxy;->getDisplayInfo(I)Landroid/view/DisplayInfo; (greylist-max-o, reflection, denied)
2024-03-12 16:44:36.806 30968-30968/com.shd.ijkplayerdemo W/d.ijkplayerdem: Accessing hidden method Landroid/hardware/display/IDisplayManager;->getDisplayInfo(I)Landroid/view/DisplayInfo; (greylist, reflection, allowed)
2024-03-12 16:44:36.807 30968-30968/com.shd.ijkplayerdemo W/d.ijkplayerdem: Accessing hidden field Landroid/view/DisplayInfo;->logicalWidth:I (greylist, reflection, allowed)
2024-03-12 16:44:36.807 30968-30968/com.shd.ijkplayerdemo W/d.ijkplayerdem: Accessing hidden field Landroid/view/DisplayInfo;->logicalHeight:I (greylist, reflection, allowed)
2024-03-12 16:44:36.807 30968-30968/com.shd.ijkplayerdemo W/d.ijkplayerdem: Accessing hidden field Landroid/view/DisplayInfo;->rotation:I (greylist, reflection, allowed)
2024-03-12 16:44:36.807 30968-30968/com.shd.ijkplayerdemo W/d.ijkplayerdem: Accessing hidden method Landroid/view/IRotationWatcher$Stub;-><init>()V (greylist, linking, allowed)
2024-03-12 16:44:36.807 30968-30968/com.shd.ijkplayerdemo W/d.ijkplayerdem: Accessing hidden method Landroid/view/IWindowManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/view/IWindowManager; (greylist, reflection, allowed)
2024-03-12 16:44:36.808 30968-30968/com.shd.ijkplayerdemo W/d.ijkplayerdem: Accessing hidden method Landroid/view/IWindowManager$Stub$Proxy;->watchRotation(Landroid/view/IRotationWatcher;I)I (greylist, reflection, allowed)
2024-03-12 16:44:38.220 30968-30968/com.shd.ijkplayerdemo I/ACodec: mIsVivoLogEnable = 0
2024-03-12 16:44:38.222 30968-31072/com.shd.ijkplayerdemo I/OMXClient: IOmx service obtained
2024-03-12 16:44:38.233 30968-31071/com.shd.ijkplayerdemo I/MediaCodec: MediaCodec will operate in async mode
2024-03-12 16:44:38.234 30968-31072/com.shd.ijkplayerdemo I/ACodec: [OMX.qcom.video.encoder.avc]configureCodec AMessage(what = 'conf', target = 1) = {
      int32_t complexity = 2
      int32_t color-format = 2130708361
      int32_t i-frame-interval = 2
      string mime = "Video/AVC"
      int32_t width = 1080
      int32_t bitrate-mode = 1
      int32_t bitrate = 1000000
      int32_t frame-rate = 60
      int32_t height = 1920
      int64_t repeat-previous-frame-after = 100000
      int32_t encoder = 1
    }
2024-03-12 16:44:38.234 30968-31072/com.shd.ijkplayerdemo I/ExtendedACodec: setupVideoEncoder()
2024-03-12 16:44:38.234 30968-31072/com.shd.ijkplayerdemo W/OMXUtils: do not know color format 0x7fa30c06 = 2141391878
2024-03-12 16:44:38.234 30968-31072/com.shd.ijkplayerdemo W/OMXUtils: do not know color format 0x7fa30c04 = 2141391876
2024-03-12 16:44:38.235 30968-31072/com.shd.ijkplayerdemo W/OMXUtils: do not know color format 0x7fa30c00 = 2141391872
2024-03-12 16:44:38.235 30968-31072/com.shd.ijkplayerdemo W/OMXUtils: do not know color format 0x7fa30c09 = 2141391881
2024-03-12 16:44:38.235 30968-31072/com.shd.ijkplayerdemo W/OMXUtils: do not know color format 0x7fa30c0a = 2141391882
2024-03-12 16:44:38.235 30968-31072/com.shd.ijkplayerdemo W/OMXUtils: do not know color format 0x7fa30c08 = 2141391880
2024-03-12 16:44:38.236 30968-31072/com.shd.ijkplayerdemo W/OMXUtils: do not know color format 0x7fa30c07 = 2141391879
2024-03-12 16:44:38.236 30968-31072/com.shd.ijkplayerdemo W/OMXUtils: do not know color format 0x7f000789 = 2130708361
2024-03-12 16:44:38.238 30968-31072/com.shd.ijkplayerdemo I/ACodec: setupAVCEncoderParameters with [profile: High] [level: Level1]
2024-03-12 16:44:38.239 30968-31072/com.shd.ijkplayerdemo I/ACodec: [OMX.qcom.video.encoder.avc] cannot encode HDR static metadata. Ignoring.
2024-03-12 16:44:38.239 30968-31072/com.shd.ijkplayerdemo I/ACodec: setupVideoEncoder succeeded
2024-03-12 16:44:38.239 30968-31072/com.shd.ijkplayerdemo I/ExtendedACodec: [OMX.qcom.video.encoder.avc] configure, AMessage : AMessage(what = 'conf', target = 1) = {
      int32_t complexity = 2
      int32_t color-format = 2130708361
      int32_t i-frame-interval = 2
      string mime = "Video/AVC"
      int32_t width = 1080
      int32_t bitrate-mode = 1
      int32_t bitrate = 1000000
      int32_t frame-rate = 60
      int32_t height = 1920
      int64_t repeat-previous-frame-after = 100000
      int32_t encoder = 1
    }
2024-03-12 16:44:38.239 30968-31072/com.shd.ijkplayerdemo W/OMXUtils: do not know color format 0x7f000789 = 2130708361
2024-03-12 16:44:38.276 30968-30968/com.shd.ijkplayerdemo D/AudioCapture: startRecording
2024-03-12 16:44:38.277 30968-30968/com.shd.ijkplayerdemo D/AudioCapture: initRecording(sampleRate=16000, channels=2)
2024-03-12 16:44:38.277 30968-30968/com.shd.ijkplayerdemo D/AudioCapture: byteBuffer.capacity: 640
2024-03-12 16:44:38.279 30968-30968/com.shd.ijkplayerdemo D/AudioCapture: AudioRecord.getMinBufferSize: 2560
2024-03-12 16:44:38.279 30968-30968/com.shd.ijkplayerdemo D/AudioCapture: bufferSizeInBytes: 5120
2024-03-12 16:44:38.294 30968-30968/com.shd.ijkplayerdemo V/AudioPolicy: Null context, checking permission via ActivityManager
2024-03-12 16:44:38.298 30968-30968/com.shd.ijkplayerdemo V/android.media.AudioRecord: Will record from REMOTE_SUBMIX at full fixed volume
2024-03-12 16:44:38.298 30968-30968/com.shd.ijkplayerdemo I/AudioRecord: set(): inputSource 8, sampleRate 16000, format 0x1, channelMask 0xc, frameCount 640, notificationFrames 0, sessionId 0, transferType 0, flags 0, opPackageName com.shd.ijkplayerdemo uid -1, pid -1
2024-03-12 16:44:38.301 30968-30968/com.shd.ijkplayerdemo E/IAudioFlinger: createRecord returned error -1
2024-03-12 16:44:38.301 30968-30968/com.shd.ijkplayerdemo E/AudioRecord: createRecord_l(398): AudioFlinger could not create record track, status: -1
2024-03-12 16:44:38.301 30968-30968/com.shd.ijkplayerdemo E/AudioRecord-JNI: Error creating AudioRecord instance: initialization check failed with status -1.
2024-03-12 16:44:38.303 30968-30968/com.shd.ijkplayerdemo E/android.media.AudioRecord: Error code -20 when initializing native AudioRecord object.
2024-03-12 16:44:38.303 30968-30968/com.shd.ijkplayerdemo E/AudioCapture: Init recording error: Failed to create a new AudioRecord instance
2024-03-12 16:44:38.303 30968-30968/com.shd.ijkplayerdemo D/AudioCapture: releaseAudioResources
2024-03-12 16:44:38.342 30968-31072/com.shd.ijkplayerdemo D/ACodec: dataspace changed to 0x10c10000 (R:2(Limited), P:3(BT601_6_625), M:3(BT601_6), T:3(SMPTE170M)) (R:2(Limited), S:2(BT601_625), T:3(SMPTE_170M))
2024-03-12 16:44:38.380 30968-31015/com.shd.ijkplayerdemo D/JNI: Java_com_zlmediakit_jni_ZLMediaKit_createMedia mk_media_init_video result:1
2024-03-12 16:44:39.388 30968-31015/com.shd.ijkplayerdemo D/JNI: Java_com_zlmediakit_jni_ZLMediaKit_pushVideoStream mk_media_input_frame result:1
2024-03-12 16:44:39.962 30968-31015/com.shd.ijkplayerdemo D/JNI: Java_com_zlmediakit_jni_ZLMediaKit_pushVideoStream mk_media_input_frame result:1
2024-03-12 16:44:40.883 30968-31015/com.shd.ijkplayerdemo D/JNI: Java_com_zlmediakit_jni_ZLMediaKit_pushVideoStream mk_media_input_frame result:1
2024-03-12 16:44:41.407 30968-31015/com.shd.ijkplayerdemo D/JNI: Java_com_zlmediakit_jni_ZLMediaKit_pushVideoStream mk_media_input_frame result:1
2024-03-12 16:44:41.910 30968-31015/com.shd.ijkplayerdemo D/JNI: Java_com_zlmediakit_jni_ZLMediaKit_pushVideoStream mk_media_input_frame result:1
2024-03-12 16:44:42.484 30968-31015/com.shd.ijkplayerdemo D/JNI: Java_com_zlmediakit_jni_ZLMediaKit_pushVideoStream mk_media_input_frame result:1
2024-03-12 16:44:42.989 30968-31015/com.shd.ijkplayerdemo D/JNI: Java_com_zlmediakit_jni_ZLMediaKit_pushVideoStream mk_media_input_frame result:1
2024-03-12 16:44:44.958 30968-31015/com.shd.ijkplayerdemo D/JNI: Java_com_zlmediakit_jni_ZLMediaKit_pushVideoStream mk_media_input_frame result:1
2024-03-12 16:44:45.562 30968-31015/com.shd.ijkplayerdemo D/JNI: Java_com_zlmediakit_jni_ZLMediaKit_pushVideoStream mk_media_input_frame result:1
2024-03-12 16:44:46.062 30968-31015/com.shd.ijkplayerdemo D/JNI: Java_com_zlmediakit_jni_ZLMediaKit_pushVideoStream mk_media_input_frame result:1
2024-03-12 16:44:46.356 30968-31015/com.shd.ijkplayerdemo D/JNI: Java_com_zlmediakit_jni_ZLMediaKit_pushVideoStream mk_media_input_frame result:1
2024-03-12 16:44:46.356 30968-31015/com.shd.ijkplayerdemo W/JNI: operator() Cached frame of unready track(H264) is too much, now cleared
2024-03-12 16:44:46.370 30968-31015/com.shd.ijkplayerdemo D/JNI: Java_com_zlmediakit_jni_ZLMediaKit_pushVideoStream mk_media_input_frame result:1
2024-03-12 16:44:46.915 30968-31015/com.shd.ijkplayerdemo D/JNI: Java_com_zlmediakit_jni_ZLMediaKit_pushVideoStream mk_media_input_frame result:1
2024-03-12 16:44:47.423 30968-31015/com.shd.ijkplayerdemo D/JNI: Java_com_zlmediakit_jni_ZLMediaKit_pushVideoStream mk_media_input_frame result:1
2024-03-12 16:44:47.929 30968-31015/com.shd.ijkplayerdemo D/JNI: Java_com_zlmediakit_jni_ZLMediaKit_pushVideoStream mk_media_input_frame result:1
2024-03-12 16:44:48.447 30968-31015/com.shd.ijkplayerdemo D/JNI: Java_com_zlmediakit_jni_ZLMediaKit_pushVideoStream mk_media_input_frame result:1
2024-03-12 16:44:48.447 30968-31015/com.shd.ijkplayerdemo D/JNI: emitAllTrackReady All track ready use 10066ms
2024-03-12 16:44:48.449 30968-31015/com.shd.ijkplayerdemo W/JNI: emitAllTrackReady Track not ready for a long time, ignored: H264
2024-03-12 16:44:48.498 30968-31015/com.shd.ijkplayerdemo D/JNI: Java_com_zlmediakit_jni_ZLMediaKit_pushVideoStream mk_media_input_frame result:1
2024-03-12 16:44:49.033 30968-31015/com.shd.ijkplayerdemo D/JNI: Java_com_zlmediakit_jni_ZLMediaKit_pushVideoStream mk_media_input_frame result:1
2024-03-12 16:44:49.545 30968-31015/com.shd.ijkplayerdemo D/JNI: Java_com_zlmediakit_jni_ZLMediaKit_pushVideoStream mk_media_input_frame result:1
2024-03-12 16:44:50.942 30968-31015/com.shd.ijkplayerdemo D/JNI: Java_com_zlmediakit_jni_ZLMediaKit_pushVideoStream mk_media_input_frame result:1
2024-03-12 16:44:51.480 30968-31015/com.shd.ijkplayerdemo D/JNI: Java_com_zlmediakit_jni_ZLMediaKit_pushVideoStream mk_media_input_frame result:1
2024-03-12 16:44:52.034 30968-31015/com.shd.ijkplayerdemo D/JNI: Java_com_zlmediakit_jni_ZLMediaKit_pushVideoStream mk_media_input_frame result:1
2024-03-12 16:44:52.536 30968-31015/com.shd.ijkplayerdemo D/JNI: Java_com_zlmediakit_jni_ZLMediaKit_pushVideoStream mk_media_input_frame result:1
2024-03-12 16:44:53.919 30968-31015/com.shd.ijkplayerdemo D/JNI: Java_com_zlmediakit_jni_ZLMediaKit_pushVideoStream mk_media_input_frame result:1
2024-03-12 16:44:54.430 30968-31015/com.shd.ijkplayerdemo D/JNI: Java_com_zlmediakit_jni_ZLMediaKit_pushVideoStream mk_media_input_frame result:1
2024-03-12 16:44:54.940 30968-31015/com.shd.ijkplayerdemo D/JNI: Java_com_zlmediakit_jni_ZLMediaKit_pushVideoStream mk_media_input_frame result:1
2024-03-12 16:44:55.516 30968-31015/com.shd.ijkplayerdemo D/JNI: Java_com_zlmediakit_jni_ZLMediaKit_pushVideoStream mk_media_input_frame result:1
2024-03-12 16:44:56.018 30968-31015/com.shd.ijkplayerdemo D/JNI: Java_com_zlmediakit_jni_ZLMediaKit_pushVideoStream mk_media_input_frame result:1
2024-03-12 16:44:56.910 30968-31015/com.shd.ijkplayerdemo D/JNI: Java_com_zlmediakit_jni_ZLMediaKit_pushVideoStream mk_media_input_frame result:1
2024-03-12 16:44:57.416 30968-31015/com.shd.ijkplayerdemo D/JNI: Java_com_zlmediakit_jni_ZLMediaKit_pushVideoStream mk_media_input_frame result:1
2024-03-12 16:44:57.939 30968-31015/com.shd.ijkplayerdemo D/JNI: Java_com_zlmediakit_jni_ZLMediaKit_pushVideoStream mk_media_input_frame result:1
2024-03-12 16:44:59.953 30968-31015/com.shd.ijkplayerdemo D/JNI: Java_com_zlmediakit_jni_ZLMediaKit_pushVideoStream mk_media_input_frame result:1
2024-03-12 16:45:00.465 30968-31015/com.shd.ijkplayerdemo D/JNI: Java_com_zlmediakit_jni_ZLMediaKit_pushVideoStream mk_media_input_frame result:1
2024-03-12 16:45:00.973 30968-31015/com.shd.ijkplayerdemo D/JNI: Java_com_zlmediakit_jni_ZLMediaKit_pushVideoStream mk_media_input_frame result:1
2024-03-12 16:45:02.957 30968-31015/com.shd.ijkplayerdemo D/JNI: Java_com_zlmediakit_jni_ZLMediaKit_pushVideoStream mk_media_input_frame result:1
2024-03-12 16:45:03.493 30968-31015/com.shd.ijkplayerdemo D/JNI: Java_com_zlmediakit_jni_ZLMediaKit_pushVideoStream mk_media_input_frame result:1
2024-03-12 16:45:04.000 30968-31015/com.shd.ijkplayerdemo D/JNI: Java_com_zlmediakit_jni_ZLMediaKit_pushVideoStream mk_media_input_frame result:1
2024-03-12 16:45:04.876 30968-31015/com.shd.ijkplayerdemo D/JNI: Java_com_zlmediakit_jni_ZLMediaKit_pushVideoStream mk_media_input_frame result:1
2024-03-12 16:45:05.402 30968-31015/com.shd.ijkplayerdemo D/JNI: Java_com_zlmediakit_jni_ZLMediaKit_pushVideoStream mk_media_input_frame result:1
2024-03-12 16:45:05.951 30968-31015/com.shd.ijkplayerdemo D/JNI: Java_com_zlmediakit_jni_ZLMediaKit_pushVideoStream mk_media_input_frame result:1
2024-03-12 16:45:06.483 30968-31015/com.shd.ijkplayerdemo D/JNI: Java_com_zlmediakit_jni_ZLMediaKit_pushVideoStream mk_media_input_frame result:1
2024-03-12 16:45:06.998 30968-31015/com.shd.ijkplayerdemo D/JNI: Java_com_zlmediakit_jni_ZLMediaKit_pushVideoStream mk_media_input_frame result:1
2024-03-12 16:45:08.933 30968-31015/com.shd.ijkplayerdemo D/JNI: Java_com_zlmediakit_jni_ZLMediaKit_pushVideoStream mk_media_input_frame result:1
2024-03-12 16:45:09.468 30968-31015/com.shd.ijkplayerdemo D/JNI: Java_com_zlmediakit_jni_ZLMediaKit_pushVideoStream mk_media_input_frame result:1
2024-03-12 16:45:09.970 30968-31015/com.shd.ijkplayerdemo D/JNI: Java_com_zlmediakit_jni_ZLMediaKit_pushVideoStream mk_media_input_frame result:1
2024-03-12 16:45:10.507 30968-31015/com.shd.ijkplayerdemo D/JNI: Java_com_zlmediakit_jni_ZLMediaKit_pushVideoStream mk_media_input_frame result:1
2024-03-12 16:45:11.012 30968-31015/com.shd.ijkplayerdemo D/JNI: Java_com_zlmediakit_jni_ZLMediaKit_pushVideoStream mk_media_input_frame result:1
2024-03-12 16:45:11.563 30968-31015/com.shd.ijkplayerdemo D/JNI: Java_com_zlmediakit_jni_ZLMediaKit_pushVideoStream mk_media_input_frame result:1
2024-03-12 16:45:12.068 30968-31015/com.shd.ijkplayerdemo D/JNI: Java_com_zlmediakit_jni_ZLMediaKit_pushVideoStream mk_media_input_frame result:1
2024-03-12 16:45:12.631 30968-31015/com.shd.ijkplayerdemo D/JNI: Java_com_zlmediakit_jni_ZLMediaKit_pushVideoStream mk_media_input_frame result:1
2024-03-12 16:45:13.137 30968-31015/com.shd.ijkplayerdemo D/JNI: Java_com_zlmediakit_jni_ZLMediaKit_pushVideoStream mk_media_input_frame result:1
2024-03-12 16:45:14.421 30968-31015/com.shd.ijkplayerdemo D/JNI: Java_com_zlmediakit_jni_ZLMediaKit_pushVideoStream mk_media_input_frame result:1
2024-03-12 16:45:14.936 30968-31015/com.shd.ijkplayerdemo D/JNI: Java_com_zlmediakit_jni_ZLMediaKit_pushVideoStream mk_media_input_frame result:1
2024-03-12 16:45:15.485 30968-31015/com.shd.ijkplayerdemo D/JNI: Java_com_zlmediakit_jni_ZLMediaKit_pushVideoStream mk_media_input_frame result:1
2024-03-12 16:45:17.542 30968-31015/com.shd.ijkplayerdemo D/JNI: Java_com_zlmediakit_jni_ZLMediaKit_pushVideoStream mk_media_input_frame result:1
2024-03-12 16:45:18.056 30968-31015/com.shd.ijkplayerdemo D/JNI: Java_com_zlmediakit_jni_ZLMediaKit_pushVideoStream mk_media_input_frame result:1
2024-03-12 16:45:18.652 30968-31015/com.shd.ijkplayerdemo D/JNI: Java_com_zlmediakit_jni_ZLMediaKit_pushVideoStream mk_media_input_frame result:1
2024-03-12 16:45:20.232 30968-31015/com.shd.ijkplayerdemo D/JNI: Java_com_zlmediakit_jni_ZLMediaKit_pushVideoStream mk_media_input_frame result:1
2024-03-12 16:45:20.741 30968-31015/com.shd.ijkplayerdemo D/JNI: Java_com_zlmediakit_jni_ZLMediaKit_pushVideoStream mk_media_input_frame result:1
2024-03-12 16:45:21.253 30968-31015/com.shd.ijkplayerdemo D/JNI: Java_com_zlmediakit_jni_ZLMediaKit_pushVideoStream mk_media_input_frame result:1
2024-03-12 16:45:21.757 30968-31015/com.shd.ijkplayerdemo D/JNI: Java_com_zlmediakit_jni_ZLMediaKit_pushVideoStream mk_media_input_frame result:1
2024-03-12 16:45:22.870 30968-31015/com.shd.ijkplayerdemo D/JNI: Java_com_zlmediakit_jni_ZLMediaKit_pushVideoStream mk_media_input_frame result:1
2024-03-12 16:45:23.382 30968-31015/com.shd.ijkplayerdemo D/JNI: Java_com_zlmediakit_jni_ZLMediaKit_pushVideoStream mk_media_input_frame result:1
2024-03-12 16:45:23.893 30968-31015/com.shd.ijkplayerdemo D/JNI: Java_com_zlmediakit_jni_ZLMediaKit_pushVideoStream mk_media_input_frame result:1
2024-03-12 16:45:24.452 30968-31015/com.shd.ijkplayerdemo D/JNI: Java_com_zlmediakit_jni_ZLMediaKit_pushVideoStream mk_media_input_frame result:1
2024-03-12 16:45:24.957 30968-31015/com.shd.ijkplayerdemo D/JNI: Java_com_zlmediakit_jni_ZLMediaKit_pushVideoStream mk_media_input_frame result:1
2024-03-12 16:45:25.947 30968-31015/com.shd.ijkplayerdemo D/JNI: Java_com_zlmediakit_jni_ZLMediaKit_pushVideoStream mk_media_input_frame result:1
2024-03-12 16:45:26.448 30968-31015/com.shd.ijkplayerdemo D/JNI: Java_com_zlmediakit_jni_ZLMediaKit_pushVideoStream mk_media_input_frame result:1
2024-03-12 16:45:26.957 30968-31015/com.shd.ijkplayerdemo D/JNI: Java_com_zlmediakit_jni_ZLMediaKit_pushVideoStream mk_media_input_frame result:1
2024-03-12 16:45:27.469 30968-31015/com.shd.ijkplayerdemo D/JNI: Java_com_zlmediakit_jni_ZLMediaKit_pushVideoStream mk_media_input_frame result:1
2024-03-12 16:45:27.973 30968-31015/com.shd.ijkplayerdemo D/JNI: Java_com_zlmediakit_jni_ZLMediaKit_pushVideoStream mk_media_input_frame result:1
2024-03-12 16:45:28.895 30968-31015/com.shd.ijkplayerdemo D/JNI: Java_com_zlmediakit_jni_ZLMediaKit_pushVideoStream mk_media_input_frame result:1
2024-03-12 16:45:29.431 30968-31015/com.shd.ijkplayerdemo D/JNI: Java_com_zlmediakit_jni_ZLMediaKit_pushVideoStream mk_media_input_frame result:1
2024-03-12 16:45:29.947 30968-31015/com.shd.ijkplayerdemo D/JNI: Java_com_zlmediakit_jni_ZLMediaKit_pushVideoStream mk_media_input_frame result:1
2024-03-12 16:45:30.482 30968-31015/com.shd.ijkplayerdemo D/JNI: Java_com_zlmediakit_jni_ZLMediaKit_pushVideoStream mk_media_input_frame result:1
2024-03-12 16:45:30.996 30968-31015/com.shd.ijkplayerdemo D/JNI: Java_com_zlmediakit_jni_ZLMediaKit_pushVideoStream mk_media_input_frame result:1
2024-03-12 16:45:32.042 30968-31015/com.shd.ijkplayerdemo D/JNI: Java_com_zlmediakit_jni_ZLMediaKit_pushVideoStream mk_media_input_frame result:1
2024-03-12 16:45:32.551 30968-31015/com.shd.ijkplayerdemo D/JNI: Java_com_zlmediakit_jni_ZLMediaKit_pushVideoStream mk_media_input_frame result:1
2024-03-12 16:45:33.150 30968-31015/com.shd.ijkplayerdemo D/JNI: Java_com_zlmediakit_jni_ZLMediaKit_pushVideoStream mk_media_input_frame result:1
2024-03-12 16:45:33.658 30968-31015/com.shd.ijkplayerdemo D/JNI: Java_com_zlmediakit_jni_ZLMediaKit_pushVideoStream mk_media_input_frame result:1
2024-03-12 16:45:35.960 30968-31015/com.shd.ijkplayerdemo D/JNI: Java_com_zlmediakit_jni_ZLMediaKit_pushVideoStream mk_media_input_frame result:1
2024-03-12 16:45:36.516 30968-31015/com.shd.ijkplayerdemo D/JNI: Java_com_zlmediakit_jni_ZLMediaKit_pushVideoStream mk_media_input_frame result:1
2024-03-12 16:45:37.121 30968-31015/com.shd.ijkplayerdemo D/JNI: Java_com_zlmediakit_jni_ZLMediaKit_pushVideoStream mk_media_input_frame result:1
2024-03-12 16:45:38.773 30968-31015/com.shd.ijkplayerdemo D/JNI: Java_com_zlmediakit_jni_ZLMediaKit_pushVideoStream mk_media_input_frame result:1
2024-03-12 16:45:39.362 30968-31015/com.shd.ijkplayerdemo D/JNI: Java_com_zlmediakit_jni_ZLMediaKit_pushVideoStream mk_media_input_frame result:1
2024-03-12 16:45:39.956 30968-31015/com.shd.ijkplayerdemo D/JNI: Java_com_zlmediakit_jni_ZLMediaKit_pushVideoStream mk_media_input_frame result:1

下面是主要的代码片段

static public native long createMedia(String app, String stream, int width, int height, float fps, int bitRate);

static public native int pushVideoStream(long mediaPtr, byte[] frame, int length,  long dts, long pts);
JNI_API(jlong, createMedia, jstring app, jstring stream, jint width, jint height, jfloat fps, jint bit_rate) {

    const char* c_app = env->GetStringUTFChars(app, nullptr);
    const char* c_stream = env->GetStringUTFChars(stream, nullptr);

    // 调用ZLMediaKit 方法
    mk_media media = mk_media_create(
            "__defaultVhost__",c_app,c_stream,
            0,
            0,
            0
            );

    int result = mk_media_init_video(media, MKCodecH264, width, height, fps, bit_rate);
    DebugL << "mk_media_init_video result:" << result;
    sleep(1);
    mk_media_init_complete(media);

    env->ReleaseStringUTFChars( app,  c_app);
    env->ReleaseStringUTFChars(stream, c_stream);

    // 将指针返回给Java层
    return reinterpret_cast<jlong>(media);
}


JNI_API(jint, pushVideoStream, jlong mediaPtr, jbyteArray frameData, jint len,  jlong dts, jlong pts) {

    auto media = reinterpret_cast<mk_media>(mediaPtr);

    jbyte* frame_data = env->GetByteArrayElements(frameData, nullptr);
    mk_frame frame = mk_frame_create(MKCodecH264, dts, pts,
                                     reinterpret_cast<const char *>(frame_data),
                                     len,NULL, NULL);

    int result = mk_media_input_frame(media, frame);
    mk_frame_unref(frame);

    DebugL << "mk_media_input_frame result:" << result;
    //释放引用
    env->ReleaseByteArrayElements(frameData, frame_data, 0);
    return result;
}

下面是Android调用代码

import android.Manifest
import android.os.Bundle
import android.os.Environment
import android.widget.Button
import androidx.appcompat.app.AppCompatActivity
import com.zlmediakit.jni.ZLMediaKit
import org.loka.screensharekit.EncodeBuilder
import org.loka.screensharekit.ScreenShareKit

class MainActivity : AppCompatActivity() {

    private val permissionArray = arrayOf(
        Manifest.permission.READ_EXTERNAL_STORAGE,
        Manifest.permission.WRITE_EXTERNAL_STORAGE
    )

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main6)
        checkPermission()
        findViewById<Button>(R.id.startBtn).setOnClickListener {
            testPush()
        }
    }


    private fun checkPermission() {
        val requestMissionArray = mutableListOf<String>()
        permissionArray.forEach { permission ->
            requestMissionArray.add(permission)
        }
        startRequestPermissions(permissions = requestMissionArray.toTypedArray()) { it ->
            if (it.filter { !it.value }.isEmpty()) {
                println("获取权限成功")

                val sd_dir = Environment.getExternalStoragePublicDirectory("").toString()
                ZLMediaKit.startDemo(sd_dir)
            }
        }
    }

    private var isCreateServer = false
    private var _ptr: Long = 0

    private fun testPush() {
        ScreenShareKit.init(this)
            .config(screenDataType = EncodeBuilder.SCREEN_DATA_TYPE.H264)
            .onH264 { buffer, isKeyFrame, width, height, ts ->
                if (!isCreateServer) {
                    isCreateServer = true;
                    _ptr = ZLMediaKit.createMedia("live", "test", width, height, 30f, 1000000)
                } else {
                    val pts = System.currentTimeMillis();
                    if (_ptr != 0L) {
                        val bytes = ByteArray(buffer.remaining()).apply {
                            buffer.get(this)
                        }
                        val result = ZLMediaKit.pushVideoStream(_ptr, bytes, buffer.remaining(), pts, pts)
                        println("录屏推流: $result")
                    }
                }
            }.onStart {
                //用户同意采集,开始采集数据
            }.start()
    }
}
@sheng930920
Copy link
Author

打印log日志显示,调用mk_media_input_frame返回的结果一直都是1, 使用postman去查询,没有查到任务相应的视频流列表数据

image

@xiangshengjye
Copy link
Contributor

看打印的日志,你的264的流貌似有问题

@xiongguangjie
Copy link
Member

h264 frame 没有sps pps /I帧 导致zlm忽略了

@xia-chu
Copy link
Member

xia-chu commented Mar 18, 2024

2024-03-12 16:44:48.449 30968-31015/com.shd.ijkplayerdemo W/JNI: emitAllTrackReady Track not ready for a long time, ignored: H264

@xia-chu xia-chu closed this as completed Mar 22, 2024
@sheng930920
Copy link
Author

咨询一下,这是api调用出错么, 还是说h264 frame 没有sps pps /I帧导致的问题

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants