自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

tong5956的专栏

厚德载物,博学敦行

  • 博客(151)
  • 资源 (6)

原创 gcc算法

Network Working Group H. LundinInternet-Draft S. HolmerIntended status: Informational H. Alvestrand, Ed.Expires: October 27, 2012 .

2020-09-23 10:16:57 50

原创 swift学习笔记1

import Cocoavar someInts:[Int] = [10, 20, 30]for index in someInts { print( "index 的值为 \(index)")}for index in 2...10 { print("\(index) 乘于 5 为:\(index * 5)")}// 使用字符串字面量var stringA = "Hello, World!"print( stringA )// String 实例化var s.

2020-09-03 16:41:51 46

原创 DtlsSocket源码分析

DtlsSocket::DtlsSocket(DtlsSocketContext* socketContext, enum SocketType type): mSocketContext(socketContext), mSocketType(type), mHandshakeCompleted(false) { ELOG_DEBUG("Creating Dtls Socket"); mSocketCont...

2020-09-02 15:17:53 39

原创 DtlsSocketContext源码分析

const char* DtlsSocketContext::DefaultSrtpProfile = "SRTP_AES128_CM_SHA1_80";X509 *DtlsSocketContext::mCert = nullptr;EVP_PKEY *DtlsSocketContext::privkey = nullptr;static const int KEY_LENGTH = 1024;static std::mutex* array_mutex;DEFINE_LO...

2020-09-02 15:16:28 26

原创 SrtpChannel源码分析

bool SrtpChannel::initialized = false;boost::mutex SrtpChannel::sessionMutex_;constexpr int kKeyStringLength = 32;uint8_t nibble_to_hex_char(uint8_t nibble) { char buf[16] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', ...

2020-09-02 15:12:32 22

原创 NicerConnection源码分析

static bool nicer_initialized = false;static std::mutex nicer_initialization_mutex;static int nr_ice_crypto_openssl_random_bytes(UCHAR *buf, int len) { RAND_bytes(buf, len); return 0;}static int nr_ice_crypto_openssl_hmac_sha1(UCHAR *key, int...

2020-09-02 15:08:45 17

原创 LibNiceConnection源码分析

void cb_nice_recv(NiceAgent* agent, guint stream_id, guint component_id, guint len, gchar* buf, gpointer user_data) { if (user_data == NULL || len == 0) { return; } LibNiceConnection* nicecon = reinterpret_cast<LibNiceConnection*>(user.

2020-09-02 15:06:57 49

原创 DtlsTransport源码分析

对DtlsTransport源码分析:TimeoutChecker::TimeoutChecker(DtlsTransport* transport, dtls::DtlsSocketContext* ctx) : transport_(transport), socket_context_(ctx), check_seconds_(kInitialSecsPerTimeoutCheck), max_checks_(kMaxTimeoutChecks), schedul

2020-09-01 16:07:24 35

原创 libnice调用流程分析

libnice常用函数调用流程:#include <agent.h>guint stream_id;gchar buffer[] = "hello world!";gchar *ufrag = NULL, *pwd = NULL;gchar *remote_ufrag, *remote_pwd;GSList *lcands = NULL;// Create a nice agent, passing in the global default GMainContext.N

2020-08-31 15:57:46 114

原创 windows dump分析步骤

windbg调试步骤:1、指定pdb路径:SRV*C:\symbols*http://msdl.microsoft.com/download/symbols;PDB目录2、加载dump文件3、切换上下文:.ecxr4、查看堆栈:kp5、分析:!analyze -vvs2015调试步骤:首先把dump文件放到软件安装目录下1、设定符号路径2、运行3、崩溃中断4、浏览源文件...

2020-08-28 15:27:13 23

原创 OneToManyProcessor源码分析

对OneToManyProcessor模块分析: DEFINE_LOGGER(OneToManyProcessor, "OneToManyProcessor"); // OneToManyProcessor的构造函数 OneToManyProcessor::OneToManyProcessor() : feedbackSink_{nullptr} { ELOG_DEBUG("OneToManyProcessor constructor"); } // OneToMan.

2020-08-28 14:54:06 50

原创 ffmpeg遇到Non-monotonous DTS in output stream的问题

在执行命令行:./ffmpeg -f concat -safe 0 -i filelist.txt out.mp4遇到如下问题,得到的文件音频某一段没有声音:[mp4 @ 00000249e9f01480] Non-monotonous DTS in output stream 0:1; previous: 36963852, current: 36597661; changing to 36963853. This may result in incorrect timestamps in t

2020-08-28 12:11:43 469

原创 MediaStream源码分析(三)

MediaStream有点难懂的部分:// pipeline_读取传进来的packetvoid MediaStream::onTransportData(std::shared_ptr<DataPacket> incoming_packet, Transport *transport) { if ((audio_sink_ == nullptr && video_sink_ == nullptr && fb_sink_ == nullptr)) {

2020-08-27 17:58:13 53

原创 MediaStream源码分析(二)

继续对MediaStream进行分析:// 初始化log_stats,统计状态信息void MediaStream::initializeStats() { log_stats_->getNode().insertStat("streamId", StringStat{getId()}); log_stats_->getNode().insertStat("audioBitrate", CumulativeStat{0}); log_stats_->getNode().

2020-08-27 16:09:31 26

原创 MediaStream源码分析(一)

针对MediaStream进行分析:// MediaStream构造函数MediaStream::MediaStream(std::shared_ptr<Worker> worker, std::shared_ptr<WebRtcConnection> connection, const std::string& media_stream_id, const std::string& media_stream_label, bool is_pu

2020-08-27 15:47:01 60

原创 WebRtcConnection源码分析(三)

WebRtcConnection源码分析,分析每个函数的作用// 异步加入远端candidateboost::future<void> WebRtcConnection::addRemoteCandidate(std::string mid, int mLineIndex, std::string sdp) { return asyncTask([mid, mLineIndex, sdp] (std::shared_ptr<WebRtcConnection> connec

2020-08-26 18:03:28 46

原创 WebRtcConnection源码分析(二)

// 设置远端sdp信息boost::future<void> WebRtcConnection::setRemoteSdpInfo( std::shared_ptr<SdpInfo> sdp) { std::weak_ptr<WebRtcConnection> weak_this = shared_from_this(); auto task_promise = std::make_shared<boost::promise<void&g.

2020-08-26 17:12:57 25

原创 WebRtcConnection源码分析(一)

licode的核心WebRtcConnection模块,起到拉流的作用DEFINE_LOGGER(WebRtcConnection, "WebRtcConnection");// webRtcConnection的构造函数// 参数worker,io_worker,conection_id, ice_config, rtp_mappings, ext_mappings,listenerWebRtcConnection::WebRtcConnection(std::shared_ptr<

2020-08-26 15:52:49 66

原创 Licode服务与启动过程分析

licode需要手动启动的服务有四个,这四个服务之间通过mq相互调用和通信nuve.js,用于资源管理、数据库管理#!/usr/bin/env bashset -eSCRIPT=`pwd`/$0FILENAME=`basename $SCRIPT`PATHNAME=`dirname $SCRIPT`ROOT=$PATHNAME/..NVM_CHECK="$ROOT"/scripts/checkNvm.shCURRENT_DIR=`pwd`. $NVM_CHECKcd $P

2020-08-15 15:23:00 80

原创 webrtc打开和关闭麦克风

打开麦克风:关闭麦克风:

2020-05-29 17:36:57 420

原创 webrtc打开和关闭摄像头

打开摄像头:关闭摄像头:

2020-05-29 17:23:45 625

原创 ffmpeg读取文件时长(单位为秒)

GetFileDuration(){ fileUrl=$1 duration_line=`./ffmpeg -i $fileUrl 2>&1 | grep 'Duration'` duration_1=${duration_line%%,*} duration_2=${duration_1%%.*} duration_3=${duration_2#*:} echo $duration_3 durationList=(${duration_3//:/ }) duration_s.

2020-05-22 14:02:09 81

原创 音视频抗丢包技术

声网抗丢包处理的ppt,摘抄一部分:

2020-05-21 16:57:02 147

原创 webrtc 自动增益AGC源码分析(一)

webrtc的自动增益模块在agc_legacy_c工程下:analog_agc.c analog_agc.h digital_agc.cdigital_agc.h gain_control.h主要函数包括:WebRtcAgc_AddMicWebRtcAgc_AddFarendWebRtcAgc_GetAddFarendErrorWebRtcAgc_VirtualMicWebRtcAgc_UpdateAgcThresholdsWebRtcAgc_SaturationCtrl.

2020-05-20 19:48:30 506

原创 webrtc代码结构阅读

Peerclient.cc 核心文件PeerClientFactory.cc核心文件视频采集代码在 modules->video_capture->video_capture_internal_impl中Video_capture_module是接口层(api)文件夹里,主要包含了webrtc的虚基类接口(audio)文件夹里,audio工程,包含音频传输接收发...

2020-03-24 11:08:52 103

原创 vs2017环境下webrtc的下载与编译配置

由于webrtc最新版本,加入了新的降噪模块,这里对最新版本进行下载与编译配置1、安装vs2017,在官网上下载2、下载depot_toolshttp://dev.chromium.org/developers/how-tos/install-depot-tools3、下载安装windows 10 sdk目前我使用的版本 sdk 版本号 最好为 1...

2019-12-16 15:43:16 212 1

原创 使用JS渲染C++视频流

JS通过C++打开摄像头,并采集得到的数据回传到JS,渲染到web端,实现方式如下:1、通过V8引擎将采集的数据以Buffer数组形式回传2、在cavas画布或webgl上渲染该数据例如:var c=document.getElementById("myCanvas");var ctx=c.getContext("2d");var imgData=ctx.createImage...

2019-10-23 15:45:50 485

原创 webrtc视频内容传输

1、main.js核心代码: const videoTracks = stream.getVideoTracks(); const audioTracks = stream.getAudioTracks(); if (videoTracks.length > 0) { console.log(`Using video device: ${videoTracks[0...

2019-10-10 19:23:29 498

原创 webrtc打开默认音频设备

1、main.js核心代码:navigator.mediaDevices.getUserMedia(constraints).then(handleSuccess).catch(handleError);/* * Copyright (c) 2015 The WebRTC project authors. All Rights Reserved. * * Use of t...

2019-10-09 18:02:28 301

原创 webrtc打开默认摄像头

1.main.js核心代码: const stream = await navigator.mediaDevices.getUserMedia(constraints);/* * Copyright (c) 2015 The WebRTC project authors. All Rights Reserved. * * Use of this source code i...

2019-10-09 17:57:29 345

原创 webrtc选择摄像头麦克风

最近在阅读webrtc的使用方法,这里将对其做一个总结1、main.js文件核心代码: if (window.stream) { window.stream.getTracks().forEach(track => { track.stop(); }); } const audioSource = audioInputSelect.va...

2019-10-09 17:50:57 431

原创 Open WebRTC Toolkit Media Server的配置和使用

Open WebRTC Toolkit Media Server地址:https://github.com/open-webrtc-toolkit/owt-server.git## Open WebRTC Toolkit Media ServerThe media server for OWT provides an efficient video conference and stre...

2019-08-15 15:24:57 2113

原创 WebRTC音频降噪使用

webrtc的ns原理:把启动前50帧的数据拿来构建噪声模型,把启动前200帧的信号强度用来计算归一化的频谱差值计算。根据这两个模型使用概率目的函数来计算出每帧的信噪比并区分出噪声和声音,然后根据计算出的信噪比在频域使用维纳滤波器对噪声信号进行噪声消除,最后在根据降噪前后的能量比和信号噪声似然比对降噪后的数据进行修复和调整后输出。在研究webrtc的降噪模块,这里简述如何使用webrtc的降噪...

2019-03-08 19:41:40 1422 2

原创 webrtc源码分析系列-peerclient的视频解码及渲染流程

webrtc源码分析系列-peerclient的视频解码及渲染流程webrtc源码分析系列-peerclient的音频解码及播放流程webrtc源码分析系列-peerclient的视频采集、编码、封装及网络发送流程webrtc源码分析系列-peerclient的音频采集、编码、封装及网络发送流程1、RTP网络视频包获取流程2、视频包解封装解码渲染过程...

2019-02-21 09:26:05 958 3

原创 webrtc源码分析系列-peerclient的音频解码及播放流程

webrtc源码分析系列-peerclient的视频解码及渲染流程webrtc源码分析系列-peerclient的音频解码及播放流程webrtc源码分析系列-peerclient的视频采集、编码、封装及网络发送流程webrtc源码分析系列-peerclient的音频采集、编码、封装及网络发送流程1、网络RTP音频数据包的获取2、音频解码及播放流程...

2019-02-21 09:25:56 856

原创 webrtc源码分析系列-peerclient的视频采集、编码、封装及网络发送流程

webrtc源码分析系列-peerclient的视频解码及渲染流程webrtc源码分析系列-peerclient的音频解码及播放流程webrtc源码分析系列-peerclient的视频采集、编码、封装及网络发送流程webrtc源码分析系列-peerclient的音频采集、编码、封装及网络发送流程1、视频图像采集、编码、封装流程2、RTP视频数据包网络发送流程...

2019-02-21 09:25:48 1037

原创 webrtc源码分析系列-peerclient的音频采集、编码、封装及网络发送流程

webrtc源码分析系列-peerclient的视频解码及渲染流程webrtc源码分析系列-peerclient的音频解码及播放流程webrtc源码分析系列-peerclient的视频采集、编码、封装及网络发送流程webrtc源码分析系列-peerclient的音频采集、编码、封装及网络发送流程1、音频采集、编码、封装流程2、音频RTP包网络发送流程...

2019-02-21 09:25:36 1079 1

原创 webrtc源码分析系列-peerclient的视频编码器设置流程(VP9)

webrtc源码分析系列-peerclient的视频解码及渲染流程webrtc源码分析系列-peerclient的音频解码及播放流程webrtc源码分析系列-peerclient的视频采集、编码、封装及网络发送流程 webrtc源码分析系列-peerclient的音频采集、编码、封装及网络发送流程1、这里分析了编码器的选择和编码器的创建过程 2、编码流程图(VP9编码方...

2019-02-21 09:25:14 755

原创 项目管理之整合管理

项目管理:使用知识、技能、工具和方法,计划、实施与监督研发活动,以达到项目目标,制约的因素:在规定的时间内,在规定的费用内,达到规定的质量五个工程组:启动过程、规划过程、执行过程、监控过程和收尾过程项目经理:多面的角色,需要懂得项目的技术问题,但不一定是技术专家,最重要的是整合,通过沟通来协调,通过协调来整合,在相互竞争的多方面之间取得平衡。项目整合管理包括为识别、定义、组合、统一与协...

2019-01-15 17:11:53 366

原创 webrtc源码分析系列-API模块之Audio_codecs(二)-G711编解码模块

承接上一篇:webrtc源码分析系列-API模块之Audio_codecs(一)的核心工厂代码Builtin_audio_encode_factory.cc,分析其中的AudioEncoderG711类的创建过程这里分析了G711的编码模块,流程图如下:在AudioEncoderG711类中的方法MakeAudioEncoder调用到了AudioEncoderPcmU类和Aud...

2018-12-21 16:57:47 387

intel_media_sdk_2018_r2

最新intel media sdk 2018 R2,包含hevc,超高清编码。

2018-11-06

android-ndk-r10e-linux-x86_64

Android的ndk包,版本android-ndk-r10e-linux-x86_64,运行下64位操作系统下

2018-09-20

人工智能标准化白皮书

人工智能白皮书,介绍前沿内容和当前国内人工智能发展现状,和待解决的问题。

2018-01-30

深度学习经典资源下载

深度学习书籍下载,入门的经典书籍,可以下载学习的。

2018-01-30

libiconv的下载

libiconv用于做字符转码方面的事情,下载后对其直接使用即可

2018-01-30

ucrtbased下载

ucrtbased用于vs2015在运行下会出现少库的情况,把该库下载放在系统的sysWOW64目录下

2018-01-30

空空如也

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