基于libopenh264 codec的svc分层流实现方案

这篇具有很好参考价值的文章主要介绍了基于libopenh264 codec的svc分层流实现方案。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

OpenH264 http://www.openh264.org/ 是标准的H.264 encoder/decoder. ffmpeg已经集成libopenh264,但不支持svc特性。
openh264 encoder支持svc特性:
1. 时域4层:Temporal scalability up to 4 layers in a dyadic hierarchy
2. 空域4层:Spatial simulcast up to 4 resolutions from a single input
Temporal scalability指的是FPS,定义为:{30,24,16,10};
Spatial simulcast指的是分辨率,定义为:
    int arrHorW[]={1920, 1280, 800, 640 };
    int arrHorH[]={1080, 720, 450, 360 };
通过组合,最多可以组合成16种码流。由软件出16个encoding pipeline来实现。
对于传输,用RTP协议。参考RFC6190: https://datatracker.ietf.org/doc/html/rfc6190#section-1.1.3
不同流用虚连接区分,NALU type上区分layers: dependency_id(DID) + temporal_id(TID) + quality_id(QID).
            +---------------+---------------+---------------+
            |0|1|2|3|4|5|6|7|0|1|2|3|4|5|6|7|0|1|2|3|4|5|6|7|
            +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
            |R|I|   PRID    |N| DID |  QID  | TID |U|D|O| RR|
            +---------------+---------------+---------------+
svcRtpSvr解析NALU packet。按dependency_id + temporal_id构建16个queue分别进行buffering。audio单独一个buffer。
为了缩短首帧加载时间,需要按dependency_id缓冲一个I-frame。
参考w3c标准(scalabilityMode表),对layers进行编码,共16个layer。
"S0T0", "S0T1", "S0T2", "S0T3" "S1T0", "S1T1", "S1T2", "S1T3"  
"S2T0", "S2T1", "S2T2", "S2T3" "S3T0", "S3T1", "S3T2", "S3T3"
各个不同client的svcPlayer根据网络质量/buffering长度,自行决定要拉哪些layer,主动向svcMediaSvr发出请求。
比如,刚开始播放时,尝试获取3s标清base layer S0T2进行播放,播放流畅的话,就尝试获取S1T2进行叠加图像效果。3s播放仍然流畅,继续获取S2T2和S3T2进行高画质叠加。
player需要不断测试网络带宽,根据网络带宽的80%来计算应该在哪个layer上进行播放为佳。
 文章来源地址https://www.toymoban.com/news/detail-745418.html

