Hello Tello Pilot!
Join our DJI Tello community & remove this banner.
Sign up

Translating an h264 code to an image in python

vasilis1926

New member
Joined
Feb 7, 2020
Messages
4
Reaction score
0
I am working on a project and I am trying to save the video from a drone in my computer and also show it live. I thought about converting the video in Images about 30 per second and updating my frontend with these pictures so that it looks like a video. Since It is the first time I am working with video and image strings I need some help. As far as I can figure out with my knowledge I am receiving a byte string. I can not use the libh264 decoder because i am unable to intergrate it in python 3.7 its only working with python 2

I would appreciate it if you could help me understand where every picture starts and where it ends. I assume that there has to be some kind of parity bits. How is it possible to make a picture out of it. Here is my code and what I've tried so far:
def videoLogging(self):
logging.info("-----------[Tello] Video Thread: started------------------")
INTERVAL = 0.2
index = 0
while True:
try:
packet_data = None
index += 1
res_string, ip = self.video_socket.recvfrom(2048)
packet_data = res_string
print(packet_data)
self.createImg(packet_data)
time.sleep(5)
# videoResponse = self.video_socket.recv(2048)
# mv = memoryview(videoResponse).cast('H')
# if mv is not None:
# self.createImg(mv)
# print("image created")
# print('VIDEO %s' % videoResponse)
# time.sleep(3)
except Exception as ex:
logging.error("Error in listening to tello\t\t %s" % ex)

def createImg(self, data):
with open('image.jpg', 'wb') as f:
f.write(data)
Unfortunately, the image can't be opened. Thank you in regards.


