У меня есть следующий код:
import socket
from PIL import Image as im
import numpy as np
from kivy.app import App
from kivy.uix.widget import Widget
from kivy.uix.label import Label
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.image import Image
from kivy.clock import Clock
from kivy.graphics.texture import Texture
def Get_data(host,port):
s = socket.socket()
s.connect((host, port))
data = s.recv(1024)
s.sendall(data)
image = b''
size = 0
while size < int(data.decode('UTF-8')):
in_data = s.recv(102400000)
size += len(in_data)
image = image + in_data
s.close()
Photo = im.frombytes( 'RGB' , (500,500) , image)
return Photo
class CamApp(App):
def build(self):
self.img1=Image()
self.host = '192.168.0.7'
self.port = 65017
layout = BoxLayout()
layout.add_widget(self.img1)
self.lbl = Label(text ="Test Purpose ! ")
layout.add_widget(self.lbl)
Clock.schedule_interval(self.update, 1.0/0.5)
return layout
def update(self, dt):
frame = np.array(Get_data(self.host , self.port))
buf1 = np.flip(frame, 0)
buf = buf1.tobytes()
texture1 = Texture.create(size=(frame.shape[1], frame.shape[0]), colorfmt='bgr')
texture1.blit_buffer(buf, colorfmt='bgr', bufferfmt='ubyte')
self.img1.texture = texture1
if __name__ == '__main__':
CamApp().run()
Он в основном получает изображения с сервера и использует их для отображения видео. Когда я запускаю этот код на своем компьютере, он работает отлично, и вы можете увидеть вывод видео в kivy. Но когда я пытаюсь запустить его на своем телефоне (используя Pydroid 3), видео не отображается. Я знаю, что приложение открывается, когда отображается метка, и сервер показывает, что мой телефон подключен. Я также могу сохранить изображение на свой телефон, поэтому он определенно получает изображение, но не отображается.
В чем проблема?