自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

记录分享自己的流媒体开发经验

知识因分享产生价值

  • 博客(31)
  • 收藏
  • 关注

原创 【obs-studio开源项目从入门到放弃】obs-studio项目简介和架构

文章目录前言一、obs-studio项目简介二、windows平台的编译步骤三、obs的核心线程obs视频渲染线程obs视频编码线程obs音频编码线程rtmp发送线程四、常用插件的介绍视频源视频文件win-dshow摄像头采集窗口采集文本渲染显示器采集monitor_captureduplicator_capture游戏捕获音频源wasapi_input_capturewasapi_output_capturewin-audio-capture输出源网络协议推流rtmp-outputsrt-output本地

2021-11-22 22:14:36 16187 6

原创 【obs-studio开源项目从入门到放弃】obs高级输出内存泄露

obs系列文章入口:obs-studio项目简介和架构obs高级输出的介绍: 【obs-studio开源项目从入门到放弃】obs 的高级输出 ffmpeg-output最近长时间推流测试发现,obs的高级输出存在内存泄露。泄露速度不是很快,大约每分钟泄露1M多内存,12个小时泄露700多M。但是如果长时间录制或者使用FFmpeg高级输出推流,会因内存泄露导致崩溃。obs-ffmpeg-output.c 在 receive_video() 和 receive_audio() 都调用了av_packet_all

2022-07-09 21:13:43 1138 1

原创 【obs-studio开源项目从入门到放弃】预览窗口中source的UI操作绘制处理

文章目录前言绘制选中框裁剪源拉伸源移动源总结前言obs-studio项目简介和架构:https://blog.csdn.net/qq_33844311/article/details/121479224在obs的预览窗口上可以对添加的源进行各种操作,比如移动、拉伸、裁切、复制。下面主要分析一下这些操作的处理逻辑。绘制选中框鼠标单击预览窗口添加的 source会绘制红色的选中框。在obs的渲染线程处理相关的绘制操作,具体参考下面的函数调用堆栈。> obs64.exe!DrawSquare

2022-04-18 21:32:02 2662

原创 【ffplay】视频的宽高比详解 -PAR、DAR 和 SAR

文章目录前言Pixel Aspect Ratio 像素纵横比Display Aspect Ratio 显示纵横比Sample Aspect Ratios 采样纵横比工程实战ffplay SDL渲染窗口宽高的计算技术参考前言在做播放器渲染的时候会遇到渲染图像拉伸的情况,一般遇到这种图像显示比例不正确,多半是没有正确处理视频的纵横比。简单介绍以下视频的三种纵横比,PAR、DAR 和 SAR,以及实际开发当中需要注意的情况。Pixel Aspect Ratio 像素纵横比像素是显示图像的最小单位,就是

2022-04-02 17:28:16 5517

原创 【FFmpeg】windows 使用 vs2019编译 FFmpeg - ShiftMediaProject

FFmpeg的源码如果能够使用 vs2019单步调试,这将是一件美事,极大方便阅读和调试整个 FFmpeg项目。

2022-03-30 16:37:48 4595 2

原创 【网络工具】使用 iperf测试 udp组播

文章目录下载iperf测试组播协议pc1 客户端发送组播包pc2 服务端接收组播包参数说明-B, --bind host 服务端专用参数-T, --ttl 客户端专用参数下载iperf官方下载地址:https://iperf.fr/iperf-download.php下载版本:iperf-1.7.0-win32注意:iperf2 iperf3 都不支持 udp组播测试测试组播协议以管理员权限启动 cmd 命令行pc1 客户端发送组播包iperf -c 239.0.0.67 -u --

2022-03-26 11:17:34 11863

原创 【ffmpeg命令】ffmpeg ffplay udp推拉流-单播-组播-广播

文章目录前言UDP 单播推拉流UDP 组播推拉流udp组播地址UDP 广播推拉流FFmpeg 推多路流FFmpeg 推流参数注释测试网络MTU大小FFplay 参数注释总结前言ffmepg 支持非常丰富的推流命令,简单介绍一下使用 ffmpeg 和 ffplay 在局域网使用 udp协议推拉流。UDP 单播推拉流# udp 单播推流ffmpeg.exe -re -stream_loop -1 -i .\JFLA.mp4 -vcodec copy -pkt_size 1300 -f h264 "u

2022-03-26 11:10:08 19953 3

原创 【流媒体协议】图解 MP4 协议 快速入门

一张图快速理解 MP4文件协议

