如何确保来自不同 Android 设备的 RTMP 流具有相同的 SPS/PPS?

Posted

技术标签:

【中文标题】如何确保来自不同 Android 设备的 RTMP 流具有相同的 SPS/PPS?【英文标题】:How do I ensure that RTMP Streams from different Android devices have the same SPS/PPS? 【发布时间】:2018-10-19 03:45:28 【问题描述】:

我正在测试的三个 android 设备具有三个不同的 AVC 数据包。以下是三星、摩托罗拉和 Doffe 的示例。

三星 1700000000014d001effe10012674d001eda0280bfe5948283030368509a8001000468ee0

摩托罗拉 1700000000014d001effe10012674d001ee901405ff2ca41418181b4284d4001000468ee06e2

杜夫 170000000001640029ffe1001067640029ac1b1a80a02ff9601e1108a701000468ea43cb

当我交错视频时,这会导致很大的问题。视频播放器明显感到困惑并且无法播放。

如何确保视频标题相同?我应该使用软件编码器并绕过硬件编码器吗?

【问题讨论】:

【参考方案1】:

客户端是如何进行编码的?

PPS SPS 描述您的视频流参数,如帧大小、配置文件等,并且几乎总是由编码器生成。

如何确保视频标题相同?

因此,您必须确保所有设备使用相同的视频编码器并以相同的格式发布视频(帧大小、比特率、fps、配置文件、关键帧数等)

我应该使用软件编码器并绕过硬件编码器吗?

在您的情况下,优先使用软编码器。但是您首先可以尝试使编码器配置相同。最有可能解决您的问题

【讨论】:

谢谢,Onix。我们确实实现了软件编码器,并且工作起来就像一个魅力。你是对的!

以上是关于如何确保来自不同 Android 设备的 RTMP 流具有相同的 SPS/PPS?的主要内容,如果未能解决你的问题,请参考以下文章

Android:如何通过 RTMP 将 H264 原始数据发布到直播服务器

如何实现RTMP推送Android Camera2数据

app-interview

从 RTMP 获取 videoStream 到 opencv

不使用 Flash 在 WebView Android 中播放 RTMP

Android平台GB28181设备接入端如何调节实时音量?