fdsafwagdagadg6576
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
WebRTC中Fec实现
FEC报文构建、FEC掩码构造和丢失数据包恢复ForwardErrorCorrection::EncodeFec()主要:如2.2.1中所介绍的,随机丢包和突发丢包下fec组包模式不同,所以webrtc准备了两张mask表 kFecMaskRandom(随机丢包), kFecMaskBursty(突发丢包)去生成mask, 调用internal::GeneratePacketMasks()去生成mask 根据mask和packet, 调用GenerateFecPayloads()生成fec包原创 2022-01-12 23:21:19 · 507 阅读 · 0 评论 -
Ubuntu下搭建Janus Server
下载源码https//github.com/warmcat/libwebsockets/tags,这里下载3.2.2。下载源码https//github.com/meetecho/janus-gateway这里下载0.11.5版本。cert=/etc/nginx/cert/app.pem//测试安装,用上面生成的证书。下载源码https//github.com/cisco/libsrtp/releases/tag/v2.2.0。但建立连接时会比较慢。......转载 2022-07-27 15:26:46 · 855 阅读 · 0 评论 -
拥塞控制Qos 备份
2.3 实时音视频录制与白板录制同步回放机制教育场景下,如何进行实时音视频录制和白板录制同步回放?由于白板通讯基于TCP,实时音视频基于UDP,两者相互独立。用户基于白板SDK进行白板数据的传输,基于音视频SDK进行音视频通话,这就要解决如何进行跨系统之间的录制文件的同步回放问题。首先,白板服务器集群和音视频服务器集群要基于NTP同步服务器进行时间同步操作,即做到离散服务器之间的系统时间一致。其次,需要制定一个合理的同步方案,即在白板录制文件和MP4文件里增加同步字段(NTP时间).原创 2021-11-30 22:18:16 · 297 阅读 · 0 评论 -
网络编程汇总
你可以把这个socket 看成是一个特殊的文件(好比登记表), 当有新的连接进来的时候, 都可以通过 accept 系统调用让操作系统接受一个新的连接, 同时返回一个新的socket, 这个socket 是绑定在(本机ip,本机port,对端ip,对端port) 这个上面的, 也就是对应了一个unique的连接.端口只是在操作系统中用来区分一个连接和另一个连接的其中一个项(剩下的还有本机ip,对端ip,和对端port), 因此和真正的通信并无太大关系, 你一定是把它想象成了和网卡的出口类似的东西.原创 2022-09-12 17:23:51 · 293 阅读 · 0 评论 -
libnice 源码分析
对应的janus 应用层,如何将不同的流区分还没完全想好。应该是在下面的函数中的某个参数绑定。libnice 接收数据&callback给janus。原创 2022-08-28 14:44:40 · 431 阅读 · 0 评论 -
webrtc 编译
webrtc 编译原创 2022-08-07 22:50:46 · 239 阅读 · 0 评论 -
linux webrtc 环境搭建常见问题
1 下载代码,需要翻墙或者ftp上去2 编译就是webrtc使用libc++. 二次开发的clang,g++使用libstd++,造成找不到调用函数under define XXX3 debug: 编译的时候release版本造成只能找到符号表,找不到源码。改成debug版本。二次开始debug libwebrtc.a也是可以进入源码的,.........原创 2022-06-03 22:58:33 · 447 阅读 · 0 评论 -
VOIP使用单端口替换动态端口池进行UDP通信
做过VOIP的同学都知道,基于UDP实现RTP包收发时需要进行SDP协商或者ICE协商,通常服务器都是用一个端口池来和客户端进行RTP包的转发,而当前的网络环境下,开放端口池给运维带来了维护的风险,也给部分代理场景下带来了实现的复杂度,所以如果使用一个端口用来做媒体数据包的转发,那带来了极大的便利;这种单端口的实现受限于操作系统内核句柄和客户端的分发实现,可能存在数据混乱的情况,只能作为一个思路而已,更好的单端口实现还是需要在协议报文中识别是不同的用户,然后分发给不同的组或者目标;...转载 2022-08-07 13:59:30 · 393 阅读 · 0 评论 -
freeswtich 草稿杂
一、基本概念(1)Sofia-sip:FreeSwitch使用了比较成熟的开源的SIP协议栈。(2)EndPoint:互联协议接口模块。如SIP、H232.(3)mod_Sofia:实现了SIP中的注册服务器、重定向服务器、媒体服务器等各种功能。他的定位是一个B2BUA,不能实现代理服务器。(4)SIP profile:在mod_sofia中,SIPprofile相当于SIPUA,通过不同的配置参数配置一个UA的行为.每个SIP profile可以监听不同的IP地址和端口。(5)GetWay:一个原创 2022-05-13 18:02:11 · 299 阅读 · 0 评论 -
x264材料搜集
x264使用:https://blog.youkuaiyun.com/weixin_45736829/article/details/108399051x264 encode函数源码1.x264是编码器,将原始数据(例如YUV420P)编码成h.264标准的原始视频流(ES流)2.FFmpeg为多媒体库,里面有音频、视频的解析、解码、编码以及其他功能的大量API可以给你使用。FFmpeg可以调用x264编码,也可以通过其他编码器编码(例如nvenc英伟达显卡编码器)ffmpeg:https://zhuanlan.原创 2022-05-08 15:13:14 · 580 阅读 · 0 评论 -
最简单的基于DirectShow的示例:视频播放器自定义版
=====================================================最简单的基于DirectShow的示例文章列表:最简单的基于DirectShow的示例:视频播放器最简单的基于DirectShow的示例:视频播放器图形界面版最简单的基于DirectShow的示例:视频播放器自定义版最简单的基于DirectShow的示例:获取Filter信息=====================================================转载 2022-04-20 11:32:29 · 513 阅读 · 0 评论 -
Webrtc 发送和接收草稿
WebRTC线程关系和数据流WebRTC对外提供两个线程:Signal和Worker,前者负责信令数据的处理和传输,后者负责媒体数据的处理和传输。图1 WebRTC线程关系和数据管线发送端:Capture线程从摄像头采集原始数据,得到VideoFrame;接下来原始数据VideoFrame从Capture线程到达Worker线程,Worker线程起搬运工的作用,没有对数据做特别处理,而是转发到Encoder线程。Encoder线程调用具体的编码器(如VP8, H264)对原始数据Vide..原创 2022-04-13 09:11:38 · 242 阅读 · 0 评论 -
RTCP草稿
WebRTC 用于提升 QoS 的方法:NACK、FEC、SVC、JitterBuffer、IDR Request、PACER、Sender Side BWE、VFR(动态帧率调整策略)原创 2021-07-13 17:12:55 · 424 阅读 · 0 评论 -
GPUimage实现filter和源码分析
1 GPUimage 使用2 GPUimage 源码GPUimagefilter,GPUimagegroupGPUimageFilter.java, GPUimageFilterNative.java.gpu_image_filter.ccOpengGL的API和着色器工作流程:1,通过OpenGL客户端的API(就是我们编写的代码)把各种顶点数据传到内存/GPU显存;2、顶点着色器经过原始程序集之后,分配到对应的顶点数据;3、光栅化,即正方体经过MVP矩阵映射到屏幕上之后,变.原创 2022-04-02 22:16:08 · 753 阅读 · 0 评论 -
如何理解深度学习中的卷积? 从卷积到滤镜到深度学习
有太多的公开课、教程在反复传颂卷积神经网络的好,却都没有讲什么是“卷积”,似乎默认所有读者都有相关基础。这篇外文既友好又深入,所以翻译了过来。文章高级部分通过流体力学量子力学等解释卷积的做法在我看来有点激进,这些领域恐怕比卷积更深奥,所以只需简略看看即可。卷积现在可能是深度学习中最重要的概念。正是靠着卷积和卷积神经网络,深度学习才超越了几乎其他所有的机器学习手段。但卷积为什么如此强大?它的原理是什么?在这篇博客中我将讲解卷积及相关概念,帮助你彻底地理解它。网络上已经有不少博客讲解卷积和深度学习中的卷转载 2022-03-27 22:48:36 · 278 阅读 · 0 评论 -
GLSL 介绍草稿
loadShader,glCreateProgram(create 着色器&程式),glAttachShader,glLinkProgram原创 2022-03-17 20:56:01 · 210 阅读 · 0 评论 -
Android终端Qos
原创 2022-03-20 09:44:22 · 4735 阅读 · 0 评论 -
Windows终端推流sdk流程
分成3个部分:CLiveCurlDownloadFile.cpp:新增部分;CURL层是外部通信接口,用于Janus通信。 发送request,将respond结果通过内容windows post-get机制发送给conductConductor.cc :webrtc example 的通信接口;通过window postmessage--getmessage实现内部发送接收消息PeerConnec...原创 2022-03-15 18:12:03 · 4550 阅读 · 0 评论 -
Android 录屏流程图
采集部分录屏不同于主播,采集采用setOnFrameAvailableListener---onFrameavaliable,而不是onPreviewFrame.其他部分和直播系统一样原创 2022-03-11 21:07:18 · 2327 阅读 · 1 评论 -
Android终端推流--ShareContext
下面这个结构图太给力了.分成surfaceTexture和Opengl 两个部分GLES又分成普通渲染和离屏渲染。这里使用离屏渲染,输出两个方向codec和surfaceViewEGL-->OPENGL filter基础知识要想使用OpenGL ES,一般包括如下几个步骤: (1)EGL初始化 (2)OpenGL ES初始化 (3)OpenGL ES设置选项&绘制 (4)OpenGL ES资源释放(可选) (5)EGL资源释放...原创 2022-03-05 20:25:44 · 759 阅读 · 0 评论 -
Android终端推流--滤镜Filter处理
占位留用原创 2022-03-10 22:56:39 · 3696 阅读 · 0 评论 -
Android 终端推流-采集
占位留用原创 2022-03-10 22:55:53 · 2158 阅读 · 0 评论 -
Android 终端推流-整体
1 控制系统:启动线程启动TextureMoiveEncode线程和TestThread线程。TextureMoiveEncode线程用于将采集的图片encode.TestThread 打包发送encode的图片2 video 流程图采集+filter==>encode==>发送1) 采集和filter部分参见:2)handleMessage消息处理中心: 将采集的图片进行硬编码.swapBuffers 等于queueInputBuffermInputWind原创 2022-03-10 22:54:36 · 861 阅读 · 0 评论 -
Directshow 采集-截屏和显示
示意图:1采集部分:以黄色函数为中心;使用SampleGrabber com控件采集Camera->SampleGrabber->自定义callback1)devfilter,sampleGrabberfilter,renderfiler create&addfilter2) set SampleGrabber callback buffer3) start Capturenotes:filters之间使用pin连接(一个filter out连接下一个f...原创 2022-02-26 23:30:40 · 491 阅读 · 0 评论 -
Directshow 理论篇
Following diagram shows the architecture of a typical capture graph for a three-pin camera driver.ICaptureGraphBuilder2 interface, which contains methods for building and controlling a capture graph.原创 2022-02-22 22:38:21 · 331 阅读 · 0 评论 -
Janus 浏览器推流分析(janus前端源码分析)
1 消息时序图2 流程图17个steps介绍黄色是采集,棕黄播放,绿色是offer,红色是发送接收接口3 源码分析浏览器端1、创建webrtc对等连接方法。 1 2 3 letpc =newPTCPeerConnection({ iceServers: [{ urls: ’stun:stun.l.google.com:19302’ }] }) 2、通过浏览器api创建流(开启摄像头、桌面截屏...原创 2022-02-22 14:31:36 · 923 阅读 · 0 评论 -
DirectShow介绍和使用
一.使用directshow时应该添加lib文件Strmiids.lib,Quartz.lib,Strmbase.lib具体添加那个见下面说明二 DirectShow初探DirectShow只是DirectX的一个子集。DirectX中还包括DirectSound、Direct3D等集合。DirectShow主要用来处理一些与音视频有关的多媒体任务,比如音视频采集、回放等。过年回来后,在一个项目中要求在WIN32下采集视频信号,以前做过GDI的,不过效率低下,而且效果也很烂,所以...转载 2022-02-19 23:33:07 · 5006 阅读 · 0 评论 -
bug fix
下面blog:”遇到问题“部分FFMpeg杂音问题解决方案_翻肚鱼儿的博客-优快云博客_ffmpeg 噪音视频压缩和翻转ffmpeg滤镜(二十二)_翻肚鱼儿的博客-优快云博客ffmpeg-给视频添加字幕(二十四)_翻肚鱼儿的博客-优快云博客_ffmpeg字幕...转载 2022-02-17 22:59:16 · 159 阅读 · 0 评论 -
FFmpeg 源码
ffmpeg学习总结_great_sea的博客-优快云博客原创 2022-02-15 23:38:44 · 1119 阅读 · 0 评论 -
FFmpeg example:视频tanscoding转码
转码的基本原理就是先解码后编码对于音频转码可以参考opus to aac视频转码可以参考:最简单的基于FFmpeg的内存读写的例子:内存转码器_雷霄骅(leixiaohua1020)的专栏-优快云博客_qmin是什么意思这里的转码增加了filter.网上有个流程图,从decode--filter--encode比上图简洁明了可以没有filter直接转码,增加filter就是可以对decode的buffer进行操作,然后再编码filter使用流程图:https://blog.csdn...原创 2022-02-14 23:26:42 · 770 阅读 · 0 评论 -
FFMpeg example:Filter详解
1 filter使用刘歧:FFmpeg Filter深度应用_LiveVideoStack-优快云博客ffmpeg学习二:《FFmpeg Basics》读书笔记(上)_阳光玻璃杯-优快云博客_ffmpeg 书android端采用FFmpeg进行视频剪切、转码与添加水印_徐福记456-优快云博客_android ffmpeg 水印2 filter 实现最简单的基于FFmpeg的AVfilter例子(水印叠加)_雷霄骅(leixiaohua1020)的专栏-优快云博客_ffmp...原创 2022-02-14 23:25:49 · 1248 阅读 · 0 评论 -
FFMpeg Example实例合集
examples/scaling_video.cffmpeg学习十三:图像数据格式的转换与图像的缩放_阳光玻璃杯-优快云博客原创 2022-02-14 23:15:26 · 852 阅读 · 0 评论 -
播放器资料
void fill_audio(void *udata,Uint8 *stream,int len){...... SDL_MixAudio(stream,audio_pos,len,SDL_MIX_MAXVOLUME);}int main(int argc, char* argv[]){ // Find the first audio stream audioStream=-1;//对于只有音频与视频流的媒体文件来说nb_streams=2 fo...原创 2022-02-11 23:47:13 · 211 阅读 · 0 评论 -
FFMpeg example:封装和解封装demux
(1)使用bitstream filter处理每个AVPacket(简单)把每个AVPacket中的数据(data字段)经过bitstream filter“过滤”一遍。关键函数是av_bitstream_filter_filter()。示例代码如下。AVBitStreamFilterContext* h264bsfc = av_bitstream_filter_init("h264_mp4toannexb");while(av_read_frame(ifmt_ctx, &pk...转载 2022-02-11 23:46:35 · 1320 阅读 · 0 评论 -
最简单的基于FFMPEG+SDL的视频播放器 ver2(采用SDL2.0)
流程图FFmpeg解码一个视频流程如下图所示:SDL2.0显示YUV的流程图:对比SDL1.2的流程图,发现变化还是很大的。几乎所有的API都发生了变化。但是函数和变量有一定的对应关系:SDL_SetVideoMode()————SDL_CreateWindow()SDL_Surface————SDL_WindowSDL_CreateYUVOverlay()————SDL_CreateTexture()SDL_Overlay————SDL_Texture不再一一例举。转载 2022-02-11 16:09:23 · 396 阅读 · 0 评论 -
FFMpeg example:音频转码
//packed 2个channels的字节数;Planar 每个channel 各自的linesize[0]表示各自的字节数 int pcm_linesize = participant->frame_opus->linesize[0]; //int line_size_aac = pcm_linesize*1024/960; float *a, *b; int len2; //960 sample转1024 sample.剩下的长度 len...原创 2022-02-10 18:05:26 · 1503 阅读 · 0 评论 -
Webrtc dtls 流程图
原创 2022-02-07 09:51:28 · 485 阅读 · 0 评论 -
Janus源码分析:janus_plugin_push_event
janus_plugin_push_event:输入是videoroom 等plugin.自身是业务逻辑出口,将结果转给下一阶段。下一阶段可能转给relay thread,可能转给http通信层.作用: 3个部分1 sdp 处理并发送给http 通信层 2 非sdp消息直接发送给http通信层3 relay消息发给relay线程。relay消息和1,2消息没有任何关联。应该写成一个独立函数janus_plugin_push_event调用janus_ice_setup_local 建..原创 2022-02-06 09:34:05 · 432 阅读 · 0 评论 -
Rtmp协议实现
Rtmp协议看一篇就够了_fdsafwagdagadg6576的专栏-优快云博客rtmp 封装h264需要应用层处理, librtmp仅仅负责connect&sendrtmp 协议封包Rtmp协议看一篇就够了_fdsafwagdagadg6576的专栏-优快云博客实现代码audiovideovideoheader://videoTagHeaderpacketBody[iter++] = 0x17; // 1:keyframe 7:AVCpacketBo..原创 2022-02-05 23:23:02 · 852 阅读 · 0 评论 -
FFmpeg音频解码流程笔记
音频解码整个实例引入分析----to doFFmpeg开发笔记(七):ffmpeg解码音频保存为PCM并使用软件播放_长沙红胖子Qt C++ Linux Arm-优快云博客_ffmpeg 解码音频函数说明:和视频解码流程大致相同,只是改了业务逻辑步骤六:申请重采样结构体 此处特别注意,基本上解码的数据都是pcm格式,pcm格式也分很多种,若8位整形,无符号8为整形,32位浮点,带P和不带P的,不带P的数据真存储为LRLRLRLR,带P的为LLLLRRRR,还有单通道、双通..原创 2022-02-05 15:59:02 · 709 阅读 · 0 评论