Загрузите видео с Киви

#python #kivy

Вопрос:

Я новичок в Python и создаю виртуального помощника. Это работает нормально, но я хотел бы вставить видео в формате mp4, когда откроется окно Киви. Я пробовал разные способы, но всегда получаю одну и ту же ошибку, что видео не может загрузиться, даже если оно находится в той же папке, что и приложение. это мой код:

#Файл, который выполняет распознавание лиц rec.py:

 from types import new_class
import face_recognition as fr
import cv2
from face_recognition.api import face_encodings
import numpy as np


def captura():
    cap = True
    video_capture = cv2.VideoCapture(0)

    daniel = fr.load_image_file("admin/daniel.jpg")
    daniel_face_encoding = fr.face_encodings(daniel)[0]

    debora = fr.load_image_file("admin/debora.jpg")
    debora_face_encoding = fr.face_encodings(debora)[0]
    
    julia = fr.load_image_file("admin/julia.jpg")
    julia_face_encoding = fr.face_encodings(julia)[0]
    

    faces_reconhecidas = [
        daniel_face_encoding,
        debora_face_encoding,
        julia_face_encoding
    ]

    nomes_faces_reconhecidas = [
        "Daniel",
        "Debora",
        "Julia"
    ]

    rosto_locations = []
    rosto_encodings = []
    rostos_nome = []
    process_this_frame = True

    while cap:
        ret, frame = video_capture.read()
        
        small_frame = cv2.resize(frame, (0,0), fx=0.25, fy=0.25)
        
        rgb_small_frame = small_frame[:, :, ::-1]
        
        if process_this_frame:
            rosto_locations = fr.face_locations(rgb_small_frame)
            rosto_encodings = fr.face_encodings(rgb_small_frame, rosto_locations)
            
            rosto_nomes = []
            for rosto_encoding in rosto_encodings:
                matches = fr.compare_faces(faces_reconhecidas, rosto_encoding)
                nome = "Desconhecido"
                
                rosto_distancia = fr.face_distance(faces_reconhecidas, rosto_encoding)
                bmi = np.argmin(rosto_distancia)
                if matches[bmi]:
                    nome = nomes_faces_reconhecidas[bmi]
                if nome != "Desconhecido":
                    rosto_nomes.append(nome)
                    cap = False
                    return rosto_nomes 
 

И основной файл

main.py:

     class Chamada(BoxLayout):
    caminho_navegador = "C:/Program Files/Google/Chrome/Application/chrome.exe %s"

    google = 'google.com.br/'
    youtube = 'youtube.com/'
        
    name = rec.captura()
    
    lbl = Label(text="")
    
    def speak(audio):
        engine = px3.init('sapi5')
        voices = engine.getProperty('voices')
        engine.setProperty('voice',  voices[0].id)
        engine.say(audio)
        engine.runAndWait()
        
    def ouvindo(self):

        hora = int(datetime.datetime.now().hour)
        if hora >= 0 and hora < 12:            
            Chamada.speak('Bom dia {}'.format(Chamada().name))
        elif hora >= 12 and hora < 18:
            Chamada.speak('Boa tarde {}'.format(Chamada().name))
        else:
            Chamada.speak('Boa noite {}'.format(Chamada().name))
        
        #Other Methods
        ....



        def takeCommand():
        r = sr.Recognizer()
    
        with sr.Microphone() as source:
            r.adjust_for_ambient_noise(source)
            print("Escutando...")
            r.pause_threshold = 1
            audio = r.listen(source)
    
        try:
            print("Reconhecendo...")
            query = r.recognize_google(audio, language='pt')
            print("Usuário disse {}n".format(query))
            return query
        
        except sr.UnknownValueError:
            return "None"
        def play_video(self):
        video = Video(source='video.mp4')
        video.state = 'play'
        video.options = {'eos': 'loop'}        
 
        video.allow_stretch = True

        def Comandos(self, dt):
            #while True:
                self.size = Window.size
                root = self
                
                self.cores('')
                
                #Here is my problem
                self.play_video()

                query = Chamada.takeCommand().lower()


class Inciar(App):

def build(self):
    com = Chamada()
    Chamada().ouvindo()
    Clock.schedule_interval(com.Comandos, 0.5)
    return com

if __name__ == '__main__':
    clear = lambda: os.system('cls')    
    clear()
    Inciar().run()
 

Но каждый раз, когда я запускаю программу, она вызывает ошибку: Ошибка загрузки<video.mp4>, как показано на скриншоте

Но программа по-прежнему работает нормально, только видео, которое не загружается. Я хотел бы, чтобы кто-нибудь мог мне помочь введите описание изображения здесь

Ответ №1:

Обязательно импортируйте ffpyplayer . Это сработало для меня.