在 iOS 13 中使用 NDI SDK 4.5 的视频广播不起作用。LAN 中的接收器未收到任何视频数据包

Bha*_*wal 7 ios13 xcode11

我一直在尝试在 Objective-C iOS-13 应用程序中使用 NDI SDK 4.5 从 iPhone 设备广播相机捕获。

我的示例代码在公共 Github 存储库中:https : //github.com/bharatbiswal/CameraExampleObjectiveC

以下是我发送CMSampleBufferRefsampleBuffer 的方式:

CVPixelBufferRef pixelBuffer = CMSampleBufferGetImageBuffer(sampleBuffer);

NDIlib_video_frame_v2_t video_frame;
video_frame.xres = VIDEO_CAPTURE_WIDTH;
video_frame.yres = VIDEO_CAPTURE_HEIGHT;
video_frame.FourCC = NDIlib_FourCC_type_UYVY; // kCVPixelFormatType_420YpCbCr8BiPlanarFullRange
video_frame.line_stride_in_bytes = VIDEO_CAPTURE_WIDTH * VIDEO_CAPTURE_PIXEL_SIZE;
video_frame.p_data = CVPixelBufferGetBaseAddress(pixelBuffer);
NDIlib_send_send_video_v2(self.my_ndi_send, &video_frame);
Run Code Online (Sandbox Code Playgroud)

我一直在使用“ NewTek NDI Video Monitor ”从网络接收视频。但是,即使它显示为源,视频也不会播放。

有没有人在 iOS 中使用 NDI SDK 来构建广播发送器或接收器功能?请帮忙。

小智 5

您应该kCVPixelFormatType_32BGRA在视频设置中使用。并NDIlib_FourCC_type_BGRA作为 NDIlib_video_frame_v2_t 中的 FourCC。


xav*_*ard 4

你确定你的吗VIDEO_CAPTURE_PIXEL_SIZE

当我在 Macos 上使用 NDI 时,我遇到了同样的黑屏问题,这是由于行距错误造成的。

也许这可以帮助:https://developer.apple.com/documentation/corevideo/1456964-cvpixelbuffergetbytesperrow ?language=objc ?

此外,核心视频和 NDI 的像素格式似乎不匹配。

在核心视频端,您使用Bi-Planar Y'CbCr 8 位 4:2:0,在 NDI 端,您使用NDIlib_FourCC_type_UYVYY'CbCr 4:2:2。

我在 NDI 端找不到任何Bi-Planar Y'CbCr 8 位 4:2:0 像素格式。

使用以下组合您可能会更幸运:

希望这可以帮助!