owt-server编码h264的sps pps不固定的问题

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

转载请注明出处:https://blog.csdn.net/impingo
项目地址:https://github.com/im-pingo/pingos
项目官网:https://pingos.io

问题描述

最近使用owt-server转推rtmp到媒体服务器时出现hls播放无画面的情况。
并且,使用ffplay播放hls的时候,ffplay一直有如下错误输出:
在这里插入图片描述
从错误输出很明显看出是pps出了错,但是rtmp播放却没有任何问题。

问题分析

后来经过对rtmp码流分析发现h264的关键帧前的sps和pps在不停地变化,每次都不一样。
但是nginx-rtmp-module在封装ts包的时候会忽略关键帧前的sps和pps,只会从avc_header中提取sps pps拼接在关键帧前,然后再封装进ts包里。问题在于owt推送rtmp数据时只会在开始的时候发送一次avc_header,推送过程中即使sps pps发生变化也不会再更新avc_header,这就导致了媒体服务器上用来封装ts包的sps和pps是失效的。
这就是为什么rtmp可以正常播放,但是hls却没有画面的原因。

问题解决

owt之所以生成的h264数据sps pps不断变化,是因为它调用webrtc库的接口来对yuv进行编码,webrtc又调用openh264库进行编码。而openh264编码h264的时候默认是不固定sps pps的。
为了解决这个问题,需要修改webrtc源码,并且重新编译webrtc库。
openh264默认使用INCREASING_ID模式,也就是每个idr帧 ,sps和pps的id都会增加。我们需要做的是改为CONSTANT_ID模式就好了。
修改代码如下:
在这里插入图片描述

QQ交流群:697773082

微信(cczjp1989)

在这里插入图片描述

OWT Server 整体架构分析 基础模块架构图 按自己的理解用 visio 大体画了一下。 前一篇博客讲过OWT Server是模块化的设计,同模块可以分开部署,便于新手入门,下面画了OWT Server的一些基础模块(支持WebRTC开会)的框架图,如果把这几个模块搞清楚了,差多对OWT Server也就理解了。 模块内部的 RPC 调用都是通过 RabbitMQ 消息队列实现的,都是直接调用,即上图中 所有的虚线都是通过RabbitMQ间接通信的,而是直接连接。 模块内部流交换(Internal IO)默认用的是 阅读详情

相关推荐

OWT Server整体架构分析 [Open WebRTC Toolkit]

1. OWT Server架构

努力努力再努力L 2484

