自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(35)
  • 资源 (9)
  • 收藏
  • 关注

原创 Ubuntu下源码编译安装FreeSwitch

在Ubuntu下源码编译安装freeswitch

2023-07-13 09:58:38 253

原创 opensips安装及配置

debian10下安装及配置opensips3.1,服务器使用apache

2023-02-03 16:53:57 1686

原创 H264相关

摘要你妹啊

2022-12-29 16:48:50 97

原创 webrtc中的transport

即底层收到数据后要触发SignalReadPacket从而调用OnReadPacket,在RtpTransport::OnReadPacket()中又会调用其虚函数OnRtpPacketReceived(),虚函数,对象,RtpTransport对象中直接能获取到P2PTransportChannel的数据,见 RtpTransport::SetRtpPacketTransport()中的信号槽连接。如果启用dtls则先建立dtls连接,建立dtls连接后收到数据也是直接抛给了RtpTransport。

2022-09-26 19:30:42 481

原创 webrtc中的p2p代码的使用

3 对端收到,判断role类型,如果冲突则与远端对比tie breaker值来判断本端应该是什么角色,谁大谁是controlling,同时controlling端要发送487响应给对端,对端根据这个来修改其role为controlled。2 发送bind request的请求里要包含ice-controlling这个属性,且属性里要有Tie breaker字段。1 一开始两端都把自己设置为controlling。结合webrtc代码我们可以单独使用其p2p模块。

2022-09-26 11:12:35 332

原创 PeerConnection中对SDP的认证过程

在PeerConnection中无论是SetLocalDescription还是SetRemoteDescription,里面的第一个都是对SDP进行认证检测即调用ValidateSessionDescription,在ValidateSessionDescription中主要对如下三个方面进行了认证:1 加密信息认证2 ice信息认证3 m-section中track个数进行认证。...

2022-08-31 14:45:16 348

原创 裁剪sdp中编解码器信息

在使用peerconnection进行rtc开发时,其默认生成的sdp信息中有比较多的H264编码器信息,这会导致sdp内容略大如何在不修改webrtc内部代码的前提下精简H264编码信息,方法很简单,我们只需定义。

2022-08-31 09:34:45 229

原创 从SDP说起

SDP的介绍可以直接看相关的文档rfc8866,里面对SDP进行了定义,并且网上也有很多优秀的文章,本文仅对一个示例进行分析,标识出个人觉得需要注意的地方。

2022-08-29 17:15:31 175

原创 webrtc中视频采集后到发送过程

VideoStreamEncoder::OnFrame |VideoStreamEncoder::MaybeEncodeVideoFrame |VideoStreamEncoder::EncodeVideoFrame | VideoSender::AddVideoFrame | VCMGenericEncoder::Encode | H264EncoderImpl::Encode | .

2022-01-20 17:33:23 2018 1

原创 webrtc中Transport-CC带宽计算流程

基于丢包RTCPReceiver::IncomingPacket |RTCPReceiver::TriggerCallbacksFromRtcpPacket |BitrateControllerImpl::OnReceivedRtcpReceiverReport |SendSideBandwidthEstimation::UpdateReceiverBlock |SendSideBandwidthEstimation::UpdatePacketsLost |SendSideBandw.

2022-01-20 17:26:24 2414

原创 webrtc中音视频数据传递过程

webrtc中拉流时rtp数据传递过程

2022-01-14 17:09:52 1545

原创 数据是怎样被分离到DataChannel中的

将数据分离到datachannel中

2022-01-13 19:09:09 1383

原创 DataChannel的被动创建之sctp_transport_的创建

DataChannel的被动创建之sctp_transport_的创建

2022-01-12 18:33:19 191

原创 DataChannel的被动创建

webrtc中datachannel的被动创建过程

2022-01-12 17:10:44 151

原创 ffmpeg推送fps不正确

使用ffprobe -show_streams rtmp://xxxxxxxx结果为:其中fps和tbr应该差不多,但时间确是上图结果原因:没有设置stream的avg_frame_rate方法:1av_opt_set(m_pStreamInfo.pVideoStream->priv_data, "tune", "zerolatency", 0);2pVideoStream->avg_frame_rate.num = m_pStreamInfo.sVide...

2021-10-25 15:03:59 711

原创 PeerConnectionFactory的创建(二)

