自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(53)
  • 收藏
  • 关注

原创 Linux arm64(国产arm64位操作系统) RTMP/RTSP低延时直播播放SDK开发测试

Linux arm64系统rtmp/rtsp低延时直播播放,国产arm64操作系统rtmp/rtsp低延时直播播放,麒麟arm64操作系统rtmp/rtsp低延时直播播放,Linux arm64系统rtmp/rtsp unity播放开发.

2024-05-10 17:04:51 134

原创 RTMP播放器和推送端支持enhanced RTMP H265(enhanced RTMP HEVC)

Windows、Android RTMP播放器和推送端支持enhanced RTMP H.265(enhanced RTMP HEVC)

2024-03-01 14:40:20 293

原创 nginx-rtmp-module 支持 Enhancing RTMP HEVC(H.265)

nginx-rtmp-module 支持 Enhancing RTMP HEVC(H.265)代码。

2024-01-25 17:29:10 531

原创 Android GB28181-2022 图像抓拍

新版GB/T 28181-2022 增加了图像抓拍功能,本文详细的说明了Android设备端如何支持图像抓拍功能。

2024-01-02 12:21:34 475

原创 Android GB28181历史视音频回放

如何实现Android GB28181历史视音频的回放, 怎样实现Android GB28181设备录像文件的播放.

2023-11-01 16:11:31 365

原创 Android GB28181视音频文件下载

Android GB28181视音频文件下载代码实现; Android GB28181视音频文件下载实现代码; Android GB28181视音频文件下载实现细节; 安卓 GB28181视音频文件下载协议实现;安卓 GB28181录像文件下载实现; 安卓 GB28181录像文件上传实现; 安卓国标录像文件上传实现。

2023-09-01 15:10:15 187

原创 Android GB28181历史视音频文件检索

Android GB28181历史视音频文件检索代码实现细节, Android GB28181历史视音频文件检索接口;Android GB28181录像文件查询. Android GB28181录像文件下载.

2023-08-31 11:36:03 319

原创 安卓播放H264/H265实时流(安卓实时预览H264/H265 安卓实时预览AVC/HEVC)

对于上述两种场景,安卓拿到的都是已经编码的H264或H265码流,对于转GB28181、RTSP、 RTMP和录像存储很方便,但要实时预览就不方便了,实时预览需要先解码, 再显示, 增加了项目开发成本,为了方便用户,在我的播放器上增加了直接传H264/H265字节流接口,用户只要把H264/H265数据传给播放器就好,播放器负责解码(软解或硬解)显示。常用的h264 nal_unit_type: 5(IDR), 6(SEI), 7(SPS), 8(PPS).字节流由1到多个字节流nal_unit组成.

2023-05-16 17:14:49 2452

原创 安卓GB28181-2022 RTP over TCP

安卓端如何实现GB28181-2022 RTP over TCP传输, rtp包打包格式, SDP媒体行定义,针对TCP的相关属性.

2023-04-25 11:17:42 698

原创 Android MediaCodec设置H264 Profile到High

Android MediaCodec H264(AVC) Profile 和 Level设置, 如何设置Profile到High, 设置Profile不生效或抛异常的原因。

2023-04-04 17:03:08 1408 1

原创 GB28181 PS打包纯音频

GB28181音视频这块基本都需要PS,PS的打包和解析非常重要,经常会遇到语音广播、语音对讲需要把纯音频打包成PS,或者解析纯音频PS。 这里对PS打包和解析纯音频做个简单的说明.

2023-04-03 17:02:37 799 1

原创 安卓GB28181云台控制和预置位查询

安卓GB28181云台控制和预置位查询实现, 使用GB28181协议实现安卓前后摄像头远程焦距调节和实时视频监控。

2022-12-09 16:41:11 1357

原创 安卓GB28181跨网段语音对讲

安卓GB28181语音对讲跨网段,安卓GB28181跨网段语音对讲, 安卓国标语音对讲跨网段,安卓国标跨网段语音对讲,安卓GB28181跨网段语音对讲方案探讨实现, 安卓GB28181语音对讲跨网段方案探讨实现.

2022-12-05 15:38:27 600

原创 安卓Unity3D Camera图像和音频采集推送代码

