- 博客(41)
- 资源 (173)
- 收藏
- 关注
原创 Qt使用九宫格原理缩放图片
9宫格缩放规则如下:1、将一张图分割成9块2、四个角(1、3、7、9)在缩放的时候是保持大小不变3、图块2、8仅当宽度变化时缩放宽度4、图块4、6仅当高度变化时缩放高度5、图块5当图片大小发生变化,宽度和高度都进行缩放.........
2016-11-29 12:20:18 10139
原创 Qt Stylesheets Side Bar
#sidebarFrame {background: #8af;border: none;border-right: 1px solid black;}在sidebarFrame中添加一个QFrameQFrame.SidebarFrame {border-top-left-radius: 10px;border-top-right-radius: 10px;
2016-11-29 10:24:14 2785
原创 Qt Stylesheets Slider
QSlider::groove:horizontal {border: 1px solid #bbb;background: white;height: 10px;border-radius: 4px;}QSlider::sub-page:horizontal {background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
2016-11-29 10:12:11 1460
原创 std::string判断字符串前缀和后缀
后缀的判断方式几乎与前缀相同,首先判断目标字符串与当前字符串的长度,目标字符串大于当前字符串则返回错误,然后判断目标字符串在当前字符串最后一次出现的位置。find函数的作用于rfind类似,但是是正向查找模式串str出现的第一个位置,pos代表从0开始到pos位置结束中正向查找,并且也是正向匹配。rfind函数的作用是查找模式串str在当前字符串中最后一次出现的位置,pos代表从第pos个位置开始逆向查找,但是匹配是正向匹配的。代码的判断使用了rfind函数,该函数的作用将在后面具体解释。
2016-11-29 09:53:31 7796
原创 Qt Stylesheets Button Bar
#topFrame {border: none;background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,stop: 0 #a6a6a6, stop: 0.08 #7f7f7f,stop: 0.39999 #717171, stop: 0.4 #626262,stop: 0.9 #4c4c4c, stop: 1 #333333);}
2016-11-29 09:43:36 512
翻译 WebRTC笔记之一:开篇
一.无插件的实时通讯 想像一下,如果你的手机、电视、电脑都可以通过一个平台进行通信,想像一下,你可以在Web应用中轻松地加入视频聊天和p2p数据分享,这就是WebRTC的愿景。 想试一试吗?WebRTC现在已经被集成到Chrome、Opera和Firefox,在apprtc.appspot.com有个简单的视频聊天应用可供测试。1.在Chrome、Opera或F
2016-11-23 17:25:19 49233 7
转载 使用Live555类库实现的网络直播系统
Live555主要有四个类库:libUsageEnvironment.lib;libliveMedia.lib;libgroupsock.lib;libBasicUsageEnvironment.lib将这四个类库以及相关的头文件导入VC++2010之后,可以轻松实现网络直播系统。在这里直接贴上完整代码,粘贴到VC里面就可以运行。注:程序运行后,使用播放器软件(
2016-11-22 09:57:15 1220
原创 C++之std::string必知必会
string 类内部封装了很多成员方法例如:查找find,拷贝copy,删除delete 替换replace,插入insertstring管理char*所分配的内存,不用担心复制越界和取值越界等,由类内部进行负责。
2016-11-22 09:46:35 4657 1
转载 Apache与Nginx
理论:Nginx轻量级,采用 C 进行编写,同样的 web 服务,会占用更少的内存及资源。 抗并发,nginx 以 epoll and kqueue 作为开发模型,处理请求是异步非阻塞的,负载能力比 apache 高很多,而 apache 则是阻塞型的。在高并发下 nginx 能保持低资源低消耗高性能 ,而 apache 在 PHP 处理慢或者前端压力很大的情况下,很容易出现进程数飙升,...
2016-11-22 08:38:48 626
原创 软件设计七大原则
对扩展开发,意味着有新的需求或变化时,可以对现有代码进行扩展,以适应新的情况。对修改关闭,意味着类一旦设计完成,就可以独立的工作,而不要对其进行任何的修改。在面向对象设计中,我们通常通过继承和多态来实现OCP,即封装不变部分。比如需求要实现2种状态的业务。☆如果用if else来判断,那么后面加第三种状态,就还需要在此接口上增加else逻辑,不符合开闭原则。☆用策略类实现,则定义策略接口,策略A和策略B为具体实现类,分别对应两种状态。
2016-11-17 16:33:11 3581
原创 通过live555实现H264 RTSP直播(Windows版)
为何标明“Windows版”,因为firehood大神已经实现了linux版:通过live555实现H264 RTSP直播相关文章:【1】Win7(Windows 7)下用VS2013(Visual Studio 2013)编译live555【2】RTSP协议分析【3】windows命名管道一.基础live555的学习基本上都是从E:\live555\testProgs中的
2016-11-17 15:22:30 28808 18
原创 windows命名管道
一.windows管道简介管道(Pipe)的定义:A pipe is a section of shared memory that processes use for communication. The process that creates a pipe is the pipe server. A process that connects to a pipe is a pipe
2016-11-17 14:36:27 13974 2
原创 RTSP协议分析
一.简介 RTSP(Real Time Streaming Protocol)实时流传输协议,是TCP/IP协议体系中的一个基于文本的应用层协议,由哥伦比亚大学、网景和RealNetworks公司提交的IETF RFC2326标准。该协议定义了一对多应用程序如何有效地通过IP网络传送多媒体数据。RTSP在体系结构上位于RTP和RTCP之上,它使用TCP或UDP完成数据传输。......
2016-11-16 22:40:09 4972
原创 C++11并发学习之五:生产者与消费者
本文将实现单生产者-多消费者模型、多生产者-单消费者模型和多生产者-多消费者模型。前两种实际上是简化版的多生产者-多消费者,因此只需要实现第三种。中实际上用条件变量实现了一个简单的单生产者-单消费者模型,也就是一个生产者和一个消费者。
2016-11-15 22:43:14 3604 3
原创 Win10下用VS2017编译live555
一.live555简介live555是一个为流媒体提供解决方案的跨平台C++开源项目,它实现了对标准流媒体传输协议如RTP/RTCP、RTSP、SIP等的支持。live555能在Linux,Mac OS X,Windows和QNX等多个平台编译和运行。目前,它被用于流化、接收和处理MPEG、H.264、H.265、H.263+、DV等视频,以及MPEG(MP3的编码)、AAC、PCM等音频。由
2016-11-15 17:34:16 7881 7
原创 QStringList是如何实现去重的
之前在中用两种方法实现了std::vector元素去重,虽然是去重了,但是同时也对元素排序了。方法一种简单的利用了std::set中元素值的唯一性。实际上QStringList去重也用到了QSet中元素值的唯一性,不过它去重时没有对元素排序。
2016-11-15 09:39:46 3969 1
原创 基于libVLC的视频播放器之二:使用VLC-Qt播放RTSP流
此篇是使用VLC浏览器插件播放RTSP流的姊妹篇。一.直接使用libVLClibVLC是VLC media player多媒体框架的核心引擎和接口,开发者使用它能轻松的创建大量具有VLC特性的应用。最简单的基于libVLC的例子:最简单的基于libVLC的视频播放器详细介绍了libVLC的获取及使用方法,里面提到了如何将libVLC嵌入到程序程序中,只需将窗口或者控件的句柄传
2016-11-14 15:38:34 24596 8
原创 基于libVLC的视频播放器之一:使用VLC浏览器插件播放RTSP流
1.首先电脑上要安装VLC。对于老版本的VLC,该浏览器插件经常崩溃,强烈建议安装2.0.0及以上的版本。我安装的版本是vlc-2.2.4-win32,其他未测试。2.然后用VLC测试一下RTSP地址是否可用,测试方法:经测试,下面两个RTSP地址可以正常使用。rtsp://184.72.239.149/vod/mp4://BigBuckBunny_175k.mov
2016-11-14 10:15:46 42409 4
原创 Qt6入门教程 1:Qt简介
Qt是一个跨平台的C++图形用户界面(GUI)应用程序框架,它为应用该程序开发者提供建立艺术级图形界面所需的所有功能,它是完全面向对象的,很容易扩展,并且允许真正的组件编程。
2016-11-14 09:43:49 19023 2
原创 Qt之libVLC或者海康SDK视频上显示透明控件
通常在使用libVLC或者海康SDK的时候,会把widget的winID当做参数传进去,此时如果直接在该widget上放置按钮等控件,这些控件在视频渲染的时候就会被刷掉,无法显示。那么只能将这些控制按钮放置widget外,一般是widget下方,这样做虽然中规中矩,但是如果视频窗口本来就很小,还得被控制按钮挤压空间,就不太合适了。......
2016-11-12 20:17:31 27034 5
转载 一个简单例子,完全入门CMake语法与CMakeLists编写
本文介绍了 CMake 的基本概念、语法和一些常用命令。我们了解了 CMake 的工作原理和如何编写一个简单的 CMakeLists.txt 文件来构建一个包含可执行文件和动态库的项目。本文通过一个示例,详细解释了常用的 CMake 命令的作用,包括projectfind_file以及install命令,相信读者以后会在开发工作中经常遇到。通过阅读本文,读者应该对 CMake 有了一个基本的了解,并能够编写简单的 CMake 脚本来构建项目。
2016-11-12 16:55:49 2399 1
原创 strncpy截断问题
最近在对一块string对象进行拷贝到char数组的时候发现部分数据缺失了。原因是strncpy在复制的时候,在遇到'\0'时,先复制过去,然后的把dest剩下置为了'\0'。所以,一旦源字符串中存在'\0'则会导致源数据被截断。为此我们可以采用memcpy进行拷贝操作(snprintf 拷贝的时候遇到'\0' 也会停止)可以看到,发生了截断。
2016-11-12 15:15:44 2158 1
原创 Qt之QFile文件操作详解
Qt之QFile文件操作详解,包括单独使用QFile,使用QFile+QTextStream、使用QFile+QDataStream
2016-11-12 08:47:01 2952 1
原创 Qt优秀开源项目之二:Qt-Advanced-Docking-System
这个项目的原作者是mfreiholz,但是已经6年没更新,githubuser0xFFFF将该项目fork之后,一直维护到现在,这应该算是开源界的接力了。如果你还在项目Visual studio的酷炫docking效果,那么不妨试试这款加强版的QDockWidget。目前支持Qt5和Qt6,我在最近Qt5项目中试用了一把,使用方法:将Qt-Advanced-Docking-System编译成库后引入工程,pro文件:效果如下:这里有一点要注意,如果dock widget中用到了QOpenGLW
2016-11-11 14:16:51 19057 1
原创 Qt优秀开源项目之一:流媒体直播系统Open Broadcaster Software
Open Broadcaster Software(OBS)是一款可用于音视频录制和直播的免费开源软件。可以轻松部署到多种平台,目前支持Windows、MAC和Linux。特性:1.高性能的实时视频/音频捕获和混合,无限制的场景,可以通过自定义转换在这些场景之间无缝切换。2.提供视频源过滤器,比如图像掩蔽、颜色校正、色度/颜色键控等等。3.直观的音频混合器,该混合器带有.........
2016-11-11 13:59:30 16616
原创 Qt基于librtmp推送H.264
rtmp打包H.264的原理可以参考:RTMP协议分析及H.264打包原理相关文章:【1】Win7(Windows 7)下用VS2012(Visual Studio 2012)编译librtmp【2】libRTMP使用说明【3】 Adobe Media Server 5(AMS)的安装及使用【4】Adobe Media Server 5(AMS)的简单配置【5】H.264(
2016-11-11 09:41:21 8622 4
原创 H.264(H264)解码SPS获取分辨率和帧率
#include #include #include #include typedef unsigned int UINT;typedef unsigned char BYTE;typedef unsigned long DWORD;UINT Ue(BYTE *pBuff, UINT nLen, UINT &nStartBit){ //计算0bit的个数
2016-11-08 16:24:27 16415 1
转载 live555源码分析----RTP的打包与发送
这里主要分析一下,live555中关于RTP打包发送的部分。在处理完PLAY命令之后,就开始发送RTP数据包了(其实在发送PLAY命令的response包之前,就会发送一个RTP包,这里传输就已经开始了),RTP打包前的H264数据处理参考:live555源码分析----H264数据处理 RTP包的发送是从MediaSink::startPlaying函数调用开始的[cp
2016-11-07 11:32:02 1051
转载 live555源码分析----H264的数据处理
现在来分析live555中关于H264的处理部分,主要包括从文件中读取数据进行并进行frame(NALU)的分割,然后对frame进行分片,这些工作都是在frame交给RTP sink之前完成的。接着上篇分析文章(RTP的打包与发送)中提到的MultiFramedRTP::packFrame函数进行分析。[cpp] view plain copy print?
2016-11-07 10:40:35 2215 1
原创 Qt之实现遮罩窗口
原理很简单,就是在主窗口上覆盖一层半透明窗口,然后把需要遮罩显示的窗口(嵌入窗口)布局到该半透明窗口中网上很多实现方法是将主窗口截图绘制到遮罩窗口,然后再调用QPainter的fillRectr(rect(),QColor(0,0,0,100))来实现半透明效果,这种方法显然是不行的,因为这样的话就看不到主窗口中的动图了因此需要直接把遮罩窗口设置为半透明效果,这样就能看到主窗口中的动图,如效果图所示,遮罩时依然能看到滚动条和动图的动画效果设置遮罩窗口半透明的代码如下。.........
2016-11-06 11:07:09 4807
转载 WebRTC中RTP/RTCP协议实现分析
一 前言RTP/RTCP协议是流媒体通信的基石。RTP协议定义流媒体数据在互联网上传输的数据包格式,而RTCP协议则负责可靠传输、流量控制和拥塞控制等服务质量保证。在WebRTC项目中,RTP/RTCP模块作为传输模块的一部分,负责对发送端采集到的媒体数据进行进行封包,然后交给上层网络模块发送;在接收端RTP/RTCP模块收到上层模块的数据包后,进行解包操作,最后把负载发送到解码模块。
2016-11-04 18:25:55 4560
原创 H.264格式分析
一.H.264基本流结构H.264 的基本流(elementary stream,ES)的结构分为两层,包括视频编码层(VCL)和网络适配层(NAL)。视频编码层负责高效的视频内容表示,而网络适配层负责以网络所要求的恰当的方式对数据进行打包和传送。引入NAL并使之与VCL分离带来的好处包括两方面:1、使信号处理和网络传输分离,VCL 和NAL 可以在不同的处理平台上实现;2、VCL 和NAL 分离...
2016-11-03 11:59:07 12596 4
转载 H.264视频压缩标准
一.简介 H.264是最新的视频压缩标准,它也称为MPEG-4 Part 10或AVC(高级视频编码)。据预测,在未来几年内H.264将成为行业首选的视频标准。 H.264是一个需要许可证才能使用的开放标准,可支持最当今市场上最高效的视频压缩技术。在不影响图像质量的情况下,与采用M-JPEG和MPEG-4 Part 2标准相比,H.264编码器可使数字视频文件的大小
2016-11-03 10:17:51 29068
原创 基于RTP协议的H.264视频传输系统:实现
实现的原理:基于RTP协议的H.264视频传输系统:原理相关文章:【1】RTP协议分析【2】jrtplib简介【3】Qt调用jrtplib实现单播、多播和广播【4】RTP 有效负载(载荷)类型,RTP Payload Type【5】H.264(H264)视频文件的制作【6】H.264格式分析【7】H.264视频压缩标准关于RTP Payload Format
2016-11-02 16:59:54 13075 7
原创 RTP有效负载(载荷)类型,RTP Payload Type
PTEncoding NameAudio/Video (A/V)Clock Rate (Hz)ChannelsReference0PCMUA80001[RFC3551]1Reserved2Reserved3GSMA80001[RFC3551]4G723A80001[Vineet_Kumar][RFC3551]5DVI4A80001[RFC3551]6DVI4A16000...
2016-11-02 14:57:26 42899 6
转载 基于RTP协议的H.264视频传输系统:原理
1.引言 随着信息产业的发展,人们对信息资源的要求已经逐渐由文字和图片过渡到音频和视频,并越来越强调获取资源的实时性和互动性。但人们又面临着另外一种不可避免的尴尬,就是在网络上看到生动清晰的媒体演示的同时,不得不为等待传输文件而花费大量时间。为了解决这个矛盾,一种新的媒体技术应运而生,这就是流媒体技术。流媒体由于具有启动时延小、节省客户端存储空间等优势,逐渐成为人们的首选,流媒体网络应
2016-11-02 11:58:01 2012
20种数据结构和算法的C++实现
2017-11-17
Qt下用QSplitter实现滑动窗口
2017-11-16
QML实现图像处理,包括浮雕、锐化等效果
2017-11-14
WebRTC学习之四:最简单的语音聊天
2017-01-10
WebRTC学习之三:录音和播放
2016-12-26
Qt国际化(I18N)
2023-12-31
QHVlcPlayer.rar
2021-02-27
Qt+libVLC+QWidget渲染
2021-02-27
Qt调用libVLC实现播放器
2021-02-26
TestUI.rar
2021-02-09
QHOpenGLPlayer.rar
2021-01-10
基于Qt和SDL2播放PCM
2021-01-05
Qt5版NeHe OpenGL教程6-10
2018-05-17
Qt5版Nehe OpenGL教程1-5
2018-05-14
Qt调用OpenGL API实现彩色旋转立方体
2018-05-09
MyTcpClient
2018-03-16
Boost.Asio C++ Network Programming随书源码
2018-01-29
Boost.Asio C++ Network Programming(高清,带书签,可复制)
2018-01-29
Effective Modern C++ 英文原版(带书签)
2018-01-27
++i和i++哪个更高效
2023-02-12
TA创建的收藏夹 TA关注的收藏夹
TA关注的人