- 博客(44)
- 资源 (5)
- 收藏
- 关注
原创 做一个基于ffmpeg的AI Agent智能体
FFmpeg AI Agent:一条自然语言指令,实现一个简单音视频处理。让用户说一句:音视频的处理要求,AI Agent帮你把活给做了。实现比较简单,抛砖引玉,留下tools接口,可以无限扩展。
2026-02-03 09:17:09
571
原创 websocket协议详解与代码实现
websocket是基于http的长链接协议。最近OpenAI的Realtime Api比较火(人工智能实时语音互动),并且与AI做语音交互的协议就是用的websocket。本文的内容:websocket协议详解; Http部分;websocket frame部分;websocket协议的C++实现;基于libuv高性能异步
2026-02-03 09:05:24
582
原创 webrtc服务端如何录像
当前基于sfu服务的webrtc通信模式下,服务端录像和服务端旁路引流,是后端服务的一个重要需求。本文介绍webrtc服务端如何进行录像,文章通过几部分进行讨论:mediasoup sfu的旁路录像srs webrtc的旁路录像webrtc录像的格式讨论。
2026-02-03 08:52:58
568
原创 webrtc如何进行后台录音
webrtc的语音通话常使用opus编码,在webrtc的会议中常有语音录音的需求:会议客户需要语音会议记录,方便会后进行会议记录;troubleshooting需要:在后台接受的语音中进行录音,方便知道当前传输语音的质量;
2026-02-03 08:48:20
594
原创 Enhance rtmp-flv协议开始支持多码流
小编之前在LiveVideoStack写过博文详解Enhanced-RTMP支持H.265,详解了Enhance-Rtmp如何支持H265编码。后面也写过ffmpeg7.0 flv支持hdr,Enhanced-Rtmp支持Hdr。最近Enhance-Rtmp协议再次更新到v2版本,开始支持多码流方式,也就是我们常说的推送多份不同分辨率的视频,方便观众根据需要来观看。
2026-02-02 21:46:34
706
原创 WebRTC的H265是你想要的吗
从 Chromium 136 版本起,WebRTC 正式把 H.265(HEVC)列为受支持的编解码器之一,浏览器会默认启用该能力。今天一起聊聊这个话题。
2026-02-02 21:22:18
354
原创 webrtc推流能成为直播的主要方案吗?
小新:传统的推流采用RTMP协议,客户端推流的时候,如果遇到TCP发送阻塞,会有一个本地缓存队列把暂时要发送的音视频缓存起来,这个队列可以有2到6秒;小新:遇到网络阻塞时,其没有阻塞缓存队列,是通过带宽预测算法估计出口速率,采用降低视频速率,降低视频编码质量的方式,有时候预测算法不及时,就可能出现少量的丢包情况。小新:传输基于不可靠的UDP网络,也就是视频传输可能出现丢包,所以有自己的丢包重传机制,但是丢包重传的重传队列只有几百毫秒,也就是达不到秒级。小新:Web RTC的传输,是低延时的传输方式。
2026-01-25 12:00:09
433
原创 语言接入大模型,websocket还是webrtc?
小新:websocket接入大模型的应用就多了,简单,可靠,稳定的接入,稳定的语音流,其完全不丢包,ASR服务的输入是准确的。小新:是的,再补充一下,如果想解决websocket接入的弱网对抗问题,可以考虑用基于quic的webtransport方式,其也是稳定可靠的,并且能对抗弱网,经过测试百分之三十的丢包率,其传输完全没有问题,完全不影响业务。还有就是远程面试,通过被面试者的语音送往后台,大模型进行总结,最后大模型进行总结:面试者的特点,和通过tools进行评分,其的符合程度。
2026-01-24 08:53:30
400
1
原创 webrtc tcc详解
webrtc的tcc算法,具体做法是,接收端监控两个数据,并反馈给发送端。丢包率: 接收端计算出丢包率,定期发送rtcp rr报文(内有丢包率)给发送端,发送端通过丢包率的大小来决定是否降低编码的bitrate;
2024-07-28 22:01:41
1233
原创 webrtc sfu性能压测
这里介绍一下如何测试webrtc sfu服务器的性能,介绍原理和实际操作。最后以srs和mediasoup两个流行的webrtc sfu开源进行举例,如何压测其性能。
2024-07-07 10:28:24
1883
原创 webrtc gcc详解
webrtc的gcc算法(Google Congestion Control),貌似国内很多文章都没有细讲,原理是怎么样的,具体怎么进行计算的。这里详解一下gcc
2024-07-07 10:23:28
1758
原创 Apple HEVC Stereo Video
为左眼和右眼携带立体视频视图的能力产生了更丰富的用户体验。立体视频(有时称为“3D 视频”)向用户的左眼呈现一个图像,向用户的右眼呈现另一幅图像(通常是相关的)以产生立体效果,定义为:大脑接收双眼视觉刺激而产生的深度知觉;双眼视觉。如下图,左眼一幅图,右眼一幅图,同时播放在加上apple眼镜的渲染,就形成3D效果。Apple的立体视频也是以上的模式,这里介绍Apple定义的HEVC在mp4中的3D视觉如何构造格式box和其特点。主视觉可以是左眼,也可以是右眼。
2024-06-04 21:07:51
1157
原创 ffmpeg7.0 flv支持hdr
自从ffmpeg6.0应用enhance rtmp支持h265/av1的flv格式后,7.0迎来了flv的hdr能力。本文介绍ffmpeg7.0如何支持hdr in flv。如果对enhance rtmp如何支持h265不了解,推荐[详解Enhanced-RTMP支持H.265](https://mp.weixin.qq.com/s/xqfILkFg1Gmk8Be5VhsW3w)
2024-05-06 20:43:23
999
原创 Enhanced-Rtmp支持H265
千呼万唤使出来,rtmp/flv算是有统一支持H265的国际版本。本文介绍一下:* 现存rtmp/flv支持H265的方式;* Enhanced-Rtmp协议如何支持H265;* ffmpeg/obs/srs/media-server各个开源的实现;* 国内方案与国外方案的兼容性问题;
2024-05-06 20:40:57
1465
1
原创 cpp_media_server开始支持metaRTC
一. cpp_media_server开始支持metaRTCMetaRTC是一个为嵌入式/物联网打造的webRTC库,为第三代互联网 元宇宙提供webRTC能力。MetaRTC实现了webrtc协议,支持webrtc/srt/rtmp,有纯C和C++两个版本。cpp_media_server是基于c++11开发的webrtc会议服务sfu,网络部分基于Boost.Asio。cpp_media_server开始支持MetaRTC客户端,MetaRTC提供window/android/linux的nat
2022-05-04 21:04:39
1075
2
原创 webrtc的WHIP实现
WHIP接口1. 什么是whip全称: WebRTC-HTTP ingestion protocol (WHIP).rfc地址: rfc-draft-murillo-whip-00简单说,就是通过HTTP接口能导入webrtc媒体流。2. webrtc publish/unpublish2.1 webrtc publishwebrtc推流接口方法: http posturi: http://hostname:hostport/publish/roomId/uidhttp post bod
2022-05-03 11:36:49
4183
原创 RTP纠错机制精选翻译
9. 纠错机制9.1 前向纠错(FEC) 前向纠错(FEC)算法能让二进制流在传输过程中保持健壮性。传送大量二进制流在松散的媒介或网络下。额外的信息会加在二进制流中,能让接受者正确的重构在传输中丢失的数据。前向就戳算法主要应用在广域网,如手机网络、或包交换网络、或存储系统(如压缩盘、电脑硬盘或内存)。因为因特网是一个松散的媒介,因为媒体应用的信息对丢失非常敏感,FEC方案就被提议和编程R...
2020-04-19 21:53:52
896
原创 RTCP关键协议翻译
原版英文书链接(RTP:Audio and video for the internet.pdf)RTP协议比较简单,因此从第5章节RTCP开始。5.1 RTCP的组件 一个RTCP的应用有3个部分: 报文结构、时间规则,和参与者数据库。有几种类型的RTCP报文。5种标准的报文类型会在5.3 RTCP报文格式中描述,并随后附有报文集成放入复合报文中被发送。验证RTCP报文正确性的算法会在...
2020-04-19 21:48:19
1676
原创 SRT协议翻译
SRT协议srt是基于UDT传输协议,是用户级别的协议,其保留UDT的核心思想和机制,但是做了多项改进,包括控制报文的修改,针对直播流改进了流控,改进了拥塞算法,报文加密算法。本文介绍srt协议本身。更多的相关实现在:https://github.com/Haivision/srt简介srt传输协议为不可靠网络提供安全,可靠的数据传输,如因特网。任何数据都可以在srt协议上传输,特别是对音视...
2020-04-19 21:40:07
2999
原创 Quic_Wire_layout_specification_翻译
英文原文链接:QUIC wire specificationQUIC概述 本节我们主要介绍QUIC的关键功能和优点。QUIC功能上等于TCP+TLS+HTTP/2,但是基于UDP传输的。QUIC优于TCP+TLS+HTTP/2的关键点有:connect连接建立的低延时灵活的拥塞控制无头部阻塞的多路复用(TCP是有头部阻塞的)对头部和负载进行认证和加密流和连接的流控连接迁移c...
2020-04-19 21:05:37
428
原创 rtmp_specification_1.0翻译
英文原文: rtmp_specification_1.0.pdf5 RTMP Chunk Stream5.1 消息格式(Message Format)5.2 握手协议(Handshake)5.2.1 握手顺序5.2.2 C0和S0格式5.2.3 C1和S1格式5.2.4 C2和S2格式5.2.5. Handshake图解5.3 Chunking5.3.1 Chun...
2020-04-19 20:39:01
805
1
原创 SRT Encoder基于srt自适应码率的编码器
SRT Encodersrt encoder是基于srt发送的测试工具。基于srt协议中的rtt,maxBw,inflight等信息预测低延时的出口带宽,动态的调整编码bitrate,从而实现基于网络出口带宽的svc编码。1. 原理基于bbr基本拥塞控制算法,通过一个周期内(1~2seconds)的minRTT, maxBw, 和当前的inflight,预测出编码bitrate的状态机(保...
2020-02-09 17:06:29
4944
1
原创 SRT直播地址格式简介
SRT直播地址格式简介介绍srt在live模式下如何构造推/拉流地址。rtmp常规地址格式rtmp地址格式简介常规rtmp格式(无vhost) rtmp://hostip:port/appname/streamname 例子: rtmp://10.111.1.100:1935/live/livestream 上面例子中appname=“live”, streamname=“liv...
2020-02-06 21:04:37
9871
原创 SRS开始支持SRT
为什么我要开始着手SRT为什么我觉得SRT有趣?我们知道RTMP是公共互联网上直播视频的事实标准;但RTMP已经存在了很长一段时间,其标准在2012年最后一次更新过后就被放弃了。新的Codec标准诸如HEVC或AV1一般都没有RTMP标准支持。退一步来说,即使有人在RTMP中hack了这些Codec的支持,在移动网络上RTMP仍然工作的不大好。SRT作为RTMP潜在替换技术的一种,最近正获得不...
2020-01-25 22:49:36
5050
6
原创 rtmp over quic直播服务--mediago
mediagomediago的github地址: https://github.com/runner365/mediago_bin1. 什么是mediagoquic是基于udp的下一代高质量传输协议。mediago用quic协议来传输rtmp直播流。mediago在实现普通rtmp over tcp的基础上,同时实现rtmp over quic的服务,提供弱网环境下/高RTT等网络环境下的...
2019-05-30 09:34:08
4982
原创 ffmpeg重采样后如何获取sample_size大小的数据
ffmpeg重采样后如何获取sample_size大小的数据在ffmpeg用avfilter进行重采样后,可能得不到编码器设定好的sample_size大小的数据,这个时候需要重新组合采样数据,让sample data的大小等于_acodec_ctx_p->frame_size,才能拿去编码。这里采用ffmpeg api中av_audio_fifo的实用方法来实现1. 将sample ...
2019-05-24 16:47:18
1869
原创 ffmpeg转码过程中的dts转换过程
ffmpeg转码过程中的dts转换过程用ffmpeg api开发转码,在过程:拉流–>avfilter分辨率缩放,重采样–>编码–>写出,avpacket.dts和frame.dts在过程中需要根据不同的timebase进行转换。一,拉流在 av_read_frame后得到AVPacket packetAVPacket packet;int ret_i = av_r...
2019-05-24 10:40:51
3835
原创 RTCP(二): SR--Sender Reports 接收者报告
一. 前言发送rtp报文端向接受者发送SR报文,主要目的是方便接收方做好音视频同步工作。二. RTCP SR格式发送者报告SR,其RTCP类型payload type是200。主要信息共24bytes,也就是6 words,如图2.1 图2.12.1 NTP timestampNTP timestam...
2018-02-21 22:47:19
7360
原创 RTCP(一): RR--Receiver Reports 接收者报告
RTCP RR的格式接受者报告的RTCP类型是201,如图1.1所示。 图1.1 reporter ssrcrr报告发送者的ssrc,也就是rtp报文接受者自己的ssrc.reportee ssrcrr报告接受者的ssrc,也就是rtp报文发送者的ssrc.cumulative number of packet lost累积报文丢失总数,该字段是一个24...
2018-02-19 22:10:41
14343
2
原创 ffmpeg写rtmp推流中的坑:sps/pps和aac header的首包发送
1、需要在编码中使能CODEC_FLAG_GLOBAL_HEADERAVCodecContext的flags |= CODEC_FLAG_GLOBAL_HEADER设置这个标志位后,才能在AVCodecContext中的extradata和extradata_size得到对应的音视频头信息。视频: AVCDecoderConfigurationRecord+ sps + pps
2018-01-26 18:30:26
9250
原创 常用音视频头的写法
一、如何判断视频I_FRAMEbool IsH264IFrame(unsigned char data) { const unsigned char SPS_TYPE = 7; const unsigned char PPS_TYPE = 8; const unsigned char IDR_TYPE = 5; unsigned char nal
2018-01-26 18:13:05
683
原创 rtp的视频和音频格式初步分析(golang解析)
rtp视频、音频格式解析一、rtp承载h264解析rtp承载h264的解析当前实现了两种方式:StapA和FuA NALU头由一个字节组成,它的语法如下: * F: 1个比特. forbidden_zero_bit. 在 H.264 规范中规定了这一位必须为 0. * NRI: 2个比特. nal_ref_idc. 取00~11,似乎指示这个NALU的重
2017-09-23 19:56:21
11411
原创 安装grpc 简述
gRPC是由Google主导开发的RPC框架,使用HTTP/2协议并用ProtoBuf作为序列化工具。其客户端提供Objective-C、Java接口,服务器侧则有Java、Golang、C++等接口,从而为移动端(iOS/Androi)到服务器端通讯提供了一种解决方案。我主要用于后端服务之间互相的调用。
2017-08-30 18:52:36
3730
原创 学习nginx-rtmp:replay push代码流程
学习nginx-rtmp:replay push代码流程:nginx的单线程异步调用方式,代码难学,本文描述nginx-rtmp模块中relay push的代码流程。
2017-05-10 18:59:03
2354
原创 [ffmpeg]avfilter的那些坑:如何用drawtext在linux系统中开发实现中文字幕
最近在做ffmpeg的avfilter开发,从编译到,编码和运行,遇到了好多坑,这里总结一下!
2016-10-08 13:32:34
19398
1
原创 python如何调用C, 如何注册成C的回调函数(python后台程序常用方法)
其实是python后台程序常用方法:C开发完成底层的功能,python直接把C当做python模块进行调用。
2016-09-27 11:24:13
11966
4
新视频直播传输协议SRT1.0.pdf
2020-02-27
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