Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Video capture fails, though ffmpeg does capture video. #164

Open
pbeeken opened this issue Nov 19, 2022 · 3 comments
Open

Video capture fails, though ffmpeg does capture video. #164

pbeeken opened this issue Nov 19, 2022 · 3 comments

Comments

@pbeeken
Copy link

pbeeken commented Nov 19, 2022

I am a physics teacher whose school has a set of these drones and I am trying to develop some labs with my students using the drones. I have been playing with this library for a short while and the basic commands seem to work well (better than my initial attempts at device control) but I have been having trouble with the video capture.

Using the following simple code

from djitellopy import Tello
import cv2

tello = Tello()
tello.connect()

tello.streamon()
frame_read = tello.get_frame_read()

def show_frames():
    while True:
        img = frame_read.frame
        cv2.imshow("Tello", img)
show_frames()

yields a long stream of errors and warning with no video (regardless if it is presented on screen or saved to a file)

[INFO] tello.py - 122 - Tello instance was initialized. Host: '192.168.10.1'. Port: '8889'.
[INFO] tello.py - 437 - Send command: 'command'
[ERROR] tello.py - 457 - 'utf-8' codec can't decode byte 0xcc in position 0: invalid continuation byte
[INFO] tello.py - 437 - Send command: 'command'
[INFO] tello.py - 461 - Response command: 'ok'
[INFO] tello.py - 437 - Send command: 'streamon'
[INFO] tello.py - 461 - Response streamon: 'ok'
[h264 @ 0x1efe380] non-existing PPS 0 referenced
[h264 @ 0x1efe380] non-existing PPS 0 referenced
[h264 @ 0x1efe380] decode_slice_header error
[h264 @ 0x1efe380] no frame!
... etc. etc.
followed by:
[h264 @ 0x1efe380] error while decoding MB 55 40, bytestream -5
[h264 @ 0x23984c0] left block unavailable for requested intra mode
[h264 @ 0x23984c0] error while decoding MB 0 38, bytestream 3908
[h264 @ 0x23acc40] error while decoding MB 55 40, bytestream -5
[h264 @ 0x23984c0] error while decoding MB 13 36, bytestream -6
[h264 @ 0x23984c0] left block unavailable for requested intra mode
[h264 @ 0x23984c0] error while decoding MB 0 40, bytestream 2567
[h264 @ 0x21e6140] error while decoding MB 37 38, bytestream -12
[h264 @ 0x23984c0] left block unavailable for requested intra mode
... and so on.

If i capture the video using ffplay -v 0 -f h264 udp://0.0.0.0:11111, however, the video (though delayed and somewhat noisy) seems to work fine.

If I print the image stream I get arrays as values represented as strings. I would have thought it would be binary values.

[[[  4  44  86]
  [  6  46  88]
  [ 10  48  90]
  ...
  [ 84  92  89]
  [ 84  92  89]
  [ 84  92  89]]

 [[  5  45  87]
  [  6  46  88]
  [ 11  49  91]
  ...
  [ 90  98  95]
  [ 90  98  95]
  [ 90  98  95]]

 [[  4  46  90]
  [  2  44  88]
  [  6  46  90]
  ...
  [ 87  95  92]
  [ 87  95  92]
  [ 87  95  92]]

 ...

 [[ 65  74 114]
  [ 72  81 121]
  [ 75  84 124]
  ...
  [ 39  88  98]
  [ 36  85  95]
  [ 35  84  94]]

 [[ 70  79 119]
  [ 79  88 128]
  [ 81  90 130]
  ...
  [ 40  92 100]
  [ 41  91  99]
  [ 43  93 101]]

 [[ 70  79 119]
  [ 79  88 128]
  [ 84  93 133]
  ...
  [ 40  92 100]
  [ 43  93 101]
  [ 44  94 102]]]

Is there something I am missing here?

@pbeeken pbeeken changed the title Video Capture Fails though ffmpeg works Video capture fails, though ffmpeg does capture video. Nov 19, 2022
@Hoiidman
Copy link

Over 2 years later, have you found a solution?

@pbeeken
Copy link
Author

pbeeken commented Jan 15, 2023

No. I have kind of given up on the lab. I have some other tools I now use to achieve the same pedagogical goal. I don't think the original development package is being supported anymore. Other issues I've had which are not the manufacturers fault given the price point of the drones: There is no servo control of motion so the drones can't help but drift about even in a closed environment (like a gym or large classroom). This defeats the whole idea of having the drones move in a controlled repeatable way.

@M4GNV5
Copy link
Collaborator

M4GNV5 commented Jun 9, 2023

Sorry for the late response. In my experience the image based flight stabilization of the drones works very well (at least compared to other/cheaper drones ive tried).
Maybe the floor below your drone does not have enough difference to act as orientation and/or the light is too low?

Regarding your original problem:
The frame you printed does in fact look like a proper frame, so everything seems to be working fine.
Maybe the cv2.imshow is broken somehow? Could you try using the latest djitellopy version running the take-picture example?
This way we can rule out problems with the video receiving (having a lot of spammy h264 messages is 'normal')

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants