WebRTC开发者社区为开发者提供最新最全的WebRTC资料
目录
  • 首页
  • WebRTC概念与基础
  • WebRTC项目与应用
  • WebRTC教程资料
  • WebRTC开发资源
  • WebRTC源码分析
  • WebRTC服务端开发
  • WebRTC网络与通信
  • WebRTC编码与解码
  • WebRTC问题与缺陷
  • WebRTC-Androd端开发
  • WebRTC-RFC文档
  • WebRTC音频处理
  • WebRTC-Mediasoup
  • FFMpeg音视频处理
  • H264编解码基础
  • openCV相关

h264硬编解码ffmpeg(十一)

2021-06-23 00:07:08

视频硬编解码相关函数及结构体
1、AVCodecContext
编解码结构体上下文,
对于硬解码,则需要设置如下两个变量
-get_format:此函数用于获取硬解码对应的像素格式,比如videotoolbox就是AV_PIX_FORMAT_VIDEOTOOLBOX
-hw_device_ctx:此函数用于设置硬解码的设备缓冲区引用,当此参数不为NULL时,解码将使用硬解码

设备缓冲区引用:AVBufferRef类型,它用于创建和管理帧缓冲区
帧缓冲区引用:AVBufferRef类型,管理编解码时GPU和CPU数据的交换冲区
帧缓冲区上下文:AVHWFramesContext类型,设置帧缓区的相关参数

对于videtoolbox和mediacodec的硬编码,使用流程和x264的软编码一样,不需要做额外的设置,对于VAAPI等其他类型的硬编码则有另外的使用流程,具体参考ffmpeg源码examples的vaapi_encode.c

2、AVBufferRef *av_buffer_ref(AVBufferRef *buf);
用于创建设备缓冲区
3、void av_buffer_unref(AVBufferRef **buf);
用于释放设备缓冲区,同时也会释放其管理的帧缓冲区
4、int avcodec_send_packet(AVCodecContext *avctx, const AVPacket *avpkt);
将压缩数据AVPacket送入解码上下文缓冲区
5、int avcodec_receive_frame(AVCodecContext *avctx, AVFrame *frame);
从解码上下文缓冲区获取解码后的数据AVFrame
6、int av_hwframe_transfer_data(AVFrame *dst, const AVFrame *src, int flags);
如果采用的硬件解码,则调用avcodec_receive_frame()函数后,解码后的数据还在GPU中,所以需要通过此函数将GPU中的数据转移到CPU中来
7、int avcodec_send_frame(AVCodecContext *avctx, const AVFrame *frame);
将未压缩数据AVFrame送入编码上下文缓冲区
8、int avcodec_receive_packet(AVCodecContext *avctx, AVPacket *avpkt);
从编码上下文缓冲区获取编码后的数据AVpacket

More...

基于mediasoup的多方通话研究(一)

2021-05-20 23:42:06

mediasoup简介
mediasoup的特性
安装mediasoup-demo
本地运行Demo
server的配置文件
mediasoup的原理
扩展与展望
总结

More...

Mediasoup库的架构(C++部分)

2021-05-20 23:38:26

MediaSoup的特性 

特性一

特性二

特性三

 

MediaSoup SFU简单的架构说明

MediaSoup库中Lib目录下的JS作用

MediaSoup-JS类的关系图

MediaSoup js部分起到的作用

MediaSoup C++ 库类关系图

核心类图

C++类图

小结

More...

目标帧率丢帧-2

2021-05-19 07:17:42

上一篇文章的丢帧是依据编码后的码率和目标码率来决定丢帧,

http://www.jianshu.com/p/e2a9740b9877

而本文介绍的丢帧依据是目标帧率。

由此可对丢帧策略分类如下:
  • 编码后的码率和目标码率来决定丢帧
  • 目标帧率决定丢帧

More...

目标码率丢帧-1

2021-05-19 07:17:07

本篇文章的丢帧是依据编码后的码率和目标码率来决定丢帧,
而下一篇文章介绍的丢帧依据是目标帧率。

http://www.jianshu.com/p/fe303bdabc26

