使用Python的rtmplib绑定并遇到一些问题。在
首先
我有这样的东西:
import librtmp
conn = librtmp.RTMP(...)
conn.connect()
while True:
packet = conn.read_packet().body
print packet
这将打印如下所示的数据包:
{1美元^
对我来说,这看起来像十六进制,当我写入一个文件时,我得到4个字符字符串,如下所示:
^{pr2}$所以我的问题是,如何将它转换成一个只有可读文本的真正的字符串(或缓冲区)?我尝试了不同的方法来解码hex,但结果是“\x05”。在
另外值得一提的是,在写作的时候,它包含了很多的00
有人知道我怎样才能以一种简单而好的方式实现我之前所要求的?在
提前谢谢。在
解决方案是
librtmp.amf.decode_amf
。在这是由管理Python的librtmp包装器的人指出的。在
如果你不知道你将得到什么,那么把数据保存到一个文件中,然后用查看器查看它?(例如linux上的od)。在
另外,如果你不知道你将收到什么样的数据,那么看看你是否找不到rtmp在线提供的任何格式的描述。(我认为既然像red5这样的东西存在,这应该被记录下来。。还有一些文档http://wwwimages.adobe.com/content/dam/Adobe/en/devnet/rtmp/pdf/rtmp_specification_1.0.pdf
如果你知道你得到了什么,你可以用struct内置库解包数据 https://docs.python.org/2/library/struct.html
不过,我有点惊讶librtmp没有提供高级解析对象。你不可能是第一个想这么做的人。。所以看看有没有其他人有一个库来处理这个问题。在
相关问题 更多 >
编程相关推荐