python - 解码十六进制(?)数据包

标签 python linux python-2.7 rtmp

使用 Python 的 rtmplib 绑定(bind)​​并遇到一些问题。

首先,

我有这样的东西:

import librtmp

conn = librtmp.RTMP(...)
conn.connect()

while True:
  packet = conn.read_packet().body
  print packet

这将打印如下所示的数据包:

example

对我来说这看起来像十六进制,写入文件时我得到 4 个字符字符串,如下所示:

0200 086f 6e42 5744 6f6e 6500 0000 0000
0000 0000 0500 0000 0000 0000 0000 0200
066e 6f74 6963 6500 0000 0000 0000 0000
0502 0003 2a2a 2a02 000a 5072 6f63 6573

所以我的问题是,我怎样才能把它变成一个只有可读文本的真正的字符串(或缓冲区)?我尝试了不同的方法来解码十六进制,但结果以“\x05”结尾。

还值得一提的是,在写入时它包含很多 00。

任何人都知道我怎样才能以一种简单但好的方式实现我之前提出的要求?

提前致谢。

最佳答案

如果您不知道要得到什么,那么将数据保存到文件中并用查看器查看? (例如 od 在 linux 上)。

另外,如果您不知道您将要接收什么数据,那么看看您是否找不到任何 rtmp 在线提供的格式描述。 (我认为因为像 red5 这样的东西存在,所以应该记录下来).. 并且有一些文档 http://wwwimages.adobe.com/content/dam/Adobe/en/devnet/rtmp/pdf/rtmp_specification_1.0.pdf

如果你知道你得到了什么,你可以使用结构内置库解压数据 https://docs.python.org/2/library/struct.html

令我感到惊讶的是,librtmp 并未为您提供高级解析对象。你不可能是第一个想要这样做的人..所以看看其他人是否有一个库来处理这个。

关于python - 解码十六进制(?)数据包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26668113/

相关文章:

python - 为什么向 Celery 添加参数会导致 Python 测试出错?

python - ValueError 时间数据 'Fri Mar 11 15:59:57 EST 2016' 与格式 '%a %b %d %H:%M:%S %Z %Y' 不匹配

linux - RHEL 版本 5.5 (Tikanga),df --total 选项

linux - 为什么我的 shell 脚本会在这个文件中放入任意数字?

python - 为什么冒泡排序实现永远循环?

Python Pandas : Balance an unbalanced dataset (for panel analysis)

linux - node.js 找不到模块 xml2js

python-2.7 - Tweepy API 搜索没有关键字

python - 使用默认打印机打印文本文件

python - 将字符串转换为日期时间到纪元