自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(39)
  • 资源 (18)
  • 问答 (2)
  • 收藏
  • 关注

原创 ffmpeg之音频转码及重采样

最近在用ffmpeg做音频这一块,奈何网上这一块的确少,能找到的有些还不能用。今天算是磕磕绊绊把代码调通了。写篇博客讲讲我的拙见。之所有把转码和重采样写在一起,因为感觉他们是同一个流程完成的工作。下面以我的项目为例,先给各位客官梳理下流程。1. 我的输入的rtsp地址,先打开rtsp地址:avformat_open_input。最好加上rtsp-tcp参数。然后找到音频流。别忘了先 find_stream_info.2. 打开音频的编解码器。avcodec_open2。3. 然后构造编码器A

2021-02-04 18:27:33 1370 3

原创 C++ uint8_t数据串如何按位写入

撸码不易,网上找不到,索性自己写,且撸且珍惜!void bitsWrite(uint8_t* buff, int pos, int size, uint32_t value){ uint32_t index[] = { 0x80000000, 0x40000000, 0x20000000, 0x10000000, 0x8000000, 0x4000000, 0x2000000, 0x1000000, 0x800000, 0x400000, 0

2020-11-04 10:52:02 1964

原创 最简单的GB28181视频PS流播放器。

一 从PS流中提取h264和aac。移步:https://blog.csdn.net/qq_39805297/article/details/107083322二 基于ffmpeg解码h264获取rgb图像,解码aac成pcm格式。bool H264Decoder::init(){ av_register_all(); _pCodecContext = avcodec_alloc_context3(NULL); _pH264VideoDecoder = avcodec_find_dec

2020-08-31 15:43:00 3076 1

原创 基于librtmp推送h264文件至媒体服务器。

一 可以搭建nginx作为rtmp服务器,需要的自行搜索nginx搭建rtmp服务器。二 安装librtmp。三 代码如下:(已上传至github https://github.com/cdebug/h264_to_rtmp)sps_decode.h/** * Simplest Librtmp Send 264 * * 雷霄骅,张晖 * [email protected] * [email protected] * 中国传媒大学/数字电视技术 * Commu

2020-08-27 17:54:07 713

原创 ffmpeg ndk高版本编译arm32位neon汇编启用失败

好久没有写博客了,因为是内网开发,写个知识点吧,手机撸一个。如题,ndk现今版本编译器已经从gcc改为了clang于是出现了这个问题,解决办法是在编译命令中加入 -fno_integrated_as 即可解决。拼写应该没错吧。...

2021-11-05 11:25:02 243

原创 C++ 超大数字的运算——求100的阶乘

uint8_t arr[1000]; memset(arr, 0, sizeof(arr)); arr[0] = 1; for(int i = 1; i <= 100; ++i) { int lastCal = 0; for(int j = 0; j < sizeof(arr); ++j) { int res = arr[j] * i + lastCal; a...

2021-03-12 17:32:35 866

原创 流媒体转发——rtsp转ps

基于FFMPEG提取音视频数据,及PS封包,借鉴了很多资料及博客,对于封装PS包,很多属性没有弄懂,但至少目前做出了功能,发表用以记录,供人学习。Github:https://github.com/cdebug/Rtsp2psCSDN:https://download.csdn.net/download/qq_39805297/14022436主要功能代码如下:RtspDecoder 解RTSP码流rtspdecoder.h#ifndef RTSPDECODER_H#defi..

2021-01-04 17:56:48 1445

原创 多线程日志库

本文参考自陈硕老师的muduo网络库,删减的繁多的依赖文件,精简如此,供更多的人参考学习(感谢陈硕老师的muduo)。copyable.h#ifndef MUDUO_BASE_COPYABLE_H#define MUDUO_BASE_COPYABLE_Hnamespace muduo{/// A tag class emphasises the objects are copyable./// The empty base class optimization applies.//

2020-11-23 09:40:31 282

原创 C++ 十进制字符串与十六进制字符串互转

1. 十进制----十六进制std::string decstr2hexstr(std::string str){ uint32_t num = std::stoul(str); std::string ret; for(int i = 0; i < 4; ++i) { ret.push_back("0123456789ABCDEF"[(((uint8_t*)num)[i] >> 4) & 0xF]); ret

2020-11-12 14:34:10 1394

原创 C++ openssl的rtsp握手鉴权加密算法

std::string MD5(const std::string& src ){ MD5_CTX ctx; std::string md5_string; unsigned char md[16] = { 0 }; char tmp[33] = { 0 }; MD5_Init( &ctx ); MD5_Update( &ctx, src.c_str(), src.size() ); MD5_Final( md, &.

2020-11-09 11:18:33 367

原创 rtsp流转rtmp流

一 socket拉取rtsp流。先讲rtsp拉流的过程,如下是rtsp命令交互的过程,后面一点点分解。OPTIONS rtsp://192.168.31.29:554/0/0/101?transportmode=unicast&profile=Profile_1 RTSP/1.0CSeq: 2RTSP/1.0 200 OKCSeq: 2Public: OPTIONS, DESCRIBE, PLAY, PAUSE, SETUP, TEARDOWN, SET_PARAMETER, G

2020-09-02 16:58:30 1450

原创 QTreeWidget整行选中的边框样式

效果如下:首先是用QSS来设置,把能做的都做了,设置branch和item的上下边框,最后一个item的有边框,如下:QTreeWidget::item:selected{border-top:1px solid #8d8d8d;border-bottom:1px solid #8d8d8d;}QTreeWidget::item:last:selected{border-right:1px solid #8d8d8d;}QTreeWidget::branch:selected{

2020-08-07 09:34:09 2723

原创 jrtplib发送数据时指定起始的序列号(Seq)和时间戳(Timestamp)

使用jrtplib发送数据的时候没有开放的接口设置序列号和时间戳,所以抓包看到的包的起始序列和时间是随机数,而我的项目里需要时从0开始的。这是因为源码中已经把这个参数写死为随机数了,修改下源码再重新编译即可。将以下两处的随机数的赋值改为0.https://github.com/j0r1/JRTPLIB/blob/master/src/rtppacketbuilder.cpp#L165https://github.com/j0r1/JRTPLIB/blob/master/src/rtppack

2020-07-17 09:07:26 506

原创 GB28181学习之路——PS流解复用H264和ACC

上一篇讲了PS中提取视频,今天顺手把音频提取的也做了出来,代码结构也梳理了一下。音频提取的方式和视频是一样的,关于视频的提取方式请移步:GB28181学习之路——PS流解析H264话不多说直接上代码了streamresolver.h:#ifndef STREAMRESOLVER_H#define STREAMRESOLVER_H#include <iostream>#include "common.h"class StreamResolver{public:

2020-07-02 14:19:35 1694

原创 GB28181学习之路——PS流解析H264

磕磕绊绊的做了出来,也算为自己留个资料吧。先讲理论再上代码。挑些重点讲。1. 首先就是获取到 rtp 包,rtp包的结构是:rtp包头+payload,payload就是我们要的ps包,rtp包头的长度是12个字节,所以rtp包去掉前12字节就是ps包了。比如这个 rtp 包,跳过12个字节,从00 00 01 ba 开始就是ps包了。2. 找到ps包之后就要从它的格式入手开始解析,ps荷载h264是把一帧帧的数据打包传过来,一个完整的ps包会包含一帧的数据。而h264的帧分为 i 帧和

2020-07-01 10:31:00 2473 2

原创 Qt+VLC视频画面上覆盖半透明控件

很多人遇到过这个问题吧,我也不例外,试了很多常规的方法没有达到预期的效果。后来想到把控件原有的绘制屏蔽掉,才得到了现在的解决方法。效果图如下:

2020-06-19 12:28:25 2266 10

原创 GB28181学习之路——eXosip获取IP和端口

当设备注册进来时,我们需要记录下设备的IP和端口,以便后续与其进行通信,其实好多地方都可以获取到,但是不一定是准确的,尤其是经过映射的地址更是不好难以捕捉。今天写一下怎么样获取设备的IP和端口,对映射与非映射同样有效。先构造获answer,然后再answer的Via header中取,这时answer中含有映射地址的信息:if (MSG_IS_REGISTER(je->request)){ FLOG ("MSG_IS_REGISTER!\n"); eXosip_lock

2020-06-17 17:19:40 2126

原创 GB28181学习之路——eXosip多线程

多线程开发的主要的工作就是就是使用多个eXosip_t int i,j; TRACE_INITIALIZE (6, NULL); m_ctx1 = eXosip_malloc(); m_ctx1 = eXosip_malloc(); if (m_ctx1==NULL || m_ctx2==NULL) { FLOG("eXosip_malloc failed\n"); return -1; } i=eXosi.

2020-05-15 11:19:15 1975 1

原创 海康大华摄像头播放地址

rtsp://admin:[email protected]:554/Streaming/Channels/101?transportmode=unicast&profile=Profile_1

2020-05-15 11:09:35 1202

原创 GB28181学习之路——eXosip TCP模式

eXosip 的TCP模式与UDP模式大致相同,基本代码如下:bool CSipContact::initialize(){ int i; TRACE_INITIALIZE (6, NULL); m_ctx = eXosip_malloc(); if (m_ctx==NULL) { FLOG("eXosip_malloc failed\n"); return -1; } i=eXosip_init(m_ctx);

2020-05-13 09:37:14 3456 6

原创 GB28181学习之路——再探invite信令规范

最近对接压缩机和nvr设备,出现了很多的问题,原因是之前对接IPC所写的信令不规范,所以这次暴露出了很多问题。wireshark抓的包忘记保存了,懒着抓了,就干吧的写吧。一、sip头proxy、to、contact的国标编码要用通道号的编码。二、invite请求要加subject,值为 (发送者:媒体序列,接受者:媒体序列),发送者是通道编码,接受者有就写,序列号点播第一位为0,历史第...

2020-04-27 10:40:02 1579

原创 GB28181学习之路——基于osip的sdp文本解析

话不多说上代码吧 char buff[4096]; sprintf(buff, "v=0\r\n""o=1001 0 0 IN IP4 10.64.49.44\r\n""s=Play\r\n""c=IN IP4 10.64.49.44\r\n""t=0 0\r\n""m=video 5494 RTP/AVP 96 97 98\r\n""a=rtpmap:96 PS/...

2020-04-27 10:14:11 2099 2

原创 GB28181学习之路——实时视频点播

主要写下信令构造吧,我也是到处查资料然后调试才调通的,所以就拿我的代码来看吧,也不用解释。下面是构造invite的方法:osip_message_t *invite = NULL;i=osip_message_init(&invite);bSipInviteBuild(&invite);#define MAXLINE 4096#define MESSAGE_...

2020-04-15 09:21:20 1830 5

原创 GB28181学习之路——构造osip_message_t

辗转好久找到了有效的方法,如下: osip_message_t *res; i=osip_message_init(&res); osip_message_set_version(res, osip_strdup("SIP/2.0")); osip_message_set_status_code(res, 401); osip_message_s...

2020-04-10 09:09:25 1979 1

原创 GB28181学习之路——SIP报文解析转换

由于某些原因没有用eXosip,于是自己tcpsocket建立连接并解析报文,osip安装的自己找找吧。解析代码如下:#include<osipparser2/osip_message.h>#include<osipparser2/osip_parser.h>int main(){ parser_init ();//必须要有这句话 char t...

2020-04-09 09:14:21 1684

原创 Qt自定义控件之动态数字Label+动态百分比背景

资源地址:https://download.csdn.net/download/qq_39805297/12028664话不多说直接上图一、动态数字的LabelNumberLabel::NumberLabel(QWidget * parent) :QLabel(parent), m_currNumber(0){ m_timeLine = new QTimeLin...

2019-12-12 15:20:12 1711

原创 基于openssl的3DES(ECB)加密算法

项目中需要用到就找了下,借鉴网上的一些代码,在加上自己的改良,得到了现在的代码,也解决了我的需求。附openssl安装教程https://blog.csdn.net/qq_39805297/article/details/100532833先说下,3DES加密算法有几种填充方式,比如zeropadding、pkcs5padding、pkcs7padding等等,我使用的pkcs7padd...

2019-10-30 10:02:05 1732

原创 vs使用nuget安装openssl

最近需要在项目中使用openssl,查了下资料发现了nuget这个方便的东西。可以直接为解决方案配置sdk环境。配置openssl所需的最低版本是vs2013。打开一个项目,点击 工具->NuGet包管理器->程序包管理控制台。例如vs2012,控制台中输入如下命令。可在 NuGet官网 查看Install-Package openssl -Version 1.0...

2019-09-04 09:49:55 972

原创 cmake编译时如何指定vs的版本

通常cmake编译命令cmake dir想要指定cmake版本在其后附加参数 -G 即可cmake dir -G "Visual Studio 11 2012"

2019-08-30 14:35:35 4120

原创 Qt Creator出现“启动程序失败,路径或者权限错误?”错误的解决办法

最近Qt creator项目会出现“启动程序失败,路径或者权限错误?”的报错,一个最简单的项目都无法执行。观察发现,项目在构建后目录中会出现可执行文件,但是在运行时文件就消失了,而且打印 程序丢失 类似信息。因为Qt总不至于把要运行的文件删除,所以猜测与安装的安全软件有关。退出了我的360安全卫士,程序正常运行了,完美!!!...

2019-08-27 17:47:20 1204

原创 windows下编译ffmpeg教程(for linux,库文件.a .o)

参考文章:https://blog.csdn.net/zhouyongku/article/details/44961447ffmpeg源码csdn下载链接:https://download.csdn.net/download/qq_39805297/11617400ffmpeg编译产物csdn下载链接:https://download.csdn.net/download/qq_39805...

2019-08-27 11:37:21 507

原创 QML中两个窗口切换,隐藏一个显示另一个

比如登录页和主页面,用 QQmlApplicationEngine 加载两个qmlQQmlApplicationEngine engine;engine.load(QUrl(QStringLiteral("qrc:/login.qml")));engine.load(QUrl(QStringLiteral("qrc:/MainWindow.qml")));在cpp代码中,隐藏一个,显...

2019-05-09 16:50:45 3687

原创 TypeError: Property 'xx' of object xx(0x3bfb34) is not a function

做进刚开始做QtQuick遇到了这个问题,在向QML注册C++对象是出现了这个错误。QML debugging is enabled. Only use this in a safe environment.file:///C:/Qt/QtPrj/build-visibleKitchen-Desktop_Qt_5_2_1_MSVC2012_32bit-Debug/qml/visibleKi...

2019-04-25 15:10:37 1900 1

原创 如何在Qt中调用activeX插件

如何在Qt中调用ocx插件,介绍可用的两种方法。先说第一种方法:使用QAxObject,设置插件的classid后就可以调用插件的方法了。QAxObject *flash = new QAxObject;flash->setControl(QString::fromUtf8("{C803CB4E-71F6-411D-8A93-770E19F3DFE5}"));QVarian...

2019-04-08 12:57:33 2157 2

原创 如何使QGraphicsScene的背景不平铺。

QGraphicsScene使用setBackgroundBrush加载图片作为背景的话,通常会出现背景平铺重复的问题,像这样:因为这个方法就是设置背景色的不是设置场景图片的方法,想要使背景不平铺开来的话,只要添加一个QGraphicsPixmapItem作为背景就可以了,简单有效。QGraphicsPixmapItem* bgItem = new QGraphicsPixmapIt...

2019-03-27 16:46:30 1788 2

原创 如何在QTableView中item被选中时,使其表头字体不变粗

经常在使用QTableView时选中item,会同时使表头出现字体加粗的高亮状态,像这样:的确不大好看,解决这个问题的方法:ui.tableView->horizontalHeader()->setHighlightSections(false);是不是好看多了呢。...

2019-03-27 16:33:35 3954

原创 去掉QTableView、QTreeView内item被选中时的虚线框

像这种虚线框有时看起来的确挺丑的,那么怎么去掉它呢只需要添加一行代码即可:ui.tableView->setFocusPolicy(Qt::NoFocus);修改后顺眼多了吧。

2019-03-27 16:07:05 4193

原创 Qt5项目,使用QWebEngineView替换QWebView

在Qt项目中,升级Qt版本时难免会遇到从QWebView到QWebEngineView的转换,他们之间的用法也多少有些变化。话不多说,下面是我遇到这个问题时的几个关键部分。一、Qt调用jsQWebView的方法是webview-&gt;page()-&gt;mainFrame()-&gt;evaluateJavaScript(cmd);QWebEnginePage的用法为w...

2019-01-10 14:59:22 6093 1

原创 qt+directshow usb摄像头及音频设备录制视频

最近来了个项目,有一块功能是usb摄像头录制视频并且录音的实现,网上的东西七七八八什么技术都有,先用opencv打了半天环境不能录音频,后来用ffmpeg,原谅我太菜,视频编码和格式让人头疼,不懂怎么移植到自己的程序中,后来用的directshow,希望大家少走些弯路。#include "PreviewController.h"std::string TCHAR2STRING(const TCHA...

2018-03-12 16:28:10 2829 4

rtsp2gb.tar.gz

流媒体转发 rtsp转ps

2021-01-04

vlcDemo.rar

Qt+vlc,在视频画面上覆盖半透明控件。示例为半透明按钮。 Qt+vlc,在视频画面上覆盖半透明控件。示例为半透明按钮。

2020-10-13

rtsp流转rtmp流

基于socket进行rtsp命令交互及拉流,分离h264,基于librtmp将h264封装为rtmp流。 适用于协议学习。

2020-09-02

GBPlayer.rar

接收PS流,分离出h264和aac,用ffmpeg分别解码成RGB图像和pcm音频流,使用qt进行实时播放。源码详见 https://github.com/cdebug/GBPlayer

2020-08-24

gb28181-ps解析h264.rar

基于jrtp,gb28181视频流,从ps流中解析提取h264保存成文件。

2020-07-01

vs2015编译ffmpeg产物

vs2015编译ffmpeg产物,包含各模块.h .lib 等 vs2015编译ffmpeg产物,包含各模块.h .lib 等

2020-06-03

ffmpeg-4.2.3编译后全量 for linux

ffmpeg-4.2.3编译后全量产物 for linux for linux for linux for linux

2020-05-27

基于osip的sdp文本解析

基于osip的sdp文本解析 sdp message parser

2020-04-27

libosip2-5.0.0+libexosip2-5.0.0

libosip2-5.0.0 libexosip2-5.0.0 sip开发工具包

2020-04-03

自定义控件-动态数字Label+动态百分比背景.rar

自定义控件-动态数字Label+动态百分比背景.rar自定义控件-动态数字Label+动态百分比背景.rar

2019-12-12

基于openssl的3DES加密算法

3DES加密算法,使用openssl库,ECB算法,pkcs7padding填充模式(借鉴网上的算法,并经过自己的改良,可以实现加密与解密)

2019-11-01

opencv_build.rar

windows先使用cmake编译opencv生成产物,包含头文件、静态库lib、动态库dll等。

2019-09-03

ffmpeg编译产物local.rar

ffmpeg源码编译后生成的产物,包含头文件、静态库(.lib)、动态库(.dll)等,欢迎大家下载。

2019-08-27

ffmpeg-snapshot-git.rar

官网上下载的ffmpeg源码,可用于编译ffmpeg,欢迎大家下载。

2019-08-27

inttypes.rar

解决 无法打开包括文件:“inttypes.h”的问题, 该错误是因为缺少这个文件。

2019-08-27

视音频编解码技术零基础学习

视音频编解码技术零基础学习,适合新手入门知识掌握学习

2019-04-30

带你吃透rtmp

rtmp协议,握手规则,交互顺序,数据包trunk结构的讲解,

2019-04-30

qt+directshow usb摄像头及音频设备录制视频的例子

qt+directshow usb摄像头及音频设备录制视频的例子,希望大家少走弯路。

2018-03-12

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

TA关注的人

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