2022-02-18 17:21:50 1188

原创 【流媒体协议】图解 FLV 协议 快速入门

文章目录前言FLV 格式FLV headerFLV BodyFLV tagVideo TagAudio TagScript Tagobs 打包 FLV打包 FLV header 和 Script Tag打包 Video Tag打包 Audio Tag总结推荐一个零声学院免费公开课程,个人觉得老师讲得不错,分享给大家:Linux,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK等技术内容,立即

2022-02-15 22:17:39 1729

原创 【FFmpeg入门到放弃】ffmpeg 整体架构和 example demo入门

文章目录前言命令行工具二次开发 sdk媒体解封装视频的编解码音频的编解码硬件解码媒体封装总结推荐一个零声学院免费公开课程,个人觉得老师讲得不错,分享给大家:Linux,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK等技术内容,立即学习前言做音视频开发必然要学习的一个开源项目那一定是 FFmpeg。我们可以使用 FFmpeg 来进行多种格式音频和视频的录制、转换、流处理功能。接下来用几

2022-02-11 21:55:29 2355

原创 【webrtc】demo 测试 peerconnection_server 和 peerconnection_client

文章目录前言启动服务器启动客户端1启动客户端2注意事项总结技术参考前言参考 vs2019 下载编译 WebRTC 最新源码编译完成后进入webrtc-checkout\src\out\project 目录,编译好的库文件和exe都在这个目录下面。peerconnection_server.exepeerconnection_client.exe启动服务器双击 peerconnection_server.exe 启动服务器控制台显示以下内容表示服务器启动成功(field_tria

2022-01-29 15:27:33 4152 5

原创 【webrtc】vs2019 下载编译 WebRTC 最新源码

文章目录准备工作0.配置git代理和系统代理1.下载depot_tools工具2.将 C:\depot_tools 添加到系统path环境变量3.管理员权限打开cmd,首次运行gclient自动更新工具,下载 Python、Git、ninja 等工具4.下载webrtc源码 保证磁盘空余空间10G+5.编译源码6.取消Git代理总结技术参考准备工作操作系统:windows 10安装 vs2019安装 win10 sdk 19041 一定勾选 Debugging Tools for Window

2022-01-25 11:48:11 2168 1

原创 【obs-studio开源项目从入门到放弃】windows 窗口采集和桌面采集的解决方案

文章目录前言窗口采集源和桌面采集源的注册窗口采集选择桌面采集方式 DXGI or WGC总结技术参考前言obs系列文章入口:https://blog.csdn.net/qq_33844311/article/details/121479224微软的窗口采集分主要是有以下 4种方式,obs的窗口采集和显示器采集使用了其中的3种。详细说明请参考文章最后的参考链接。GDIDXGIMagnificationWindow Graphics Capturer这里简单说明一下,GDI 窗口采集方式是

2022-01-19 22:36:17 10620 6

原创 【obs-studio开源项目从入门到放弃】obs 的高级输出 ffmpeg-output

文章目录前言底层原理ffmpeg-output 创建ffmpeg_output_create 创建ffmpeg-output 启动ffmpeg_output_start 启动音视频编码处理receive_audio 音频编码receive_video 视频编码ffmpeg-output 推流 | 录制write_thread 线程ffmpeg-output 停止ffmpeg_output_stop 停止总结技术参考前言obs系列文章入口:https://blog.csdn.net/qq_3384431

2022-01-15 16:58:20 4624

原创 【obs-studio开源项目从入门到放弃】obs aac opus 音频编码器的使用

文章目录前言音频编码器的创建创建音频编码器函数音频编码处理总结技术参考前言obs系列文章入口:https://blog.csdn.net/qq_33844311/article/details/121479224这篇文章介绍一下 obs-ffmpeg-audio-encoders.c 文件中的两个音频编码器。 支持的编码器有 AAC Opus 两种音频编码。这两种编码器的创建和使用都是基于 ffmpeg 的 libavcodec 相关 api需要注意的一点是这两个音频编码器只是作为直播网络流的音频

2022-01-12 15:58:50 3419 1

原创 【obs-studio开源项目从入门到放弃】obs 配置 srt推流

文章目录前言srt协议简介obs 配置srt推流srt的配置示例srs流媒体服务器配置srt服务播放 srt 流ffmpeg 推拉流 srt总结技术参考前言现在各大云厂商都支持上行 srt推流,利用 srt的低延迟、快速重传的特性减少用户卡顿和直播延迟。OBS Stuido 25.0 版本之后也支持了srt推流。这篇文章通过srs流媒体服务器和obs studio搭建一个srt的推拉流测试环境。OBS 是通过 FFmpeg的 libavformat 来支持 SRT。FFmpeg提供 libsrt的封

2022-01-11 15:30:39 4550 1

转载 【图像格式】关于YUV格式的一些总结

关于YUV格式的一些总结 一、YUV和YCbCr1、定义2、区别和联系 二、不同的采样格式1、YUV4442、YUV4403、YUV4224、YUV4205、YUV4116、YUV410 三、YUV数据排列格式1、四种数据排列方式①Planar Format②Semi...

2022-01-11 09:32:56 3412

原创 【ffplay播放器】ffplay 播放器整体架构

文章目录前言ffplay 简介ffplay中的线程主线程解复用线程 read_thread视频解码线程 video_thread音频解码线程 audio_thread音频播放线程总结技术参考前言ffplay 是入门播放器的非常合适的一个开源项目,支持本地视频文件播放,也支持网络流的播放。通过对 ffplay 的学习可以知道一个播放器如何工作的。这篇文章先整体介绍一下 ffplay 播放器的整体架构。从整体上对播放器的设计有个大概的了解。ijkplayer播放器内核是基于ffplay开发的,所以掌握 f

2022-01-08 22:31:46 2025

原创 【音视频技术栈】音视频学习路线规划

文章目录前言音视频的采集预处理编码封装传输解封装解码渲染常用开源项目和工具总结技术参考前言这篇文章简单聊聊我对音视频技术栈的理解,方便入门的同学做个参考。可以规划一下自己的学习路线。话不多说先上一张 XMind 截图音视频技术一句话简单来说就是通过网络将图像和声音从生产端分发给消费端的技术。可以是以点播的方式,也可以是直播的方式,也可以是像视频会议一样互动的方式。现在的网络流量一多半都是在传输音视频的数据,音视频相关的app几乎每个人都在使用,占据了大众娱乐的半壁江山。上面的截图类似于OSI网

2022-01-07 00:07:58 2320

原创 std::vector 使用 clear() 后崩溃 vector out-of-bound

文章目录前言windows VC平台下 std::vector operator[] 的实现Linux平台下 std::vector operator[] 的实现总结技术参考前言在使用腾讯云对象存储c++ sdk的时候,发现了分段下载api一个bug。由于不同平台的 std::vector 实现不一样,在windows平台分段下载的时候会触发崩溃。原因:std::vector 调用 clear()之后,vector 的 size 设置为 0,再通过 []下标方式访问访问 vector 的时候触发 o

2021-12-29 23:07:26 3259

原创 【obs-studio开源项目从入门到放弃】win-wasapi 音频的采集

文章目录前言win-audio-capture 应用音频输出捕获创建windows音频捕获插件音频捕获插件的初始化捕获的音频输出总结技术参考前言windows平台下obs官方自带的音频插件只有一个 win-wasapi ,负责采集扬声器和麦克风的声音。win-audio-capture 应用音频输出捕获这里推荐一个非官方的音频捕获插件 win-audio-capture,可以采集指定进程的音频输入到obs。obs论坛:https://obsproject.com/forum/threads/wi

2021-12-25 19:06:01 5053 1

原创 【obs-studio开源项目从入门到放弃】ffmpeg_muxer 视频的录制(flv-mp4-ts-srt-udp-tcp)

文章目录前言ffmpeg_muxer的创建启动视频录制ffmpeg_mux_start 真正启动视频录制的函数ffmpeg_mux_data 音视频包输出到管道函数write_packet 写管道操作obs-ffmpeg-mux.exe 进程写文件总结技术参考前言obs系列文章入口:https://blog.csdn.net/qq_33844311/article/details/121479224obs支持非常丰富的视频格式的录制,底层是基于ffmpeg的api实现的视频文件的录制。不仅支持本地视

2021-12-22 15:37:57 2610 2

原创 【obs-studio开源项目从入门到放弃】obs中 x264编码器的使用

文章目录前言x264编码器的创建obs_x264_create() 创建x264编码器x264编码视频帧obs_x264_encode() 编码一帧视频x264低延迟编码参数的设置总结技术参考前言obs系列文章入口:https://blog.csdn.net/qq_33844311/article/details/121479224目前使用最广泛的视频编码格式依然是h264编码,开源的编码库有x264、 OpenH264,obs-studio使用的libx264编码,webRTC使用OpenH264

2021-12-22 00:05:50 2571

原创 【obs-studio开源项目从入门到放弃】obs媒体源 ffmpeg_source 分析

文章目录前言媒体源的创建媒体源输出音频帧和视频帧media-playback 封装了操作媒体源的apimp_media_next_video() 输出解码后的视频帧mp_media_next_audio() 输出解码后的音频帧媒体源的控制总结技术参考前言obs支持添加各种容器格式的视频文件,音频文件(mp4、flv、mp3、ts),也支持添加网络流(rtmp,srt,rtsp,udp)。本质上obs是基于ffmpeg的libavformat库提供解码能力播放媒体视频。只要是obs的依赖ffmpeg库支

2021-12-11 23:00:32 4699

原创 【obs-studio开源项目从入门到放弃】obs rtmp推流插件 rtmp_output源码解析

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言1.rtmp_output 推流源的创建创建启动rtmp_output的入口 OBSBasic::StartStreaming()2.rtmp推流线程的启动rtmp_stream_start 开始推流connect_thread 连接线程3.rtmp发送线程工作内容send_thread负责音视频包发送发送音视频包调用堆栈总结技术参考前言obs系列文章入口:https://blog.csdn.net/qq_3384431

2021-12-10 16:52:45 3922 1

原创 【obs-studio开源项目从入门到放弃】audio_thread 音频编码线程理解

文章目录前言1.音频编码线程的创建时机2.音频编码线程的工作内容3.音频编码线程与rtmp输出线程之间的配合4.总结技术参考前言obs系列文章入口:https://blog.csdn.net/qq_33844311/article/details/1214792241.音频编码线程的创建时机2.音频编码线程的工作内容3.音频编码线程与rtmp输出线程之间的配合4.总结技术参考视频技术参考: https://ke.qq.com/course/3202131?flowToken=10409

2021-12-09 11:37:19 3211

原创 【obs-studio开源项目从入门到放弃】video_thread 视频编码线程理解

文章目录前言1.视频编码线程的创建时机video_output_open函数创建视频编码线程2.视频编码线程的工作内容video_output_cur_frame 线程真正的工作函数详细解释cached_frame_info的两个字段的含义3.视频编码线程与rtmp输出线程之间的配合4.总结技术参考前言obs系列文章入口:https://blog.csdn.net/qq_33844311/article/details/121479224上一篇文章分析了obs的视频渲染线程的前世今生,这篇我们还是按

2021-12-06 21:40:27 1505

原创 【obs-studio开源项目从入门到放弃】obs_graphics_thread 视频采集渲染线程理解

文章目录前言obs-studio调试前的准备工作视频渲染线程的创建时机视频渲染线程的工作内容视频渲染线程与视频输出线程的配合总结前言obs-studio解决方案中的libobs是整个项目的核心库,负责视频的渲染,图像的混合、视频的输出,音频的混音输出,各种插件的加载,其中包含着以下线程视频的渲染线程 obs_graphics_thread视频输出线程 video_thread音频输出线程 audio_thread快捷键控制线程 obs_hotkey_thread推理重连线程 reconne

2021-12-04 09:58:29 2221

原创 【obs-studio开源项目从入门到放弃】windows10使用vs2019编译obs-studio

文章目录1.编译前的准备2.下载github仓库源码以及子目录3.使用cmake-gui生成obs-studio的vs2019解决方案4. 注意事项1.编译前的准备官方编译文档:https://github.com/obsproject/obs-studio/wiki/Install-Instructions1.win10sdk最低版本:Windows 10 SDK (minimum 10.0.20348.0) 下载win10sdk2.Qt版本:Qt 5.15.23.cmake版本最低3.16.

2021-11-24 21:02:12 4970 9

原创 使用soundtouch开源库实现ffplay倍速播功能

文章目录一、SoundTouch音频处理库的编译windows版本编译步骤克隆项目代码vs2019编译soundtouch静态库和动态库二、封装soundtouch库变速接口对soundtouch库进行c风格api封装,提供变速接口给ffplay调用头文件:soundtouch_wrap.h实现文件soundtouch_wrap.cpp三、ffplay调用soundtouch实现倍速播放参考一、SoundTouch音频处理库的编译soundtouch项目官网 https://www.surina.ne

2021-11-19 17:25:52 2255

原创 基于ijkplayer实现低延迟直播播放器

这里写自定义目录标题欢迎使用Markdown编辑器新的改变前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用

2021-11-18 09:55:01 1895 4

空空如也

空空如也

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

TA关注的人

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