我正在编写一个python脚本,通过socketio将视频数据从ip camera传输到Web应用程序。问题出在这里:
sio.emit('my response', {'data': camera_buffer},
namespace='/test')
这是引发的UnicodeDecodeError,因为camera_buffer表示ffmpeg格式的二进制数据。我的问题是,如何告诉Python这是二进制数据而不是字符串?或者只是如何防止解码?
到目前为止唯一有效的方法是使用binascii.hexlify(camera_buffer),但我想避免这种情况,因为它会给我带来不必要的开销。 我还尝试将数据作为bytearray发送。 我的操作系统是Ubuntu 15.10。
编辑:有没有办法从管道读取数据而不是字符串,但是以二进制形式?我想这可以有所帮助。我尝试了io=open('name_of_pipe','rb')
,但是从中读取仍然会返回'str'。有什么想法吗?
答案 0 :(得分:0)
编辑: 你能尝试一下:
name_of_pipe_binary = os.fdopen('name_of_pipe', 'rb', 0)
然后使用“name_of_pipe_binary”而不是“name_of_pipe”?
如需了解更多信息,请查看:http://python-socketio.readthedocs.io/en/latest/#socketio.Server.emit
emit(event, data=None, room=None, skip_sid=None, namespace=None, callback=None)
data - 要发送给客户端或客户端的数据。数据可以是 str,bytes,list或dict
类型