MediaEngine的创建函数:文件 : media\engine\webrtcmediaengine.cc类名 : cricket::WebRtcMediaEngineFactorystatic MediaEngineInterface* Create(....);WebRtcMediaEngineFactory声明:class WebRtcMediaEngineFactory{ public: // Create a MediaEngineInterface with o

2021-08-02 10:25:38 138

原创 PeerConnectionFactory的创建(一)

名称:PeerConnectionFactory作用:创建PeerConnection及全局相关的变量文件:pc\peerconnectionfactory.cc核心成员变量及类型:std::unique_ptr<cricket::ChannelManager> channel_manager_;std::unique_ptr<rtc::BasicNetworkManager> default_network_manager_;st

2021-07-30 14:36:40 433

原创 webrtc中音频帧时间戳的打印

采集时封装格式AudioFrame:见Channel::ProcessAndEncodeAudioOnTaskQueue()audio_input->timestamp_ = _timeStamp; //_timeStamp初始值为 0 _timeStamp += static_cast<uint32_t>(audio_input->samples_per_channel_);audio_input->timestamp_的值为采样个数的累加,以48000采样率为例

2021-04-26 14:11:38 492

原创 使用SDL_CreateWindowFrom创建支持OpenGL的SDL_Window方法

转自:https://jingyan.baidu.com/article/19192ad8e7a530e53e5707c2.html

2021-04-25 14:52:24 1950 2

原创 webrtc中视频帧时间戳的打印

封装形式:webrtc::VideoFrame时间戳:uint32_t timestamp_rtp_; rtp时间戳 默认为 0 编码前赋值int64_t ntp_time_ms_; ntp时间 默认为 0 编码前赋值int64_t timestamp_us_; 采集时系统时间 采集时赋值传输过程:VideoBroadcaster::OnFrame -> VideoStreamEncoder::OnFrame

2021-04-23 17:18:54 876

原创 简单记录一个问题:hls m3u8 ts播放往后跳数据的问题

播放到第二个ts文件的一半的时候,ffmpeg会去拉取第四个ts文件,并且会失败,同时会清理没播放完毕的第二个文件剩余部分,然后开始播放第三个文件的开始,导致跳了很多数据帧(第二个ts剩余部分),这是由于ffmpeg-4之后添加了 http_multiple 属性导致,http_multiple : Use multiple HTTP connections for fetching segments 见hls.c即建立多个链接去拉取ts文件,解决方法:av_dict_set(&format

2021-03-09 20:53:31 892 1

原创 mac下摄像头热拔插检测方法

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(processAddDeviceEventWithNotification:) name:AVCaptureDeviceWasConnectedNotification object:nil];[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(processR.

2020-06-12 15:51:25 824

原创 WebRtc 音频采集到编码

本文以Windows下采集音频到发送给编码器为例,介绍了从数据采集到将数据传递给编码器这个过程的数据传递流程,同时梳理了webrtc中音频相关的channel之间的关系。在此仅以图形的方式做一个记录。1 传递流程2 AudioTransportImpl::RecordDataIsAvailable流程图3 各个channel之间关系4 BaseChann...

2019-12-10 17:00:03 1076

原创 WebRtc中定义类似传统thread的使用方式

在创建好Thread对象后,调用Start(rtc::Runnable *runnable)接口启动时,设置runnable参数:如果runnable = NULL,则线程使用自带的消息处理函数ProcessMessage,通过向线程Post消息来执行任务如果runnable 不为空,则线程使用runnable的Run()函数作为其线程函数,通过实现Runnable接口的Run()函数实现...

2019-11-28 10:37:04 697

原创 WebRtc 音频编码器

WebRtcVoiceEngine在初始化时收集了当前支持的编码器列表,其步骤如下:void WebRtcVoiceEngine::Init(){ send_codecs_ = CollectCodecs(encoder_factory_->GetSupportedEncoders());}获编码器工厂支持的编码方式encoder_factory_->GetSup...

2019-11-27 15:01:10 1054

原创 WebRtc AllocationSequeue类随笔

AllocationSequeue类成员变量:BasicPortAllocatorSession *session_;NetWork *network_;PortConfiguration *config_;UDPPort *udp_port_;AsyncPacketSocket *udp_socket_;...

2019-11-27 13:51:50 229

原创 WebRtc 让命令行程序中的主线程可以处理消息

int main(){ rtc::Thread *main_thread_(rtc::Thread::Current()); while(true) { main_thread_->ProcessMessages(100); //100ms } return 0;}

2019-11-25 14:02:49 195

原创 PeerConnectionInterface的GetStats接口的使用

一、实现了webrtc::RTCStatsCollectorCallback接口class RtcStatsObserver : virtual public webrtc::RTCStatsCollectorCallback{public: virtual void OnStatsDelivered(const rtc::scoped_refptr<const webrtc::...

2019-11-21 16:32:00 1055

原创 获取PeerConnection中视频发送相关的波特率和编码器帧率

注意:相关逻辑要在工作线程调用一、先获取到PeerConnection对象rtc::scoped_refptr<webrtc::PeerConnectionInterface> peer_connection_interface_;auto peer_connection_wrapper = static_cast<webrtc::PeerConnectionProx...

2019-11-21 16:07:58 474

原创 WebRtc中如何通过PeerConnectionInterface获取到PeerConnection对象?

rtc::scoped_refptr<webrtc::PeerConnectionInterface> peer_connection_interface_;auto peer_connection_wrapper = static_cast<webrtc::PeerConnectionProxyWithInternal<webrtc::PeerConnection...

2019-11-21 15:53:38 620

原创 webrtc中的日志相关

1、Debug模式下禁止日志输出在程序启动时 rtc::LogMessage::LogToDebug(rtc::LS_NONE);2、自定义日志接收模块1 定义rtc::LogSink子对象,实现void OnLogMessage(const std::string &message)函数class SampleLogSink:virtual public rtc::LogSin...

2019-09-23 10:54:18 1617

原创 mac app 获取不到音视频设备的原因

去Capabilities - App Sandbox 中勾选Hardwre相关选项这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图...

2019-09-10 16:09:59 1207

原创 webrtc在mac下的编译命令

1 cd到src目录2 gn gen out/mac_x64_debug --args='target_os="mac" target_cpu="x64" use_rtti=true is_debug=true is_component_build=false rtc_use_h264=true' --ide=xcode3 ninja -C out/mac_x64_debug以上命...

2019-07-30 17:04:30 1529

原创 SoundTouch 变速不变调

初始化m_soundTouch.setSampleRate(44100);m_soundTouch.setChannels(2);设置新速度m_soundTouch.setTempo(new_speed);m_soundTouch.setPitch(1.);m_soundTouch.setRate(1.);

2019-05-23 13:51:16 1002

原创 SDL_OpenAudioDevice失败的问题

SDL_GetError()返回值为:WASAPI can't initialize audio client: 尚未调用 CoInitialize。解决方法:在SDL_Init(SDL_INIT_AUDIO)之前增加CoInitialize(NULL);如果一个线程使用了com,那么要保证这个线程在使用前调用CoInitialize(NULL),且在不使用的时候调用CoUnin...

2019-05-09 11:22:15 2824

MacMetalYuv.zip

该资源为mac下使用metal显示yuv420的源码,使用方法为: 1 将所有文件加入到自己工程 2 在要显示视频的NSView中定义SampleNSVideoView子view 3 调用showFrame接口即可 注意:这里的yuv420对mac下的是 y420格式

2019-09-19

webrtc_video_capturer.rar

扩展webrtc视频采集功能,外部采集到视频后通过该类的InputVideoFrame接口传入yuv数据

2019-05-06

基于ffmpeg的rtmp推送类

一个基于ffmpeg封装的rtmp推送h264和aac数据的源码,要求所使用的ffmpeg中已经添加的h264和aac编码

2018-08-15

usb摄像头视频采集及格式转换yuv420

该资源是基于FFMpeg进行的二次开发,该压缩包包含两部分:视频采集类、视频格式转换类,视频采集类根据用户传入的设备名字、帧率、视频大小进行视频采集,而采集类中包含一个视频转换类,视频转换类负责将摄像头采集的数据转为yuv420,并将尺寸转为用户输入的尺寸,该模块中用到pthread库创建线程

2018-07-31

audio重采样

该资源为一个类,提供三个接口,是对ffmpeg中重采样相关代码逻辑的封装,使用简单,耦合性低

2018-07-18

写m3u8和ts文件的类

这是一个类,该类封装了ffmpeg写m3u8和ts文件的流程,接口简单,直接加入自己的工程即可以使用,ffmpeg库要用新版本,至少2.8以后

2018-07-03

windows下可用的pthread库

在windows下对pthread源码进行编译,pthread是一套跨平台线程库,用它编写多线程可以统一平台调用方式

2018-06-29

windows下音频采集

window下音频采集代码,使用windows api wavein相关接口封装的音频采集类,接口简单,通过回调函数将数据返回

2018-06-29

数字电路(第四版).pdf

数字电路(第四版).pdf 希望这本数字电路对大家有所帮助

2010-01-22

空空如也

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

TA关注的人

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