通过 rtp 流发送 Android h264 捕获

2023-12-03

我正在为 android 编写一个 rtp 视频流媒体,它从 Android 本地套接字读取 h264 编码数据并将其打包。问题是我做到了,但我在客户端(Voip)不断收到黑框。

通信过程如下:Android -> Asterisk -> Jitsi (Osx)(以及反向)

有几件事我还没有理解:

1)Android的mediarecorder给我一个原始的h264流,我如何知道基于该流的NAL何时开始/结束?它没有任何 0x000001 模式,但它确实有一个 0x0000 (我假设它是分隔符)

EDIT:

添加更多信息。这些是 2 (first, second)输入缓冲区的不同读取(按顺序)。如果我猜对了,前 4 个字节应该用于获取 NALU 长度,第 5 个字节(索引 4)是 NALU 标头。

我将在此处复制字节的值以供将来使用:

1) 0 0 12 114 101 -72 4 25 -15 -1 -121 -53 .....

   length = (114&0xFF) + (12&0xFF)*256 + (0&0xFF)
   length -> 3186

   forbidden = 101 & 0x80
   forbidden -> 0

   nri = 101 & 0x60
   nri -> 96

   nal_unit_type = 101 & 0x1F
   nal_unit_type -> 5


2) 0 0 1 -93 97 -32 32 103 -14 93 -1 .... 

   length = (-93&0xFF) + (1&0xFF)*256 + (0&0xFF)
   length -> 419

   forbidden = 97 & 0x80
   forbidden -> 0

   nri = 97 & 0x60
   nri -> 96

   nal_unit_type = 97 & 0x1F
   nal_unit_type -> 1

它是否正确?

2)如何从该流中获取 NALu 时间戳及其长度?

3)由于某种原因,数据包被标记(即使我取消设置标记)。 (如果你检查pcap文件)[FIXED:我没有对每个数据包使用相同的 SSCR]

这是一个pcap捕获来自星号(来自 Android)的流。 Android 设备是带有 Android ICS 的 Asus Transform Prime。

我正在发送打包模式(1) 和配置文件级别 ID (42801e)在sdp中,我还尝试发送sprops(sps:Z0KAHpWgUHxA, psp: aM48gA==)参数但没有改变。