由此可对丢帧策略分类如下:
  • 编码后的码率和目标码率来决定丢帧
  • 目标帧率决定丢帧

整个帧率控制多次使用的算法---指数权重滤波(暂且如此命名)

More...

走读Webrtc 中的视频JitterBuffer(一)

2021-05-19 07:15:35

基本概念

在实时流媒体系统中,jitterbuffer是在解码端,起到如下几个作用:

  1. 对rtp包进行排序
  2. 对rtp包进行去重
  3. 去抖动

对于1,2点比较简单。核心的是去抖动,去抖动实现的目标就是使视频能平滑播放,不因为抖动忽快忽慢。

简单的视频jitterbuffer可以只针对rtp包进行处理,只对rtp进行排序,去重。并不处理视频帧。如下图

在这里插入图片描述

这种简单的实现并不关心视频帧是否有错,是否可以解码。视频帧间是否可以持续解码。(针对视频帧内的RTP包,如果经过排序和去重,可以认为是可解码的)。这些全部放在解码模块去做。
当然这种形式的Jitterbuffer无法处理抖动。因为对视频帧而言,抖动的处理是针对帧间的,而不是RTP包间的。把它叫做rtp buffer应该更合适些。

webrtc中的视频jitterbuffer

webrtc中的jitterBuffer也是QOS机制中的核心,它会估算抖动,丢包,决定是否通过Nack来重传。这里我先忽略与QOS相关的一些逻辑,先看看jitterBuffer中的一些核心的基础功能。

webrtc中的jitterBuffer是基于视频帧实现,在RTP的接收端存入jitterbuffer的是rtp包,在解码端取出的是视频帧。

More...

走读webrtc 中的视频JitterBuffer(二)

2021-05-19 07:14:53

CMDecodingState

VCMDecodingState 是用于判断nalu是否可以连续解码,判断的依据因不同编码格式而不同。它支持了三种编码格式:VP8,VP9,H264,看下它定义的几个成员变量

uint16_t sequence_num_;
uint32_t time_stamp_;
int picture_id_;
int temporal_id_;
int tl0_pic_id_;
bool full_sync_;  // Sync flag when temporal layers are used.

More...

WebRTC视频JitterBuffer详解

2021-05-19 07:12:59
  • 1 WebRTC版本
  • 2 概要
  • 3 JitterBuffer结构和基本流程
  • 4 帧完整性 - PacketBuffer
    • 4.1 包缓存
    • 4.2 帧的开始和结束
    • 4.3 插入RTP数据包 - PacketBuffer::InsertPacket
    • 4.4 处理RTP填充包 - PacketBuffer::PaddingReceived
    • 4.5 丢包检测 - PacketBuffer::UpdateMissingPackets
    • 4.6 连续包检测 - PacketBuffer::PotentialNewFrame
    • 4.7 帧完整性检测 - PacketBuffer::FindFrames
    • 4.8 总结
  • 5 查找参考帧 - RtpFrameReferenceFinder
    • 5.1 图像ID - PID
    • 5.2 设置参考帧 - RtpFrameReferenceFinder::ManageFramePidOrSeqNum
    • 5.3 处理填充包 - RtpFrameReferenceFinder::PaddingReceived
    • 5.3 更新填充包状态 - RtpFrameReferenceFinder::UpdateLastPictureIdWithPadding
    • 5.4 处理缓存的包 - RtpFrameReferenceFinder::RetryStashedFrames
    • 5.5 总结
  • 6 有序输出 - FrameBuffer
    • 6.1 插入帧 - FrameBuffer::InsertFrame
    • 6.2 更新参考帧信息 - FrameBuffer::UpdateFrameInfoWithIncomingFrame
    • 6.3 取解码帧 - FrameBuffer::NextFrame
    • 6.4 状态传播 - FrameBuffer::PropagateContinuity/FrameBuffer::PropagateDecodability
    • 6.6 总结
  • 7 抖动与延迟
    • 7.1 抖动计算
    • 7.2 延迟 - VCMTiming
      • 7.2.1 目标延迟 - googTargetDelayMs
      • 7.2.2 当前延迟 - googCurrentDelayMs
    • 7.3 平滑渲染时间 - TimestampExtrapolator
  • 8 总结