安卓Unity3d 可以使用ReadPixels从当前Render Target读取图像,具体实现是先等待WaitForEndOfFrame, 之后调用ReadPixels获取图像,然后编码推送就好, 音频使用AudioClip的GetData读取,然后将float转sint16,传给音频编码器。..................

2022-08-30 12:27:26 1392

原创 安卓GB28181设备语音广播和语音对讲(Android GB28181 语音广播和语音对讲)实现

安卓GB28181设备语音广播和语音对讲(Android GB28181 语音广播和语音对讲) 信令流程以及代码实现.

2022-07-22 17:40:59 2656

原创 GB28181 安卓移动设备位置上报实现(订阅和通知实现)

GB28181中事件订阅和通知机制是基于RFC3265 中的SIP扩展方法SUBSCRIBE和NOTIFY实现的。代码实现之前,得先弄清楚相关协议,先说明RFC3265中的一些关键点.对于RFC3265更多细节,这里主要说明一些关键点:1.SUBSCRIBE请求中应该包含"Expires“头, 快到期的时候,需要在重新发送SUBSCRIBE刷新这个期限。2.SUBSCRIBE 2xx响应中也必须包含"Expires”,这个值可以比请求中的小,但不能比它大。3.SUBSCRIBE请求中"Exp

2022-03-17 17:51:57 5658

原创 安卓GB28181设备目录查询响应(Android GB28181)

GB28181设备目录查询采用RFC3428中的MESSAGE方法实现, 需要走有应答命令流程。完整的定义请参考GB28181标准,这里只列举代码实现中的一些细节问题:1.Message消息头中的Content-type必须是"Application/MANSCDP+xml".2.设备目录查询/应答命令采用 MANSCDP 协议格式定义.3.XML字符编码一般是GB2312, 安卓默认可能是UTF8, 具体要看服务端,有些服务端只支持GB2312,设备信息中的中文字符显示可能就是乱码, 安卓

2022-02-25 14:32:00 2678

原创 安卓设备接入GB28181(Android GB28181)