Cheers.


  1. 没有“android h264 流格式”。打包应该遵循RFC6184如果使用 RTP 作为传输协议。 RTP 有效负载格式中不存在起始代码。 RTP 数据包中包含的内容完全取决于打包模式,该模式指定 NAL 单元是否可以聚合、分段等。请阅读 RFC 部分打包模式了解更多信息。打包方式通常通过SDP进行通信。

  2. 时间戳是 RTP 标头的一部分。 NAL 单元的长度同样取决于打包模式。

  3. 你说的标记是什么意思?您的意思是设置了 RTP 标记位吗?如果是这样,则必须再次遵循 RFC 中规定的规则。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过 rtp 流发送 Android h264 捕获 的相关文章

  • 无法在 OSX 上使用 eclipse for android 链接到 cocos2dx

    我以前从来没有花这么多时间来初始设置开发环境 这有点荒谬 我正在尝试运行cocos2dx附带的演示代码 我在用着 ADK 附带的 eclipse 风格 cocos2d 2 1beta3 x 2 1 0 ndk r8c 我尝试使用 creat
  • Android:在对话框中使用日期选择器和时间选择器

    我面临一个我不知道如何解决的问题 我有一个活动 当我单击链接到该活动的菜单的特定项目时 会显示一个对话框 用于添加项目 该项目有日期和时间 但我无法获得DatePicker and TimePicker在此对话框中 我还尝试将活动传递给对话
  • GLSurfaceView onDrawFrame 清除行为

    我在使用 GLSurfaceView 时遇到了不同的行为 据我所知 程序有责任清除每帧的缓冲区 颜色和深度 这意味着 如果我不清除缓冲区 我将获得最后一帧的内容 或双缓冲的前一帧 似乎无论在某些设备上如何 缓冲区都会被清除 我在一些测试设备
  • 自定义相机预览问题(拉伸)

    我的相机应用程序出现问题 我的应用程序有 1 CameraActivity class和 2 CameraPreview class CameraPreview实施一个surfaceView它是从哪里调用的CameraActivity以进行
  • ViewPager 中的按钮滚动到特定页面

    我的 ViewPager 内的布局之一有一个按钮 R layout add site 我想要点击按钮的选项 它会滚动到我的特定页面 我已经可以选择滑动到特定页面 但我想同时拥有这两个选项 现在我确信有办法做到这一点 但由于某种原因 我无法弄
  • ANDROID:Webview 和 httpclient 之间共享会话

    我的 WebView 中实际上有一个记录的会话 但我也使用 httpclient 从网络发送和获取数据 我在互联网上看到不可能获取WebView的内容 所以我需要使用我的httpclient从Web服务获取数据 问题是这个Web服务使用会话
  • Android-使用 ViewHolder 和 AsyncTask 加载联系人-缩略图问题

    我正在创建一个自定义联系人应用程序 我使用带有 ViewHolder 设计模式的 ArrayAdapter 进行优化 由于加载缩略图需要花费大量时间 因此我使用 AsyncTask 类来加载图像 用于第一组联系人我的屏幕上 图片加载得很好
  • ListView 滚动时隐藏和显示浮动按钮

    我正在我的应用程序中创建一个 listView 和一个浮动按钮 我希望根据滚动状态实现隐藏和返回的效果 当 的时候ListView滚动时按钮隐藏得很好 但是当滚动停止时按钮不会返回到其初始位置 有任何想法吗 My Code public c
  • 如何在 jetpack compose 中预览对话框?

    我有这个代码 Composable fun SomeDialog Dialog onDismissRequest properties DialogProperties Preview showBackground true Composa
  • 如何在没有 Google Play 服务的情况下设置 Android 模拟器

    一位客户要求我制作一个应用程序版本 以便在没有 Google Play 服务的设备上运行 有什么方法可以告诉 Android 模拟器在不使用 GPS 的情况下运行应用程序吗 然后我可以测试代码以确保它可以在客户端设备上运行 使用不包含 go
  • 如何从 RSS feed 中获取图像

    我正在尝试从 URL 获取 RSS 新闻http timesofindia indiatimes com rssfeeds 1945062111 cms http timesofindia indiatimes com rssfeeds 1
  • 自定义 URL 方案不是 Outlook 中的链接 (iOS/Android)

    我们的应用程序可以使用自定义 URL 方案启动 例如myapp mainpage param 123 当它作为链接包含在网页中时 此功能有效 而且 在 iOS 上 它可以在平台附带的邮件客户端中运行 用户注册并安装该应用程序后 他会收到一封
  • 如何过滤EditText的输入?

    我想过滤一个的输入EditText 只允许使用数字和字母 首先我使用TextWatcher处理最后一个输入字符 但是当您移动光标或将某些内容粘贴到EditText 这个方法失败了 现在我想知道有没有办法过滤非法输入并反馈给用户 Add In
  • 在 Java/Android 中查找 UTF-8 字符串中的字符数

    我试图找出字符串以 UTF 8 存储时的长度 我尝试了以下方法 String str Charset UTF8 CHARSET Charset forName UTF 8 byte abc str getBytes UTF8 CHARSET
  • RecyclerView onItemClickListener 不工作

    我正在研究回收视图并尝试对 recyclerview 的每个项目使用点击侦听器界面 这是我的活动课程 public class LegacyHomeActivity extends ActivityBaseDrawer private Li
  • 如果没有当前类的引用,svgLoader 无法工作

    这是我的主类 通过这个类 我通过 url 从 api 获取数据 并创建一个适配器类来维护它 但发生了意外错误 这是MainActivity java public class MainActivity extends AppCompatAc
  • 多少次函数调用会导致堆栈溢出

    你好 Android Java 开发者 当一个函数调用一个函数并且该函数调用另一个函数等等时 有多少次调用 堆栈长度 会让我陷入堆栈溢出 有一般经验法则吗 我问的原因是因为我现在对于我的 5 人纸牌游戏来说哪个更有效 设计明智 解决方案一
  • Android 检测片段何时分离

    我可以轻松检测到Fragments附于Activity via Activity onAttachFragment 但我怎样才能检测到Activity那一些Fragment脱离活动了吗 没有Activity onDetachFragment
  • 如何在android中创建nanohttpd服务器?

    其实我也查过一些问题 然后去github上找了一下 但我是新来的 我无法理解这个例子 我想在android中创建http服务器 这样我就可以在PC浏览器中访问它 我有一个类扩展 nanohttpd 的实例 但服务器无法工作 不知道为什么 我
  • 当从 Firebase 控制台删除 Firebase 用户(用户登录后)时,它不会反映在应用程序中 [重复]

    这个问题在这里已经有答案了 The user uid仍然会来 在这个的帮助下uid null 我假设用户已登录 我也尝试过addAuthStateListener mAuthListener 但我仍然获取之前删除的用户的 UID 如果不使用

