流视频时的UnicodeDecodeError

时间:2016-05-23 06:54:41

标签: python python-2.7 encoding socket.io

我正在编写一个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'。有什么想法吗?

1 个答案:

答案 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

类型