最近对安卓现有代码进行了扩展,支持了GB28181接入, GB28181协议实现分两块,一块是信令部分,一块是流媒体数据传输。下面分两部分进行展示: 信令接口:public interface GBSIPAgent { public void addListener(GBSIPAgentListener listener); /* * 设置SIP Server配置参数 * @param address SIP服务器地址, 如 192.............

2022-02-22 12:37:34 6009 20

原创 音频立体声转单声道(音频双通道转单通道)

有些场景可能需要音频双通道转单通道,下面是双通道S16交错格式转单通道S16格式的C++代码,实现比较简单,不多说直接上干货,Ctrl+CV拿走不谢~#include <stdint.h>#incudde <assert.h>void StereoToMonoPCMS16(const int16_t* src, int16_t* dst, size_t frames){ assert(src); assert(dst); assert(frames ...

2021-09-01 16:19:37 2559

原创 cmake增加-std=c++11,-std=c++14,-std=c++17选项

cmake生成makefile增加c++版本选项,命令如下:# 增加-std=gnu++11cmake . -DCMAKE_CXX_STANDARD=11 <path-to-source># 增加-std=gnu++14cmake . -DCMAKE_CXX_STANDARD=14 <path-to-source># 增加-std=gnu++17cmake . -DCMAKE_CXX_STANDARD=17 <path-to-source>...

2021-08-19 10:22:59 9972

原创 cmake 增加-fPIC选项 gcc

cmake生成makefile时候增加-fPIC选项很方面,命令如下: cmake -DCMAKE_POSITION_INDEPENDENT_CODE=ON<path-to-source>

2021-08-19 10:08:21 1760

原创 麒麟操作系统/Linux 摄像头采集录制

Linux系统上采集摄像头,可以使用V4L2相关接口,linux上的摄像头设备对应的文件是/dev/videoxx, 采集和控制摄像头只要调用open("/dev/videoxx", flag) 打开文件,然后对文件进行读写等控制操作即可. 最近在Linux推送SDK也增加了摄像头采集和预览功能,集成调用非常简单,几行C++代码就可以完成.class CameraInfo{public: std::string name_; std::string id_; std:...

2021-08-13 12:08:38 2909

原创 麒麟系统窗口采集录制/Linux 上窗口分享和录制

窗口采集是很常用的功能,特别是分享文档PPT等, Windows系统实现类似功能非常不容易,特别是Win10系统,通过DC拷贝是采集不到Word, PPT或者Chrome窗口的,不过在Linux上稍微容易些,不考虑Wayland的话,直接使用X相关接口就可以实现. 最近在Linux推送SDK也增加这个功能,集成调用非常简单,几行代码就可以完成窗口采集推送,下面是调用代码:NT_HANDLE StartCapture(NT_SmartPublisherSDKAPI* pus...

2021-08-04 10:59:14 605

原创 Ubuntu21.04 Wayland 屏幕分享录制问题

从Ubuntu21.04开始, 系统默认的显示服务器是Wayland, 不再是xorg, 这就导致以前所有基于x window的屏幕采集工具都不能使用,需要针对Wayland开发新的屏幕采集实现。目前看来Wayland可能是个趋势,说不定将来国产操作系统也会切换到Wayland上去。未雨绸缪, 自己的推送采集SDK先提前支持上. 通过查找各种资料,推送SDK算是支持了,对外提供的调用SDK代码和以前一样。下面是部分调用片段: NT_HANDLE push_handl...

2021-07-29 10:53:49 781

原创 麒麟系统桌面采集|麒麟同屏|Linux 屏幕采集和系统声音采集推送SDK

Windows上实现桌面采集资料多,方案也多. Linux这方面的资料较少,不过Linux上也可以实现桌面采集,调用XLib相关接口就可以. 最近写了一个Linux上的采集桌面和系统声音, 然后rtmp协议推送出去的一个SDK. 集成调用非常简单,下面是集成调用代码:namespace{ volatile bool g_is_exit = false; void OnSigIntHandler(int sig) { if (SIGINT == sig) { ...

2021-07-07 16:48:32 520

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

近一年来,经常有人提到Linux和国产系统上播放器,有人问, 咱就自己写了个linux上的播放SDK, 视频绘制使用XWindow相关接口实现, 音频输出使用

2021-06-18 17:10:49 609

原创 音频PCM float32到s16转换

对于linearPCM

2021-06-02 11:11:41 3101

原创 用C++11 sleep线程

#include <thread>#include <chrono>// 下面代码可以直接拷贝使用, 别忘了头文件// 时间单位毫秒inline void sleep(int milliseconds){ std::this_thread::sleep_for(std::chrono::milliseconds(milliseconds)); // 或者 // std::this_thread::sleep_for(std::chrono::durat.

2021-05-31 10:10:31 213

原创 Linux上使用opengl跨线程绘制yuv图像

X Window上使用opengl绘制yuv图像,就需要用GLX, glx相关资料和接口说明网上都能找到, opengl直接绘制yuv图像的话,首先需要系统和显卡驱动支持较高版本的opengl, 也就是说opengl需要支持可编程渲染管线,然后写个顶点shader和片元shader。另外我的使用场景需要单独的线程调用opengl做绘制。 下面看看具体实现: 1. 使用Xlib之前需要调用XInitThreads(); 让xlib支持多线程. 可以在程序刚启动时就调用,代码如...

2021-05-22 23:26:25 687 2

原创 Linux上用ALSA aloop driver实现录制其他程序播放的声音

在linux系统上也需要录制程序的播放声音, windows有相应的接口直接调用, linux可以使用aloop driver, 下面是具体操作过程: 1. 首先检查是否系统已经有loopback soundcard音频设备, 可以使用:"aplay -l", 我的机器执行如下: 2.可以看到我的机器没有相应的Loopback设备,需要手动加载"aloop"模块到内核, 执行:"sudo modprobe snd-aloop", 然后再查看:"aplay -l...

2021-05-14 18:08:33 2539 2

原创 使用GDI+转换字符串为透明位图(ARGB位图)

Windows下使用GDI+将字符串转成透明位图,方便后续贴图或者存储成png图片。以下是C++代码,使用前根据实际需求稍作改动即可.void GDIPlusMakeARGBBitmap(HWND hwnd, const std::wstring& font_name, int font_size, const std::wstring& text){ Gdiplus::FontFamily font_family(font_name); if (!font_fa...

2021-04-20 10:26:02 432

原创 windows 如何在不依赖于DPI Awareness Mode 下获取屏幕宽高

Win8.1 和 Win10 开始,写win32界面程序就需要考虑dpi了,不同的DPI Awareness Mode下,windows 的部分api返回的结果不同,调用GetSystemMetrics(SM_CXSCREEN) 和GetSystemMetrics(SM_CYSCREEN) 返回的结果都是被dpi矫正过的,可以用使用EnumDisplaySettingsEx获取屏幕宽高。代码如下: DEVMODE dev_mode; dev_mode.dmSize = sizeof(d...

2021-04-06 10:26:09 367

原创 WIN10 PPT窗口采集和WIN10 WORD窗口采集直播和分享

用GetWindowDC然后Copy DC方式已经无法采集Win10最新版本的PowerPoint和Word窗口,有些场景下又不需要采集整个桌面,只想采集个别的窗口,经过探索算是解决了这个采集问题. 下面看看采集效果: 采集word配置: 采集Word播放效果: 采集PPT配置: 采集PPT播放效果: Win10上Chrome开启硬件加速后,老的采集方式也是采集不到的,新的方式也可以采集. Chro...

2021-03-22 11:26:36 386

原创 Windows 4K低延时H265/H264硬编码直播

111111

2020-11-20 16:13:35 4171 2

原创 Windows Unity3D直播采集rtmp推送

Windows实现Unity3D采集可以直接调用现有的C#直播库实现,调用现有的C#直播库开发工作量小,难度低,下面就以调用大牛直播SDK(Github)做一个基本的直播采集端: 这里给出核心的调用代码: 1. Unity初始化SDK: bool InitSDK() { if (!is_pusher_sdk_init_) { // 设置日志路径(请确保目录存在)...

2020-06-11 10:28:56 783 1

原创 Windows 60帧以上高帧率直播尝试

有些场景对直播帧率有要求,传统的25、30帧已完全不能满足需求,针对这些场景,我对现有直播系统进行改进和优化,在一些配置好的机器上可以把直播帧率提高60帧以上,较低分辨率甚至可以达到120fps. 下面可以看下实际的效果. 先从github下载windows demohttps://github.com/daniulive/SmarterStreaming, 然后打开Smart...

2019-11-04 14:40:52 2473

原创 rtsp组播搭建和rtsp组播实现

rtsp组播在一些场景下比单播更合适,比如电子教室等,单播每一路都要占相同带宽,带宽要求比较高,并且路数多了也容易丢包。组播只占一路带宽。不过组播需要路由器,交换机支持(比如 IGMP协议,组播组协议等). 并且有些无线路由器不支持。另外组播只能通过rtp over udp的形式传输。不支持tcp传输. rtsp组播实现方式,首先sdp和点播不同,sdp需要包含rtp端口...

2019-03-05 09:48:56 9086 1

原创 Rtsp推送h264, Rtsp推送h265(hevc)

   rtsp推送相关的资料和测试软件比较少,本文介绍rtsp推送相关信令和测试效果.   1. rtsp推送流程. 主要分两部分,第一部分先发送信令,第二部分发送rtp包.   信令流程:   1.1 先发送OPTIONS, options比较常用,就不做详细说明了。   1.2 发送ANNOUNCE, 发送ANNOUNCE主要是把要推送的音视频信息通过sdp格式传给服务器。关于...

2018-12-15 11:53:16 4912

原创 rtmp 播放h265 (rtmp 播放hevc)

rtmp 播放h265 首先要扩展flv协议,国内常用扩展方式是给flv的videotag.codecid增加一个新类型(12)来表示h265(hevc),其他和h264规则差不多,另外和h264不同的地方是要解析HEVCDecoderConfigurationRecord,从HEVCDecoderConfigurationRecord中解析出vps, sps, pps. 有了vps, ...

2018-11-11 13:27:40 8770 1

转载 h264, h265 和 libvpx 比较(h264/avc, hevc 和vp9比较)

转发一篇x264, x265和 libvpx比较的文章, h265比h264码率到底能降低多少,相信很多人都听说265码率低了很多,实际应用场景到底如何,还是需要验证的,这篇文章作者筛选了5000个时长12秒的视频,做了实际的测试,转发一下, 原文出处请点击 ,如有版权问题,请联系我删除.  A Large-Scale Comparison of x264, x265, and libvpx ...

2018-10-18 17:27:43 3141 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除