ndi推流,音视频延迟大,不同步,卡顿。参考obs-ndi推流代码。
https://github.com/Palakis/obs-ndi/blob/master/src/obs-ndi-output.cpp
/*
obs-ndi
Copyright (C) 2016-2018 Stéphane Lepin <steph name of author
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; If not, see <https://www.gnu.org/licenses/>
*/
#include <obs-module.h>
#include <util/platform.h>
#include <util/threading.h>
#include <util/profiler.h>
#include <util/circlebuf.h>
#include "obs-ndi.h"
static FORCE_INLINE uint32_t min_uint32(uint32_t a, uint32_t b)
{
return a < b ? a : b;
}
typedef void (*uyvy_conv_function)(uint8_t* input[], uint32_t in_linesize[],
uint32_t start_y, uint32_t end_y,
uint8_t* output, uint32_t out_linesize);
static void convert_i444_to_uyvy(uint8_t* input[], uint32_t in_linesize[],
uint32_t start_y, uint32_t end_y,
uint8_t* output, uint32_t out_linesize)
{
uint8_t* _Y;
uint8_t* _U;
uint8_t* _V;
uint8_t* _out;
uint32_t width = min_uint32(in_linesize[0], out_linesize);
for (uint32_t y = start_y; y < end_y; ++y) {
_Y = input[0] + ((size_t)y * (size_t)in_linesize[0]);
_U = input[1] + ((size_t)y * (size_t)in_linesize[1]);
_V = input[2] + ((size_t)y * (size_t)in_linesize[2]);
_out = output + ((size_t)y * (size_t)out_linesize);
for (uint32_t x = 0; x < width; x += 2) {
// Quality loss here. Some chroma samples are ignored.
*(_out++) = *(_U++); _U++;
*(_out++) = *(_Y++);
*(_out++) = *(_V++); _V++;
*(_out++) = *(_Y++);
}
}
}
struct ndi_output
{
obs_output_t *output;
const char* ndi_name;
bool uses_video;
bool uses_audio;
bool started;
NDIlib_send_instance_t ndi_sender;

本文档分析了obs-ndi推流代码,针对音视频延迟、不同步和卡顿现象,提供了可能的解决方案和代码片段,探讨如何调整设置以提高性能并确保实时同步。
最低0.47元/天 解锁文章
1714

被折叠的 条评论
为什么被折叠?