Here the first bytestring that i read:
b'\x00\x00\x00\x01A\xe2\x82_\xc1^\xa9y\xae\xa3\xf2G\x1a \x89z\' \x8c\xa6\xe7I}\xf3F\x07t\xf4*b\xd8\xc7\xff\x82\xb32\xb7\x07\x9b\xf5r0\xa0\x1e\x10\x8e\x80\x07\xc1\xdd\xb8g\xba)\x02\xee\x9f\x16][\xe4\xc6\x16\xc8\x17y\x02\xdb\x974\x13Mfn\xcc6TB\xadC\xb3Y\xadB~"\xd5\xdb\xdbg\xbaQ:{\xbftV\xc4s\xb8\xa3\x1cC\xe9?\xca\xf6\xef\x84]?\xbd`\x94\xf6+\xa8\xb4]\xc3\xe9\xa8-I\xd1\x180\xed\xc9\xee\xf4\x93\xd2\r\x00p1\xb3\x1d\xa2~\xfa\xe8\xf4\x97\x08\xc1\x18\x8ad,\xb6\x80\x86\xc6\x05V\x0ba\xcb\x7f\x82\xf2\x03\x9a)\xd6\xd9\x11\x92\x7f\xb5\x8a)R\xaa\xa0 \x85$\xd82(\xee\xd2\x8b\x94N\xacg\x07\x98n\x95OJ\xa4\xcc_\\-\x17\x13\xf3V\x96_\xb5\x97\xe2\xa2;\x03q\xce\x9b\x9e,\xe37{Z\x00\xce|\\\xf9\xdb\xa7\xba\xf3\'c\xee\xc9\xe7I\xfadZ\xb2\xfb\t\xb6\x03\x03\xfe\x9dM!!k\xec\xe0t{\xfeig\xcbL\xf6\x0bOP\r\x97\t\x95Hb\xd81\xb5\xbfVLZ#\x16s\xb6\x1adf\xb5\xe2\xb5\xb7\xccI\x82l\x05\xe9\x85\xd3\'x\x14C\xeb\xc4\xcb\xa5\xc7\xb6=\x7f\\m4\xa4\x00~\xdb\x97\xe4\xbb\xf3A\x86 Mm\xc7\x9a\x90\xda&\xc5\xf2wY\nr.1\xb9\x0c\xb4\xb1\xb2!\x03)\xb3\x19\x1d\xba\xfb)\xb0\xd2LS\x93\xe3\xb4t\x91\xed\xa7\xfe\xceV\x10\xa7Vcd\xcbIt\xdf\xff0\xcb9Q\xef(\x11&W0|p\x13\xfe\xd6\x93A\xa7\xc2(f\xde\xcc[\x8f#P\x07\x1f\xb0\\.\xd0\xa07\xab\xd5\xce\xb1N\xfb\xd3\xcc\x0f\x89+gm1p4\x87_\xf6\xfe\x13\xe8\xec\xa3vd,\xb3jW\x96\xe2\x937\xcb\xc5\xc4\xdb\xd9(wj\xa85y\xccE \xf8\xe4\x83\xd5\xcf\xe5A\xf9\x18T;v\x00\xbc\xac\xd1a\xed\tK\xd6\xd4\xd4\xc4W\xe4F7L\xfc\xb4\xeb3\x937\x94\x02i\xf3\x85\xbe\x05B\xf5\xb8\xccO\x84\xfb]M\x0c\xd8k\x00va\x0f\x91M\xd9\x9f9\xfc\x0f6\xa4f\xc5\xbe\xd9GItD\xdf7*\x93Kv)~[\xf1%\xeb(o\xef;\xc0\xb4,\xa1\xc2V\x8a\xff\xe1\x86\x17\xe7\xf17\xe81l&\x14<j\xb0AS\xf92\xb1C;\x81\x8a\x06D\xab\x11j\xcd\xb1q\x9e\xefm\x0ei7\x15\x8d\x03\xdd6B\xd9qg*X\x0f\xe6F\xdc\xb6\x93N\xbe\x12\xc9#I\xe3\xd4\x80j\xe8z\xd5t\x05,Y\xd7\xec\xd1\x9a\x97\xae\x16\xb0\xdfi\xb2\xb8\xb5J-\xde9&\x1ai\x19\xb7\x81\xa3\'\xccf]\xeeK#\x8bk3\x11\x97\\T\x88\xfb\xee\xd3El:\x16\x13\xafi\xc0\xf9\xef\xefe7\xe4w\x14\xdf76g^\xd02J\x96Z\xedl\x19\x8eG\xb7\xc6\xebHj\x86\x84/:R{+co\xa0\xaa\xeb.\xbb\x0e\xc9\xf3\xa8\x1e\xd4\x1a\x010\x87;\xef\xbe\xaf.\x87\x9a5\xfdG\x82\xd5\xb2\x01\x1e\xf2\xd3l\xef\tb\xe7=1\x03\x8f\xae\x83\x84:0\x9bE;x\x03UB\x87\xbco\xb2\x80xZ\x96\x1a\x0e?i\xe51^\x9b\x1d\xb4\\|\xccH\xdf3G\x83\xbd/\rhS0;\x9a\xdb\xf6NG\x16 ?\xf3\x13<\xcf!p\xd5\n\xb1\xf2\x0e\xcc\xdc\x0b\xe6\xe8\xcb@\x85\x17s@\x87\xb4\xf8f\xc7\x9fi\xcc\xe4b\xca\xc0\x1eh\xc1u\xad\x98\x92\x12\x00\xb5`\xfa!~{\xac\xc0\x14:\xce\xfc\xa4\x90\x12\xc4K\xa5\xb9\x83\xd1\x03\x1a\xd8z\xf6A\xe9\xfbb\x07\x99\xf80\x9b,\x17\x8d /ZXb]\xb2P\\\'\xcb\n\xae\x82\x99X\xf5\t\xd1\xc9p\x11\x8d\xcaD\xf2\x8b\x8bc%\x17] \x89b\xa9kF\x93\xc0\xe1{INUg\xec\xb4\x1b`{\xd1:\xb3\xa4\x7f\t\x9b\xde\xb0V\x1f\xd7\x85>\xbeT\xbb\xe5\xf0u\x96\x98\xad\x9a\xc3N\xf8A\x91\xd95h\x1ef\xbc\xf2\x08B\xe0\x9f\xe0\x1d+\xb6$\xafA\xca\xf6\xc5MX\x88\x9e\xf1\xbawZ\x87\xe7\xf7\xf4\xcd\xe4\x92|L\x1ep69\x81\x8f\xc6\'\xc1q\xe3\x98\x1ev\x94\xa3\xd5\xb8g\xee\x82\xd3Y\xccs\x81\x06\x97\x02\xf0\xd8S\xf1\x1b!\x8emp\x02w\x97\x11t]5?\x16\xfa\xf2\xfb\xf7\xef\xdf\xe4\x82V\x07?F`\xcf\xee\xef\xe7\xae\x18\xef\x83a\x87\xb1zh\xe7\xaez]\x1e\xc5\xd9\xe7&\x9a\xf0\xd0\xa4!\x05\x07\xff\xca\x10\xfa\xb7\x01\x9aU\x8b(\xb5#\x11\x95\x98\x8b\xe3\x84\x9b\x13\xecw\x0e\xc9\xad<X\xde\x11\tuo\xd2\xfd\xb6\xc2\x1c\xfb\x82 \xb2\xa6\x02\x8c0\x19\xadP\x1b\xc3C\x08\xc9-\xaa\xd0\x15\xb3\xd2g\x07\x980:u\r\xfc\xf4&\xf9\x06$#\x85\xe1l\x16\x8a\x9f\xedX\xa0b\x1a^\x90#256\xc0z\xc7\xfax\xde\xa2\x0fKHY\xed8\xc6`\xa7^@\x0b.\xc4\x1a\r\x938\x17\xe2|\xb0\x95-\xce\xaa}\xc3\xb5\x0bS\xbb\xc6\x0cA\x00`\xe5:\x00\xc6\x0b\x93(1]\xb1\xb6\xc0\xc0de;]~\xa1\xc6d\xf7\x12\xc9\x0f\xfc\xd4\xd0\xfcJ\xb9\xd5\nE\x9a\x7f\x12\xbd\x83\x87\xff\xb8\x15\x0fm\x14p\xba\xc0\xef\x87v\x9e\\\xfd\x8f;\xe3\xb5\x03\x94\xd6t\xa5\xc2\xe9\x92\xd1\xcd9cS\x15\x9c}\xdd\x9f\xf4\xe1\xd2\xb6cR\xb1\x18\x83\xe7\n\xde\xfeUM\x90\xf9\xbf\xf6\xd8J\xc7\x1a:z\x0bGL\x00l\xf6\xa5\x1f$\x86O6\xfa\x13\x04G\x0e\xfe\xca\xbe\xaf\xe1\xb6\xfa\x91\x9b\xb5\x9f]\x12N\x9c\xcf4b}E\x07\xa6B\xd2\x10\xe0Xjxi\x93\x92w\x1d \xd5\xd1\x87,5\xa0\xd3\x18\x8e\xe0\xad9o\x92\x8d\xb1\x95o\x0c"\xb4\xadW\xf9\xc9\xa0\xe5i\xdb\x17\xea\xd6o$Y\xfb\xb5\x9c\x93\x16\xf7\xc0\x1cz\x00\xfc$\x08\x9ay38Y\xe1_8\xb2\xe2\xd1\t\xcdfmcpSEt\x86\xa6'
 
Find an updated h264 decoder (for Python3 and Linux/Raspbian as platform) in my repository:

f41ardu/Tello-Python

Some libraries are required, including boost for python and cmake. If you are familar with your system building the decoder could be straight forward.
I have no idea to built for the windows platform.

f41ardu
 
Find an updated h264 decoder (for Python3 and Linux/Raspbian as platform) in my repository:

f41ardu/Tello-Python

Some libraries are required, including boost for python and cmake. If you are familar with your system building the decoder could be straight forward.
I have no idea to built for the windows platform.

f41ardu

Thanks for this solution.
I tried to build it for Windows, but failed.
I am not familiar with cmake and got a lot of error messages.
I'll try again on the Raspberry Pi.
 

Members online

Forum statistics

Threads
5,696
Messages
39,955
Members
17,054
Latest member
Soccer843