OWT的通用服务器(流/会议/代码转换/模拟)。 (又名MediaServer-Node.js开发

Open WebRTC Toolkit媒体服务器OWT的媒体服务器提供了基于WebRTC的高效视频会议流媒体服务。 它将单个WebRTC流扩展到许多端点。 同时,它启用了Open WebRTC Toolkit媒体服务器OWT的媒体服务器提供了基于WebRTC的高效视频会议流媒体服务。 它将单个WebRTC流扩展到许多端点。 同时,它启用了媒体流的媒体分析功能。 它具有以下特点:分布式,可扩展且可靠的SFU + MCU服务器英特尔:registered:酷睿:trade_mark:英特尔:registered:至强:registered:处理器上的高性能VP8,VP9,H.264HEVC实时转码广泛的流协议支持,包括WebR

网络通信 -- WebRTC】Open WebRTC Toolkit 环境搭建指南

【1】depot_tools / fetch:第8行:exec:python:未找到。【2】编译 usrsctp 失败。【3】boost库相关问题

CopperSun 技术博客 2335

owt-server源码剖析(一)--启动流程及相关模块介绍

目录 一、引言 二、node-gyp介绍 三、使用 ------> 3.1、node-gyp安装 ------> 3.2、package.json ------> 3.3、binding.gyp ------> 3.4、index.js 四、node-gyp发展历史 ------> 4.1、原始方式 ------> 4.2、NAN ------> 4.3、N-API 五、OWT中的addon模块 一、引言 本章来大致介绍一下owt项目的整体框架,会着重讲解其中的几个

文艺小少年的博客 876

OWT-Server 开源项目教程

OWT-Server 是一个用于构建实时通信应用的开源项目。其目录结构如下: ``` owt-server/ ├── analytics ├── console ├── docs ├── management_api ├── scripts ├── source ├── webrtc_agent ├── audio_agent ├── video_agent ├── conference_age...

gitblog_00569的博客 607

owt-server接口总结

目录概述owt-server的操作流程创建房间添加刷新输入流添加输入流刷新输入流添加输出流播放合流后输出的内容删除输入流删除输出流删除房间QQ交流群:697773082微信(cczjp1989) 概述 owt-server提供了一个官方demo控制台接口来实现拉流、合流、转推以及录制的功能。关于owt-server的安装过程请参考我之前的文章编译安装OWT-Server owt-server...

impingo的博客 4092

nginx rtmp 编码_owt-server编码h264sps pps固定问题

PingOS项目官网:https://pingos.io项目地址:https://github.com/pingostack/pingos 问题描述最近使用owt-server转推rtmp到媒体服务器时出现hls播放无画面的情况。 并且,使用ffplay播放hls的时候,ffplay一直有如下错误输出: 从错误输出很明显看出是pps出了错,但是rtmp播放却没有任何问题问题分析后来经过对rtm...

weixin_39638057的博客 274

H264 SPS/PPS 分析

9816B H264文件分析 H264文件对应的SPS参数如下图:

Abe_liu的博客 3522

Ubuntu环境安装OWT Server[Open WebRTC Toolkit]

Ubuntu环境下安装OWT Server 目录 OWT (Open WebRTC Toolkit) 介绍 OWT (Open WebRTC Toolkit) 编译安装 1. OWT (Open WebRTC Toolkit) 介绍 OWT媒体服务器提供了一种基于WebRTC的高效的视频会议流媒体服务,将单个WebRTC流扩展到多个端点,同时支持媒体流的媒体分析功能。 特点: a. 分布式、可扩展、可靠的SFU + MCU服务器。 b. 基于Intel Co

努力努力再努力L 4554

OWT Server进程结构JS代码处理流程 [Open WebRTC Toolkit]

OWT Server进程结构JS代码处理流程 [Open WebRTC Toolkit]

努力努力再努力L 1577

开源项目owt-server常见问题解决方案

owt-server 是一个开源的WebRTC媒体服务器项目,旨在提供高效的视频会议流媒体服务。该项目基于WebRTC技术,能够将单个WebRTC流扩展到多个终端,并支持媒体流分析功能。owt-server 特点包括: - 分布式、可扩展且可靠的SFU(Selective Forwarding Unit)+ MCU(Multipoint Conferencing Unit)服务器 - 在Int...

gitblog_00818的博客 443

OWT-SERVER

最近做mcu相关业务,原项目利用owt-server开发。 management_api 1个或者多个实例,owt服务的入口,保存所有房间的配置,产生认证tokens,部署多个实例可以实现负载均衡,用户接入可见 cluster-manager 1个或者多个实例,控制集群中所有的workers,检查保活,按照配置去调度workers,如果设定一个是master,则提供服务,其他的作为备用,用户可见 webrtc_agent 1个或者多个,负责webrtc的数据交互,接收客户端的发送发送媒体数

Randy009的博客 1267

owt-server 数据流程

1,/root/Projects/owt-server/dist/management_api/rpc/rpc.js //Create the queue for send messages clientQueue = connection.queue('', function (q) { log.info('ClientQueue ' + q.name + ' is open'+',clientQueue.name:'+cli...

dtryl的专栏 1088

OWT-Server 编译运行

1,编译源码,发现v8::Handle未声明的错误,经过多方调查,发现是node的版本的问题,可以用node 10.16.0,这个坑里面爬了一整天,也考虑过直接复制 ~/.cache/node-gyp/下面的正确版本号目录里面的内容,料安装好指定版本的node之后,自动创建了这个目录,真是神奇。 2,usrsctp编译遇到错误,经过检查,是编译选项太拉风的原因,修改/root/Projects/owt-server/build/libdeps/usrsctp/configure 1214...

dtryl的专栏 739

Docker环境安装OWT Server[Open WebRTC Toolkit]

目录 Docker环境安装OWT Server Docker自定义开发OWT Server

努力努力再努力L 1789

如何使用OWTServer

架构图 编译及安装 下载源码 git clone https://github.com/open-webrtc-toolkit/owt-server.git 安装依赖 cd owt-server && ./script/installDepsUnattended.sh 编译native模块 ./script/pack.js –t mcu –ch...

TopsLuo的专栏 4377

【亲测免费】 开源项目教程:OpenWebRTC Toolkit (OWT) Server 深入指南

**OpenWebRTC Toolkit (OWT)** 是一个高度可扩展的实时通信平台,它基于WebRTC技术,提供了从端到端的视频音频通信解决方案。OWT Server作为其核心组件之一,负责处理信令、媒体转码、录制等任务,支持多种应用场景,如视频会议、直播、远程教育等。该项目开源于GitHub,地址为:[https://github.com/open-webrtc-toolkit/owt-...

gitblog_00468的博客 845

owt-server】webrtc agent :js层

webrtcagent

突围 1282

owt-server基本架构

第一块就是跟客户端进行信令交互的部件,即图中的WebRTC PortalSIP Portal。他们跟WebRTC客户端SIP终端进行信令交互。值得注意的一点是WebRTC标准对信令交互的格式通道没有规定,采用的是一种承载在socket.io通道中的私有协议。 第二块是跟客户端进行音视频媒体交互的部件,即图中的WebRTC Agent、Streaming Agent、SIP AgentRecording Agent。其中WebRTC Agent负责跟客户端之间建立PeerConnection连接..

Randy009的博客 1940
上一篇: owt-server接口总结
下一篇: 流媒体开源总结
im-pingo
博客等级 码龄7年 304粉丝 45原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值