- 博客(80)
- 收藏
- 关注
原创 zlmediakit windows 编译webrtc
打开cmake-gui,设置源代码和新建的build文件夹路径,点击Configure配置vs2022、x64。文件夹install,用于存放make install后的文件,如:D:\workplace\libsrtp-2.4.2\install。请优先检查环境变量,srtp2.dll是在编译libsrtp时生成的,在这个目录下D:\software\libsrtp-2.4.0\install\lib(我的路径)2.5.2、cmake-gui编译。2.2、cmake-gui构建。2、安装libsrtp。
2025-06-26 14:39:03
434
原创 wireshark分析国标rtp ps流
2.电话->RTP->RTP播放器 选择Export 里面的Payload 就可以导出原始PS流。1.将抓到的tcp或者udp视频流使用decode as 转为rtp包。
2025-05-30 09:40:15
599
原创 linux编译安装srs
点击进入 SRS控制台,可以查看相关详情,包括当前系统的内存CPU,当然最有用的还是查看当前的视频流参数,查看当前推流个数和用户点播个数。默认RTMP接收推流端口是1935,SRS管理页面端口是8080,可以通过修改conf/srs.conf文件进行变更。目前如果推流如上是H265码流,需要在Google浏览器上才能调用flv.js硬件解码,Edge点播失败。网址: http://192.168.31.14:8080/players/?网址: http://192.168.31.14.208:8080/
2025-05-19 15:53:50
450
原创 linux安装git
报错警告:/var/cache/yum/x86_64/7/endpoint/packages/perl-Git-2.43.0-1.ep7.noarch.rpm: 头V4 RSA/SHA1 Signature, 密钥 ID 703df089: NOKEY从 file:///etc/pki/rpm-gpg/RPM-GPG-KEY-endpoint-7 检索密钥。
2025-05-19 15:49:24
529
原创 Error: operand type mismatch for `vpclmulqdq‘
通过评论的升级centos7升级binutils就可解决。
2025-04-29 10:43:39
233
原创 libxml2 linux编译记录
libxml编译时问题解决记录_autoreconf: automake failed with exit status: 1-CSDN博客
2025-04-15 15:26:08
141
原创 linux下编译grpc
一、编译grpc源码(1)源码下载,这里准备好了源码连接,直接按下面链接源码和依赖库。链接: https://pan.baidu.com/s/1UcHkDLbMWb8yNsLEQh3Wxw 提取码: grpc。(2)安装必要依赖工具(3)安装cmake和gcc/g++本文主要用到cmake来进行编译,所以需要安装cmake和gcc/g++,注意需要保证cmake的版本大于3.15,gcc/g++的版本大于7.0如果已经安装的cmake,版本号低于3.15,先卸载再安装新的cmake。
2025-04-15 10:43:53
449
原创 protobuf-windows c++安装编译
打开刚刚选择的 编译生成目录,双击protobuf.sln,生成解决方案。编译完成后库文件会生成在Debug/Release目录下。这里使用的是 protobuf-3.21.12版本。在别的位置(工具安装位置)创建下面三个文件夹。
2025-04-09 09:53:47
478
原创 分布式系统
分布式其实也存在不少的问题,比如在系统性能上,虽然提高了吞吐量,但是由于服务见的调用链,导致一次请求的路径变长了,有多段网络通信,所以导致响应时间肯定是延长的,所以对于一些响应时间要求很高的业务往往很少用微服务架构,比如在某些游戏领域,后台有的还是单体架构,只是用了集群模式。单机其实很好理解,如上面集中式系统的图示,比如一个电商系统,最基本的需求,用户需要查看商品,所以需要对外提供商品服务,用户还需要查看物流信息,以及一些售后处理,所以系统还需要提供订单服务和物流服务。都集中在这个中心节点上处理。
2025-03-28 09:42:19
359
原创 FFmpeg6.1.1 MSYS2+GCC 源码编译
更改完成后,点击“Save按钮”,这里要注意更改完成后得要重新启动msys2_shell.cmd,设置才能生效。pacman -S mingw-w64-x86_64-SDL2 (64位SDL,生成64位ffplay播放器使用)pacman -S mingw-w64-i686-SDL2 (32位SDL,生成32位ffplay播放器使用)pacman -S mingw-w64-x86_64-toolchain (64位工具链)安装完成后,我们进入安装目录,打开msys2_shell.cmd。
2025-03-24 17:06:06
754
原创 优化FFmpeg编码器参数设置
-preset的参数主要调节编码速度和质量的平衡,有ultrafast、superfast、veryfast、faster、fast、medium、slow、slower、veryslow、placebo这10个选项,从快到慢。i_quant_factor = 0.1 // i 帧相对p帧的量化系数比, 值越小 , p帧的量化系数越大,视频越小。b_quant_factor = 4.9 // b 帧相对p帧的量化系数比,值越大,b帧的量化系数越大,视频越小。//说明:限制输出文件的profile。
2025-03-05 15:02:30
1150
原创 FFmpeg硬件编解码-C++
1、FFmpeg支持多种硬件加速类型,用于编解码视频,以提升性能和效率。以下是FFmpeg支持的主要硬件加速类型:NVIDIA NVENC/NVDEC:利用NVIDIA显卡进行视频编码(NVENC)和解码(NVDEC)。QSV:利用Intel处理器中的集成图形进行视频加速。AMD VCE VDA:利用AMD显卡进行视频编码和解码。VAAPI:适用于Intel和AMD硬件,通过通用的API接口进行硬件加速。VDPAU :主要用于NVIDIA显卡的硬件解码加速。
2025-03-05 14:58:16
1003
原创 Windows下使用ShiftMediaProject方法编译FFmpeg
6.用visual studio打开 ShiftMediaProject\source\FFmpeg\SMP\ffmpeg_deps.sln。目录下的 project_get_dependencies.bat , 因为上面这些主动下载的也不全,还需要使用这个脚本补充下载。如果下载失败,可以在https://github.com/ShiftMediaProject上找到对应失败的项目下载下来编译。和yasm安装脚本(需要使用管理员权限打开cmd执行安装脚本)下载完,再执行 \FFmpeg\。
2025-03-03 14:12:58
428
原创 ffmpeg源码编译支持cuda
在选择组件的时候,将CUDA中的Nsight VSE和Visual Studio Integration取消勾选。把cuda编译宏定义开启,再编译avcodec。2.编译ffmpeg。
2025-03-03 11:15:02
514
原创 RTMP协议分析
RTMP的应用场景主要集中在流媒体服务和实时传输中,以下是几个典型应用领域:直播平台:许多在线直播平台(如Twitch、YouTube Live)早期都采用RTMP协议推流,以实现低延迟、高质量的直播体验。视频点播:在点播场景下,RTMP可以有效减少视频加载时间,帮助用户快速启动视频播放。在线会议与教学:RTMP凭借其低延迟特性,在网络会议、在线教育等实时互动场景中也得到了应用。游戏直播与电子竞技:RTMP的实时性使得它在游戏直播和电竞比赛的实时转播中占据重要地位。
2025-02-27 10:08:34
732
原创 FFmpeg命令
如果你有一个单独的音频文件想要与视频合并,可以使用。),列出要合并的所有视频文件,格式如下:、合并没有中断的视频流(视频拼接)合并不同格式的视频文件(使用。调整视频的音频和图片的融合。创建一个文本文件(例如。
2025-02-21 14:04:22
510
原创 RGB彩色原理
饱和度:指的是颜色的纯度,即掺入白光的程度,或者说是指颜色的深浅程度,对于同一色调的彩色光,饱和度越深颜色越鲜明或说越纯。“索引”模式包含一个颜色表,如果原图像中的颜色不能用256色表现,则Photoshop会从可使用的颜色中选出最相近的颜色来模拟这些颜色,这样可以减少图像文件的尺寸。另外,GIF格式保存的文件不会占用太多的磁盘空间,非常适合网络传输,是网页中常用的图像格式。如果需要将一副彩色图像转换成黑白颜色的图像,必须先将其转换成“灰度”模式的图像,然后再转换成黑白模式的图像,即“位图”模式的图像。
2025-02-20 10:38:42
919
原创 H264 编码基本原理
每帧数据就是一个 NAL 单元。NAL 单元的实际格式如下每个 NAL 单元都是由 1 字节 NAL header 和 若干整数字节的原始字节序列负荷构成。
2025-02-14 14:55:03
819
原创 分辨率、帧率、码率
分辨率:(矩形)图片的长度和宽带,即图片的尺寸。影响图像大小,与图像大小成正比:分辨率越高,图像越大;分辨率越低,图像越小。帧率:影响画面流畅度,与画面流畅度成正比:帧率越大,画面越流畅;帧率越小,画面越有跳动感。码率:把每秒显示的图片进行压缩后的数据量。影响视频体积和清晰度,在其他参数不变的前提下,分辨率/码率/帧率分别代表什么?码率越大 体积越大 图像越清晰,码率越小 体积越小 图像越模糊。
2025-02-14 14:48:04
199
原创 FLV格式
(Flash Video)文件格式是一个流媒体文件格式,设计用于通过 Flash 播放器播放视频和音频。它由头部、主体和尾部组成,主体包含多个数据标签(视频、音频和元数据)。
2025-02-13 17:23:11
242
原创 eXosip和osip 下载编译
低版本依赖的OpenSSL较低,为了编译通过,禁用OpenSSL。OSIP_LIBS指定osip的动态库和静态库文件路径。使用编译选项--disable-openssl。OSIP_CFLAGS 指定osip头文件。
2025-02-12 11:15:35
269
原创 左值和右值
在 C++ 中,(lvalue)和(rvalue)是与表达式中对象的内存位置和生命周期相关的概念。这些概念对于理解 C++ 中的引用、资源管理(例如移动语义和完美转发)至关重要。
2025-02-07 10:13:32
251
原创 vs 编译错误 error C4996
编译出错:error C4996: 'Json::Reader::Reader': Use CharReader and CharReaderBuilder instead : 参见“Json::Reader::Reader”的声明。工程库连接错误,但是由于系统中此库已经存在,只能考虑库版本不一致问题。在此之间走了较多的弯路,eg:创建软连接,添加环境变量等。新版本已经标志Json::Reader::Reader为废弃接口,编译情况下可能会出错提示,根据编译器的不同,而提示不同。
2025-02-05 17:30:26
309
原创 【无标题】
(1)SPS和PPS是连续对出现的,后面可能紧跟着IDR片,也有可能是SEI(补偿增强信息单元),网上说使用ffmpeg编码yuv成h264时 SPS和PPS后面紧跟着的IDR。(3)AVC编码中的IPB帧概念相对应的是nalutype的1~5,单纯靠nalutype判断不出来IPB帧的类型。可以使用这个算法直接得出 type = nalubuf[4] & ((1 << 5) - 1);(2)H264码流封装成视频文件时比如FLV,SEI单元和SEI单元后面的第一帧一同处理。
2024-12-02 10:36:23
381
原创 音视频编解码(二) -- FLV
FLV(Flash Video)是公司推出的一种流媒体格式,由于其封装后的音视频简单等特点,非常使用于的使用. 目前主流的视频网站基本上都支持FLV,其格式封装的文件后缀为.flv。
2024-12-02 10:31:04
309
原创 音视频编解码(一) -- 基础
音频的压缩编码标准包含AAC,MP3,AC-3等等,视频的压缩编码标准则包含H.264,MPEG2,VC-1等等。封装格式种类很多,例如MP4,MKV,RMVB,TS,FLV,AVI等等,它的作用就是将已经压缩编码的视频数据和音频数据按照一定的格式放到一起。例如,FLV格式的数据,经过解封装操作后,输出H.264编码的视频码流和AAC编码的音频码流。:就是根据解封装模块处理过程中获取到的参数信息,同步解码出来的视频和音频数据,并将视频音频数据送至系统的显卡和声卡播放出来。
2024-12-02 10:16:10
191
原创 PS流学习
每个IDR NALU 前一般都会包含SPS、PPS 等NALU,因此将SPS、PPS、IDR 的NALU 封装为一个PS包,包括PS头,然后加上PS system header,PS system map,PES header + h264 raw data。即我们接收到的RTP 包首先需要判断负载类型,若负载类型为96,则采用PS 解复用,将音视频分开解码。0090行 00 00 01 40 是h265的vps(也就是I帧) 同时出现的还有 00 00 01 42 00 00 01 44。
2024-11-11 17:13:26
504
原创 ifconfig 和 ip addr
ifconfig:较旧,功能单一,显示信息简洁,不再推荐使用。ip addr:功能全面,支持 IPv6 和更复杂的网络配置,适合现代系统。在现代 Linux 系统中,推荐使用ip addr而不是ifconfig。
2024-10-18 11:04:08
734
原创 I帧、P帧、B帧
B帧是双向差别帧,也就是B帧记录的是本帧与前后帧的差别(具体比较复杂,有4种情况),换言之,要解码B帧,不仅要取得之前的缓存画面,还要解码之后的画面,通过前后画面的与本帧数据的叠加取得最终的画面。立刻刷新,所以IDR帧必须是一个I帧,但是I帧不一定是IDR帧,这个帧出现的时候,是告诉解码器,可以清除掉所有的参考帧,这是一个全新的序列,新的GOP已经开始。B帧法是双向预测的帧间压缩算法。当把一帧压缩成B帧时,它根据相邻的前一帧、本帧以及后一帧数据的不同点来压缩本帧,也即仅记录本帧与前后帧的差值。
2024-09-24 10:50:46
1040
原创 ZLMediaKit Windows编译以及使用
打开VLC播放器,依次选择菜单“媒体”→“打开网络串流”,在网络URL框中输入下列任一地址,观看能否正常播放视频画面。注意需要把上述地址中的“124.***.***.***”替换为流媒体服务器实际的公网地址,或者127.0.0.1。若想将本地视频通过RTMP协议推流给ZLMediaKit,则需执行以下命令。执行以下命令,将本地视频通过RTSP协议推流给ZLMediaKit。2.通过ffmpeg把视频源推流给ZLMediaKit。1.运行ZLMediaKit。
2024-09-18 15:44:37
1124
原创 C++继承问题
类中,派生类的析构函数不是虚函数,那么通过基类指针删除派生类对象时,将不会调用派生类的析构函数。而在你提供的代码中,的析构函数是默认的,并且它不是虚函数,所以不会调用。要确保派生类的析构函数被调用,你需要将基类。的析构函数声明为虚函数。
2024-09-10 15:12:02
329
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人