More...

Webrtc AGC 算法原理介绍(三)

2021-05-19 02:22:34

本系列介绍Webrtc的agc算法。webrtc的agc算法对各种情况作了较为详尽的考虑,而且使用了的定点数的方法来实现,因此内容比较多。尽量在这几篇文章中描述清楚。

一、WebRtcAgc_AddMic
WebRtcAgc_AddMic用在自适应模拟模式下(kAdaptiveAnalog),其流程如下:

More...

Webrtc AGC 算法原理介绍(二)

2021-05-19 02:20:48

一、AGC的三个流程
函数 调用 功能
ProcessRenderAudio 远端输出前 调用AGC的WebRtcAgc_AddFarend
AnalyzeCaptureAudio 近端高通滤波器后 根据模式,可变模拟(kAdaptiveAnalog)调用WebRtcAgc_AddMic,可变模拟(kAdaptiveDigital)调用WebRtcAgc_VirtualMic
ProcessCaptureAudio 近端VAD后输出前 调用AGC的WebRtcAgc_Process
这三个流程是AGC的主要接口。下面将会对这些三个流程进行详细的介绍。

More...

last
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
next
  • 分类目录

    • WebRTC概念与基础 (252)
    • WebRTC项目与应用 (33)
    • WebRTC教程资料 (38)
    • WebRTC开发资源 (13)
    • WebRTC源码分析 (19)
    • WebRTC服务端开发 (27)
    • WebRTC网络与通信 (43)
    • WebRTC编码与解码 (15)
    • WebRTC问题与缺陷 (2)
    • WebRTC-Androd端开发 (2)
    • WebRTC-RFC文档 (1)
    • WebRTC音频处理 (6)
    • WebRTC-Mediasoup (2)
    • FFMpeg音视频处理 (3)
    • H264编解码基础 (10)
    • openCV相关 (1)
  • 最新文章

    • TensorFlow 中的通信机制 ——Rendezvous(二)gRPC 传输
    • 详解|SRT编码器中Rendezvous模式详解
    • 完整SIP/SDP媒体协商概论-ICE初始offer发送详解
    • 完整SIP/SDP媒体协商概论-ICE初始offer发送详解
    • WebRTC - ICE 过程简述
    • Webrtc delay-base-bwe代码分析(2): InterArrival模块
    • 从janus中学习webrtc的ice简单交换过程
    • WebRTC PeerConnection 建立连接过程介绍
    • P2P技术详解(三):P2P技术之STUN、TURN、ICE详解(转载)
    • WebRTC ICE 状态与提名处理
    • licode服务端总结
    • libnice调用流程分析
    • libnice调用流程分析
    • licode 学习总结
    • Licode—基于webrtc的SFU/MCU实现
    • ncnn_example
    • opencv-rtsp运动检测
    • WebRTC 基于GCC的拥塞控制(上)
    • WebRTC 基于GCC的拥塞控制(下)
    • LearningWebRTC: 拥塞控制LearningWebRTC: 拥塞控制
    • WebRTC入门(三)---- 目录结构
    • WebRTC之带宽控制部分学习(1) ------基本demo的介绍
    • webrtc视频流程
    • webrtc nack实现原理
    • webrtc QOS方法一(NACK实现)
    • webrtc源码之nack&&rtx详解
    • webrtc的rtp重传代码分析
    • webrtc QOS方法一(NACK实现)
    • WebRTC基于TransportCC和Trendline Filter的发送端码率估计(Sendside-BWE)
    • WebRTC中丢包重传NACK实现分析
  • 链接

    • WebRTC官网
    • xSky 实验室
    • 树莓派技术圈
    • 声网 Agora
    • WebRTC中文网
    • web性能权威指南
    • WebRTC官网
    • webrtc在线源码
    • webrtc在线源码
    • webrtc
    • webrtc示例
    • LiveVideoStack
    • 雷霄骅(leixiaohua1020)的专栏
  • 开源项目


Powered By xblog Copyright 0xsky.com All Rights Reserved.

Copyright WebRTC.ren All Rights Reserved.