麒麟系统RTMP RTSP播放/Linux低延时RTMP RTSP直播播放SDK开发测试

       经常有人提到Linux和国产系统上的播放器,最近也写了个Linux上的直播播放SDK, 视频绘制使用XLib相关库实现, 音频输出使用PulseAudio和Alsa Lib实现。

      目前支持RTMP和RTSP协议直播播放, RTMP支持扩展H265播放, RTSP也支持H265播放.

      播放器接口和调用都比较简单, 非常好集成, 下面是最简单的集成调用代码, 这个代码不依赖于QT.

#include <stdio.h>
#include <string.h>
#include <assert.h>
#include <errno.h>
#include <string>
#include <sstream>
#include <poll.h>
#include <X11/Xlib.h>
#include <X11/keysym.h>
#include "nt_sdk_linux_smart_log.h"
#include "nt_linux_smart_player_sdk.h"


Display* display_ = nullptr;
Window   main_wid_ = None;

const char* win_base_title = "Rtmp/Rtsp Live Player Demo";

int EventPoll(int fd, bool is_write, int timeout_ms)
{
	int result;

	do
	{
		struct pollfd info;

		info.fd = fd;
		if (is_write)
		{
			info.events = POLLOUT;
		}
		else
		{
			info.events = POLLIN | POLLPRI;
		}

		result = poll(&info, 1, timeout_ms);

	} while (result < 0 && errno == EINTR);

	return result;
}

bool MY_X11_Pending(Display* display, int timeout_ms)
{
	XFlush(display);
	if (XEventsQueued(display, QueuedAlready) > 0)
	{
		return true;
	}

	if (EventPoll(ConnectionNumber(display), false, timeout_ms))
	{
		if (XPending(display) > 0)
		{
			return true;
		}
	}

	return false;
}

Window CreateSubWindow(Display* display, int screen, Window parent)
{
	XWindowAttributes  parent_win_att;
	XGetWindowAttributes(display, parent, &
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值