百问 - 音视频
文章平均质量分 68
知识积累
M百问
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
数字视频介绍
这是一份循序渐进的视频技术的介绍。尽管它面向的是软件开发人员/工程师,但我们希望对任何人而言,这份文档都能简单易学。这个点子产生于一个视频技术新手小型研讨会期间。本文档旨在尽可能使用浅显的词语,丰富的图像和实际例子介绍数字视频概念,使这些知识能适用于各种场合。你可以随时反馈意见或建议,以改进这篇文档。自己动手”需要安装 docker,并将这个 repo clone 到你的计算机。./setup.sh注意:当你看到./s/ffmpeg或。原创 2026-03-28 00:26:03 · 365 阅读 · 0 评论 -
SDL 2播放YUV视频文件
【代码】SDL 2播放YUV视频文件。原创 2026-01-16 10:32:29 · 555 阅读 · 0 评论 -
rtsp中的base64
sprop-parameter-sets 包含了H.264解码所必需的序列参数集(SPS) 和图像参数集(PPS),它们以逗号分隔,并采用 Base64 编码。解码后,我们得到原始的字节序列:00 00 01aO48gA==。原创 2025-11-19 09:47:30 · 363 阅读 · 0 评论 -
zlmediakit nginx srs 做为流媒体服务器的区别
首先,我们需要明确这三者的“出身”和核心定位,这决定了它们的设计哲学和适用场景。ZLMediaKit出身: 由国内开发者(ZeroLogic)主导开发,采用 C++11 编写。核心定位: 高性能、高可靠性、跨平台的流媒体服务框架。它从一开始就致力于支持多种协议(RTSP/RTMP/HLS/HTTP-FLV/WebSocket-FLV/GB28181等),并特别注重作为安防监控、物联网(IoT) 等场景的媒体网关或服务器。它的设计非常模块化,代码质量高。关键词:。原创 2025-11-12 15:59:40 · 855 阅读 · 0 评论 -
RTMP、HTTP-FLV、HLS 的主要区别是什么
从协议设计的理论层面讲,RTMP 和 HTTP-FLV 的流式传输模式决定了它们的延迟应该在同一个量级(1-3秒)。但在实际应用中,HTTP-FLV 通常能做到比 RTMP 更低、更稳定的延迟,主要原因有三点:”连接建立效率:HTTP-FLV 基于 HTTP,一次简单的握手即可开始传输数据;而 RTMP 需要三次握手,在网络差时重连慢,增加了初始延迟。网络环境友好性:HTTP 是标准协议,穿透防火墙和代理的能力极强,不会被错误拦截或限制,保证了传输的稳定性。。原创 2025-11-12 15:56:20 · 748 阅读 · 0 评论 -
RTMP 协议的三次握手和 TCP 的三次握手
现在我们来详细拆解。原创 2025-11-12 15:53:33 · 837 阅读 · 0 评论 -
为什么从rtsp拉取的媒体流,每个流的rtp时间戳都不是从0开始的
摄像头 A 随机到 0x3c5a1234,摄像头 B 随机到 0x9f00abcd,即使它们同一时刻出帧,RTP 时间戳也不同,接收端靠 RTCP SR 各自映射到 NTP 即可,不会把两路流当成同一条。只要拿到每个流的 SR,就可以把任意一个 RTP 时间戳换算成绝对时钟(NTP)时间,然后再把不同流的数据对齐到同一个时间轴,后面再按解码/渲染时钟做平滑播放即可。两条流都这样做,相当于强行把 b 设为 0,误差就被压缩到“第一帧到达时间差”以内(通常 0–50 ms)。原创 2025-11-12 13:56:33 · 887 阅读 · 0 评论 -
opencv4实现磨皮美颜,并结合ffmpeg直播推流
在OpenCV4中实现实时的磨皮美颜并推流到直播服务器。流程图如下:fill:#333;color:#333;color:#333;fill:none;摄像头视频捕获美颜处理管线人脸与皮肤检测磨皮与美白细节增强与融合处理后的帧编码与推流FFmpeg子进程RTMP服务器观众端播放。原创 2025-10-25 16:39:43 · 1056 阅读 · 0 评论 -
opencv4实现磨皮美颜
OpenCV4 提供了强大的图像处理功能来实现自然的磨皮美颜效果。原创 2025-10-25 16:37:23 · 958 阅读 · 0 评论 -
用ngix搭建rtmp流媒体服务器
安装编译依赖首先,确保你的系统(如CentOS或Ubuntu)已安装必要的编译工具和库。这些是编译Nginx及其RTMP模块的基础 。获取源码需要下载Nginx源代码和模块的源码 。编译安装Nginx进入Nginx源码目录,在配置阶段添加RTMP模块,然后进行编译和安装 。默认安装路径通常是 。安装完成后,需要编辑Nginx的配置文件(通常为 ),在其中添加RTMP相关的配置。基础RTMP配置在文件的根部,与已有的块平级,添加配置块,定义一个基础的直播应用 。可原创 2025-10-25 16:25:25 · 768 阅读 · 0 评论 -
视频清晰度:静态码率比动态码率更优秀吗?
简言之:同码率上限下,VBR能让视频“该清晰的地方更清晰,该省码率的地方不浪费”,最终呈现的清晰度更高;CBR则是“所有场景用一样的码率,导致好场景不够用、差场景用不完”,清晰度更差。在码率上限完全相同的前提下,原创 2025-08-22 16:04:37 · 1859 阅读 · 0 评论 -
去区块滤波器的原理
去区块滤波器通过分析块边界特征→判断滤波必要性→选择性修正边界像素的流程,有效消除量化导致的块效应。它是H.264等标准中平衡压缩效率与主观质量的关键技术,尤其在低码率场景下能显著改善视频观感。原创 2025-08-07 10:16:09 · 480 阅读 · 0 评论 -
比较H.264 的两种封装:AnnexB 和 AVCC
Annex B是H.264标准中由ITU-T定义的封装格式,广泛用于广播电视、实时流媒体等场景(如TS流、RTP传输)。AVCC模式(由ISO/IEC 14496-15定义)是另一种封装格式,主要用于文件存储(如MP4、MOV容器)。Annex B:依赖起始码分隔NALU,参数集随码流传输,适合实时流媒体。AVCC:依赖长度字段分隔NALU,参数集单独存储,适合文件存储。原创 2025-08-07 09:35:33 · 1158 阅读 · 0 评论 -
马赛克问题: 检查QP值是否过高
QP越高→量化越粗→块效应越明显。通过工具检查QP分布,若确认高QP区域与马赛克区域一致,可通过降低初始QP、优化码率控制或增强滤波等方式缓解。实际应用中需在码率预算与图像质量之间找到平衡,避免为追求低码率而过度提高QP。原创 2025-08-07 09:26:05 · 773 阅读 · 0 评论 -
H264熵编码如何存储矩阵为二进制
二维矩阵→一维序列(zig-zag扫描);用游程编码压缩连续0,得到“(游程,值)”符号对;按符号概率分配最短二进制码(熵编码),拼接为最终比特流。这一过程充分利用了变换后数据的统计特性(大量0、少数非零值),实现了极高的压缩效率。原创 2025-08-07 09:13:27 · 426 阅读 · 0 评论 -
正向矩阵(DCT)变换后还是一个矩阵,怎么减少存储空间
正向矩阵变换本身不直接减少数据量,但它通过能量集中为后续的量化和熵编码提供了基础——让大部分数据变成可高效压缩的0,最终实现存储空间的大幅减少。变换是“预处理”,量化和熵编码是“压缩执行”,两者结合才能实现高效存储。原创 2025-08-07 09:11:39 · 378 阅读 · 0 评论 -
转封装 vs 转码的时间基转换
表示25fps),用于将时间戳转换为真实时间(秒)。时间基是FFmpeg中时间戳的单位,表现为分数形式(如。原创 2025-07-01 10:31:50 · 633 阅读 · 0 评论 -
RK3288解码视频时遇到的奇葩问题
用rk3288做视频显示,qt界面是1024x768,在切换视频源时,屏幕偶尔会出现亮线,位置在屏幕的正中间。解决方法是将qt的界面设置为1023x767,完美解决。原创 2025-06-30 09:39:42 · 172 阅读 · 0 评论 -
SDL_Surface、SDL_Renderer、 SDL_Texture之间的关系
SDL_Surface 用于存储图像数据,通常在 CPU 内存中处理静态图像。可以通过SDL_LoadBMP 等函数加载图像,也可以通过修改像素来处理图像。它不直接支持硬件加速。SDL_Texture 是从 SDL_Surface 或其他图像源创建的纹理对象,存储在 GPU 内存中,用于硬件加速的渲染。它不能直接操作像素数据,只能通过 SDL_Renderer 进行渲染。SDL_Renderer 是负责在屏幕上进行渲染的对象,控制着图像渲染的过程。原创 2024-12-24 15:35:34 · 900 阅读 · 0 评论 -
GStreamer-0.10-至-1.0-移植指南
不再有同步版本的阻塞,这通常很危险,如果需要,可以使用回调来实现。GST_TYPE_DATE -> G_TYPE_DATE GST_VALUE_HOLDS_DATE(值) -> G_VALUE_HOLDS(值,G_TYPE_DATE) gst_value_set_date() -> g_value_set_boxed() gst_value_get_date() -> g_value_get_boxed()gst_tag_list_new() 已重命名为 gst_tag_list_new_empty()。原创 2024-12-04 15:27:36 · 1052 阅读 · 0 评论 -
FLV 文件格式说明
FLV (Flash Video)文件格式是一个流媒体文件格式,设计用于通过 Flash 播放器播放视频和音频。它由头部、主体和尾部组成,主体包含多个数据标签(视频、音频和元数据)。原创 2024-11-15 14:42:26 · 859 阅读 · 0 评论 -
MP4容器中moov box与faststart、empty_moov之间的关系
moov定义了MP4文件的元数据信息,在MP4文件中有且仅有一个,moov里面包含的子box作为描述媒体数据的信息的容器。这些元数据信息被存储在不同类型的子box中。MP4标准中描述的moov与mdat的存放位置前后并没有强制要求,所以有时moov被存放在mdat的后面,有时moov被存放在mdat的前面。在互联网的视频点播中,如果希望MP4文件被快速打开,则需要将moov存放在mdat的前面,如果放在后面,需要将MP4文件下载完成后才可以进行播放。原创 2024-11-15 13:50:55 · 1063 阅读 · 0 评论 -
MP4格式标准介绍
而trak中定义了多媒体文件中的一个track的信息,track指的是多媒体文件中可以独立操作的媒体单位,例如一个声道是一个track,一个视频流也是一个track。一个媒体文件可以包含多个track,每个track都是独立的,有自己的时间和空间占用的信息。mdia box包含了有关媒体轨道(如音频、视频等)的详细信息,对应一个轨道中的媒体内容。它是强制性的,包含描述单个轨道的特性的元数据。moov本质上是其他box的一个容器,这些box组合在一起描述了多媒体的内容。moov定义了MP4文件的元数据信息。原创 2024-11-15 10:07:28 · 1266 阅读 · 0 评论 -
音频采样数据格式
音频信号在模拟到数字转换时,会涉及到多个关键参数,如采样率、位深度、通道数等。原创 2024-11-13 09:19:09 · 1974 阅读 · 0 评论 -
mpeg ps媒体流文件解析工具
自己写的一个简单的mpeg ps媒体流文件解析工具,好在可以随时修改。原创 2024-11-13 01:22:46 · 406 阅读 · 0 评论 -
网络视频流解码显示后花屏问题的分析
rtp打包的ps视频流发送到客户端后显示花屏。原创 2024-09-07 13:01:06 · 1834 阅读 · 0 评论 -
h264 视频流中添加目标检测的位置、类型信息到SEI帧
在 H.264 视频编码中,SEI(Supplemental Enhancement Information)消息用于传输额外的、非编码的数据,例如目标检测的信息。SEI 数据可以嵌入到 H.264 流中,以在解码过程中传递这些附加信息。原创 2024-09-06 11:22:11 · 1457 阅读 · 0 评论 -
SDL 与 OpenGL 的关系
OpenGL 和 SDL 是两个不同的库,但它们可以配合使用来创建图形应用程序。原创 2024-08-12 17:32:35 · 1419 阅读 · 0 评论 -
onvif中文乱码问题
gSOAP 根据 WSDL 文件生成客户端和服务端代码。在生成代码后,需要手动修改生成的代码,确保在所有的 SOAP 消息创建和处理代码中设置使用 UTF-8 编码模式。在使用 gSOAP 开发 SOAP 客户端和服务端时,确保所有涉及到 SOAP 消息的地方都设置了正确的编码模式,避免因为编码不一致而导致通信问题。在 gSOAP 的使用中,可以使用。,即 UTF-8 编码模式。函数来设置编码模式为。原创 2024-08-02 19:01:52 · 271 阅读 · 0 评论 -
ffmpeg滤镜-添加文字-cpp
错误,通常是由于 FFmpeg 未正确编译或缺少支持 drawtext 滤镜的库。在使用 FFmpeg 时,确保它是用 libfreetype 支持编译的。通过以下命令来检查 FFmpeg 是否支持。如果在编译 FFmpeg 时没有使用。时,如果遇到这个错误,说明。这通常是因为没有安装。原创 2024-07-03 18:30:24 · 1120 阅读 · 0 评论 -
GB28181平台注册问题
经过排查,发现在md5校验的时候用到一个数据结构,将typedef unsigned long int UINT4改为typedef unsigned int UINT4后注册成功。在开发28181程序的时候遇到一个问题,同一版程序编译到arm设备上可以向平台注册,编译到x86电脑上向平台注册失败。原因是arm设备是32位系统,x86是64位,导致校验不通过。原创 2024-05-24 11:29:39 · 241 阅读 · 0 评论 -
h265码流封装ps流,遇到的问题
通过国标28181向平台注册,回放功能需要将录像文件(265)打包成ps流发送到媒体服务器,前期实现的时候采用的是264格式,已经实现回放功能,后面改为了265格式,再次对接另一个平台的时候,录像播放失败。原创 2024-05-24 10:31:41 · 819 阅读 · 0 评论 -
jrtplib解析rtp数据包问题
在开发GB28181程序的时候,用到jrtplib接收rtp数据包,同一版程序在电脑虚拟机中可以解析rtp数据,但是在arm设备上解析失败。原因是大小端字节序的问题,一般x86用小端字节序(little endian),而嵌入式平台一般用大端字节序(big endian)。需要修改rtpstructs.h文件中的大小端。原创 2024-05-24 11:45:45 · 310 阅读 · 0 评论
分享