我使用rtmp https://github.com/theintencity/rtmplite作为直播服务器。我想从流数据中逐帧获取。实际上在服务器中有功能将流保存到函数write
中的 .flv 文件(输入是字节流数据)从行673
到686
我想要的也输入是字节流数据,但输出是逐帧的,这样我就可以在每一帧上进行处理。
以下是我正在处理的功能
def write(self, message):
'''Write a message to the file, assuming it was opened for writing or appending.'''
# if message.type == Message.VIDEO:
# self.videostarted = True
# elif not hasattr(self, "videostarted"): return
if message.type == Message.AUDIO or message.type == Message.VIDEO:
length, ts = message.size, message.time
#if _debug: print 'FLV.write()', message.type, ts
if self.tsr0 is None: self.tsr0 = ts - self.tsr1
self.tsr, ts = ts, ts - self.tsr0
# if message.type == Message.AUDIO: print 'w', message.type, ts
data = struct.pack('>BBHBHB', message.type, (length >> 16) & 0xff, length & 0x0ffff, (ts >> 16) & 0xff, ts & 0x0ffff, (ts >> 24) & 0xff) + '\x00\x00\x00' + message.data
data += struct.pack('>I', len(data))
self.fp.write(data)
message.data
(截断)的输出如下所示
data="2\x00\x00\x84\x0fC?\xff\x9c\x1d\xfc&An\xf9\xc2\x18\xfc4\xbe\xf0\x8a\n\xa7\xd5\x03\x00\xe2\x0c\x03\x18\x94\x08\x01\x0f\xe2@\x1e\x1f\xfe\xfb;$\x93\xb3fo\xfa\x94\xf3\xec\nxZ\xc3k\x08\xfc\xcd\x04{g\xfa\xc4AA\xa4~\xeeo\x1b0#\xecR\x98\x0b_\x080\xac\x9a\xf5pi@\xa4\xae\x87\xce'\xab\xf5c65\xcd...(704)
我不知道如何获取此流的帧,意味着帧应该从哪个字节开始到哪个字节,以及我们如何知道它。
如果有人能给我一些建议或提示,我非常感激。谢谢
答案 0 :(得分:0)