到了这里,关于基于libopenh264 codec的svc分层流实现方案的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 基于Live555实现RTSP服务器来推送H264实时码流

    实现了一个单播的rtsp服务器来推送实时的h264码流,参考了官方的testProgs目录下的testOnDemandRTSPServer例程和liveMedia目录下的DeviceSource.cpp文件。我这边是把编码出来的h264码流放入了一个缓冲队列,然后从缓冲队列里取出来进行推流。 rtsp.h: rtsp.cpp:  

    2024年02月05日
    浏览(12)
  • Android MediaCodec 框架 基于codec2

    Android MediaCodec 框架 基于codec2

    系列文章的目的是什么? 粗略: 解码需要哪些基础的服务? 标准解码的调用流程? 各个流程的作用是什么? 解码框架的层次? 各个层次的作用? 细化: 解码参数的配置? 解码输入数据包的流转? 解码输出帧内存的申请和管理? 首先从MediaCodec 到具体的解码Component 梳理出

    2024年02月07日
    浏览(13)
  • 基于So-VITS-SVC4.1声音克隆音频异常的解决办法

    基于So-VITS-SVC4.1声音克隆音频异常的解决办法

    通常在使用VITS进行声音克隆的时候出现声音沙哑或者大佐味,就是日本腔调,这个一方面是由于模型训练的问题,如果觉得模型训练没有问题的话就是参数,或者其他原因。这里介绍一个通用的解决办法。 按照以下图片进行设置获取模型。 上传好音频之后点击这些选项,然

    2024年02月16日
    浏览(26)
  • 基于rk3568平台 rk809 codec的介绍

    基于rk3568平台 rk809 codec的介绍

            首先要知道单端和差分之间的区别,因为rk809可以单端双MIC输入或差分输入;通过下面的硬件原理图就可以知道rk809是哪个输入了; 单端输入 差分输入(differentia )           MICP/MICN 差分输入单声道配置dts 中 codec 节点需要配置 mic-in-differential;         M

    2024年02月09日
    浏览(14)
  • 使用scikit-learn中的SVC类实现垃圾邮件分类

    scikit-learn中的SVC类不支持直接动态调整学习率。SVC类使用的核函数(例如,线性核、RBF核等)本身没有学习率参数。 但是,可以通过以下两种间接方式在训练过程中实现类似的效果: 使用GridSearchCV或RandomizedSearchCV进行参数优化 : GridSearchCV  和  RandomizedSearchCV  允许您为多个

    2024年04月23日
    浏览(7)
  • 【FOC控制】英飞凌TC264无刷驱动方案simplefoc移植(3)-FOC控制原理矢量控制

    【FOC控制】英飞凌TC264无刷驱动方案simplefoc移植(3)-FOC控制原理矢量控制

    无刷电机是矢量控制,是交流电机调速的核心,也是Foc控制的核心 以下内容学习自【自制FOC驱动器】深入浅出讲解FOC算法与SVPWM技术 以电流闭环控制为例,也就是让电机始终产生一个恒定的力矩(也就是恒定的电流,因为力矩和电流成正比) 可以看到控制器的输入是最左边

    2024年02月02日
    浏览(81)
  • c++高性能264/265实时h5流媒体服务器前后端整体解决方案

    c++高性能264/265实时h5流媒体服务器前后端整体解决方案

    c++高性能264/265实时h5流媒体服务器前后端整体解决方案 下图展示了前端播放效果。 播放1路264视频流,4路265视频流 CPU占用率10%(测试机器上运行着c++服务端和其他工具程序) GPU0占用率17% 1.1 作者测试机器配置 处理器 11th Gen Intel® Core™ i7-11800H @ 2.30GHz 2.30 GHz 机带 RAM 32.0 GB (31.

    2024年02月12日
    浏览(13)
  • SkeyeRTMPClient扩展支持HEVC(H.265)解决方案之兼容H264和H265帧数据解析详解

    SkeyeRTMPClient扩展支持HEVC(H.265)解决方案之兼容H264和H265帧数据解析详解

    在之前两篇关于SkeyeRTMPClient扩展支持HEVC(H.265)解决方案的文章中,我们已经完成了对H265的支持,本文主要阐述将H26和H265支持兼容起来,实现不同视频编码格式的自适应兼容适配。 1. 根据CodecId判断数据编码类型 根据视频编码ID判断视频编码类型,如果视频编码ID==FlvCodeId_Hevc(

    2023年04月08日
    浏览(7)
  • Qt基于FFmpeg解码本地视频生成H264文件并播放

    Qt基于FFmpeg解码本地视频生成H264文件并播放

    用eseye_u.exe 打开H264文件并播放 本文福利, 免费领取C++音视频学习资料包、技术视频 ,内容包括(音视频开发,面试题, FFmpeg , webRTC , rtmp , hls , rtsp , ffplay , srs ) ↓↓↓↓↓↓ 见下面↓↓文章底部点击免费领取↓↓   三、核心代码:  main中创建对象即可测试:

    2023年04月17日
    浏览(13)
  • 基于WebAssembly无插件解码H264/H265码流播放器

    基于WebAssembly无插件解码H264/H265码流播放器

    基于WebAssembly无插件解码H264/H265码流播放器 之前看到一篇文章:web无插件解码播放H264/H265(WebAssembly解码HTML5播放) H.265/HEVC在Web视频播放的实践 按照文章思路,已经复现了web端无插件解码H265码流。首先说明下我这边的环境,框架。 在海思主板上移植了web服务器nginx,用于pc端请

    2024年01月16日
    浏览(17)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包