随机推荐

  • JavaScript 过滤图像颜色

    嘿 我正在寻找一种拍摄黑白照片的方法img元素 并使用 JavaScript 指定 RGB 值 以便图像变成该颜色 有什么想法 除了图书馆 我也尝试只用 IE 来做到这一点 我只在 IE 中这样做的原因是因为我正在制作一个小的侧边栏小工具
  • 使用 Three.js 创建凹半球

    我是一名具有良好 JavaScript 经验的 Web 开发人员 目前正在探索Three js的可能性 然而 我对 3D 形状和词汇不是很熟悉 我不知道如何构建我需要的形状 我想创建一个半球体 并且能够投影视频inside这个球体 我有一个
  • 移动太慢时 jquery mouseleave 问题

    我正在使用 jQuery mouseenter 和 mouseleave 事件来上下滑动 div 除了 mouseleave 之外 一切都运行良好 只有当鼠标从 div 上移开的速度相当慢时 它才不会触发 如果我以相对正常或较快的速度移动鼠
  • 如何在 ctypes 中使用 typedef

    我正在尝试使用 ctypes 库在 Python 中包装 C 库 我这样包装结构 file c typedef struct int x int y Point file py import ctypes class Point ctype
  • 当跨度是锚点的子级时,不显示标题工具提示

    例如 考虑以下 DOM 结构 a href title The Anchor img src http www adiumxtras com images thumbs dango status icon set 7 19047 6248
  • 制作每日重置的InfluxDB/Grafana累积函数(锯齿图)

    我将能源使用数据记录为计数器 我希望将其显示为每天重置的累积图表 类似地在这里问 我可以按如下方式生成累积值 SELECT mean value FROM energy WHERE timeFilter GROUP BY time inte
  • 解决方案资源管理器中文件上的蓝色问号

    当通过 P4VS 打开绑定到 Perforce 的解决方案时 我的 VS2012 解决方案资源管理器中的文件上经常出现蓝色问号 看起来有些东西无法与仓库 工作区 诸如此类的东西 同步 点击 刷新视图 总是能解决问题 但我每天都这样做已经厌倦
  • 使用 PyArray_SimpleNew 创建 PyArrayObject 时出现分段错误

    我正在为 numpy 创建一个 C 扩展 该函数应该返回一个数组 因此我决定使用 PyArray SimpleNew 创建一个尺寸为 50x10 的 PyArrayObject 然后用一些值填充它 这是代码 PyArrayObject a
  • npm install 没有安装依赖项的依赖项

    When I npm install我的节点应用程序 我的包列表dependencies我的财产package json已安装 但是 由于某种原因 其中一些依赖项没有安装它们的子依赖项 换句话说 我的依赖项的依赖项没有node module
  • 无法让 CKEditor 插件在 django 中工作

    我正在尝试让 CKEditor 插件 codenippet 在 django 管理中工作 但无法做到 如果我没有在 settings py 中定义任何 CKEDIT CONFIGS CKEditor 就可以工作 如果取出 extraPlug
  • iText - 如何设置 PdfAnnotationInk 的描边宽度和不透明度

    绘制墨迹类型注释时 应该调用哪些函数来设置笔划宽度和不透明度 我已经浏览过 PdfAnnotation 和 PDFStamp 的类 API 但似乎没有直接设置宽度和不透明度的函数 有什么建议么 谢谢 我的示例程序 final String
  • 无法使用solr4配置Tika1.2

    我正在尝试使用 TikaEntityProcessor 来索引 html 文件内容 不知怎的 我无法正确地得到它 我检查了错误日志并收到以下错误 SEVERE Full Import failed java lang RuntimeExce
  • 平移到特定的 X 和 Y 坐标并居中图像 svg-pan-zoom

    我正在使用 ariutta svg pan zoom 库 https github com ariutta svg pan zoom 当用户单击按钮时 我尝试平移到 x 1000 y 20 处的特定形状 我还希望图像此时居中 我面临的问题是
  • 如何使用代码切换 Unity 中的复选框?

    我查看了 Toggle API 但找不到将其设置为使用代码检查的方法 http docs unity3d com ScriptReference UI Toggle html 我想要这样做的原因是我想根据游戏开始时的设置将复选框设置为选中状
  • 在 R 中使用多列作为键进行合并或 cbind

    我正在使用一个玩具示例 Data set A color number valueA red 18 0 2 blue 21 0 6 green 15 0 9 red 10 1 0 blue 11 2 1 green 13 3 6 Data
  • 为什么编译器允许你在这里“写入”const 变量?

    为什么你可以这样欺骗编译器 const int a 5 int a 5 VC armcc does not complain 当上面是 删节 时 相当于 const int ptr2const a int ptr ptr2const as
  • 来自 GATE 论文的 C 程序

    嘿 昨天我已经参加了 GATE 考试 在这次考试中有一个问题 以下 C 程序片段打印什么 char c GATE2011 char p c printf s p p 3 p 1 options A GATE2011 B E2011 C 20
  • Mac 上的“dotnetpublish”会创建一个 .dll,但在 Linux 上会生成一个可执行文件?

    当我跑步时dotnet publish在使用我的 Mac 的控制台应用程序上 结果是 dll in the bin Debug
  • Python三元运算符和else中的赋值

    三元运算符非常有用 为什么它在这种特殊情况下不起作用 c d d d c 1 if c in d else d c 1 它给 d c 1 if c in d else d c 1 SyntaxError invalid syntax 我在这
  • 通过 rtp 流发送 Android h264 捕获

    我正在为 android 编写一个 rtp 视频流媒体 它从 Android 本地套接字读取 h264 编码数据并将其打包 问题是我做到了 但我在客户端 Voip 不断收到黑框 通信过程如下 Android gt Asterisk gt J