首页 > 应用开发 > IT综合 > 怎样实现直播电商源码的自定义视频数据采集推流
目前移动直播SDK只回调摄像机预览画面的纹理数据。如果直播电商源码集成第三方美颜库来实现美颜、滤镜等功能,但第三方库的美颜功能输入数据要求是camera的原始数据(YUV 数据)。直播电商源码想实现该功能,需要采用自定义采集视频数据接口,然后复用 LiteAVSDK 的编码和推流功能。
TXLivePusher 的
startCameraPreview 接口。这样 SDK 本身就不会再采集视频数据和音频数据,而只是启动预处理、编码、流控、推流等工作。onImageAvailable()中,获取到 YUV_420_888 格式的视频数据,然后将 YUV_420_888 格式转码为 I420 格式,再使用
sendCustomVideoData 向SDK填充直播电商源码采集和处理后的 Video 数据。具体实例代码如下:
TXLivePusher 的
startCameraPreview 接口。这样 SDK 本身就不会再采集视频数据和音频数据,而只是启动预处理、编码、流控、推流等工作。onPreviewFrame()中,获取到 NV21 格式的视频数据,然后将 NV21 格式转码为 I420 格式,再使用
sendCustomVideoData 向SDK填充直播电商源码采集和处理后的 Video 数据。具体实例代码如下:
int sendCustomVideoData(byte[] buffer, int bufferType, int w, int h)
该接口是向 SDK 传入开发者自定义采集和处理后的视频数据(美颜、滤镜等),目前支持 I420 格式。该接口适用场景是只想使用 SDK 来编码和推流。 调用该接口前提,是不再调用
TXLivePusher 的
startCameraPreview 接口。
|
参数 |
类型 |
说明 |
|---|---|---|
|
buffer |
byte[] |
视频数据 |
|
bufferType |
int |
视频格式.目前只支持 TXLivePusher.YUV_420P |
|
w |
int |
视频图像的宽度 |
|
h |
int |
视频图像的高度 |
|
结果 |
说明 |
|---|---|
|
>0 |
发送成功,但帧率过高,超过了TXLivePushConfig中设置的帧率,帧率过高会导致视频编码器输出的码率超过TXLivePushConfig中设置的码率,返回值表示当前YUV视频帧提前的毫秒数 |
|
0 |
发送成功 |
|
-1 |
视频分辨率非法 |
|
-2 |
YUV数据长度与设置的视频分辨率所要求的长度不一致 |
|
-3 |
视频格式非法 |
|
-4 |
视频图像长宽不符合要求,画面比要求的小了 |
|
-1000 |
SDK内部错误 |
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69982461/viewspace-2786871/ ,如需转载,请注明出处,否则将追究法律责任。