Vai al contenuto

Come creare un lettore video casuale Raspberry Pi

    1647909603

    Se hai un sacco di film, programmi o altri file video locali e non riesci a decidere quale guardare, puoi fare in modo che Raspberry Pi scelga per te, premendo un pulsante. Ad essere onesti, ci sono modi più semplici per riprodurre un video casuale, da file locali o sul Web, ma non sono divertenti come questo progetto. Quindi prendi i popcorn e iniziamo a costruire e codificare il nostro lettore video casuale Raspberry Pi!

    Hardware

    Costruire il circuito per questo progetto è semplice. Abbiamo solo bisogno di tre pulsanti, collegati al GPIO ai pin 2,3,4 e ognuno di questi pulsanti deve anche essere collegato a GND, per questo possiamo usare un singolo pin GND sul Pi e un cavo jumper da femmina a maschio . Collegato al binario – di una breadboard significa che abbiamo più connessioni GND che possono essere collegate tramite i due cavi jumper maschio-maschio. Per ulteriori informazioni, vedere il diagramma nel download di questo progetto. Una volta creato l’hardware, collegare tutti gli accessori necessari per il Pi e avviare il desktop Raspbian.

    Software

    Come con la maggior parte dei progetti Pi, prima di fare qualsiasi altra cosa, dovrai configurare il tuo Raspberry Pi con una copia corrente del sistema operativo Raspbian. Se non desideri utilizzare una tastiera e un mouse dedicati, puoi creare un Raspberry Pi senza testa a cui accedi da un altro computer tramite VNC.

    Prima di poter scrivere qualsiasi codice Python, dobbiamo installare due librerie che ci aiuteranno a creare il progetto. Apri un Terminale e digita quanto segue, ricordati di premere Invio alla fine di ogni riga.

    $ sudo pip3 installa glob$ sudo pip3 installa la tastiera

    Ne parleremo più avanti. Per ora apri l’editor di Python 3, che trovi nel menu Programmazione e clicca su File >> Nuovo per creare un nuovo file vuoto. Fare clic immediatamente su File >> Salva nella nuova finestra. Salva il codice come VideoPlayer.py e ricorda di salvare spesso!

    Quindi ora iniziamo a scrivere il codice e il nostro primo atto è importare le librerie di cui abbiamo bisogno. Le prime tre librerie vengono utilizzate per rilevare la pressione dei pulsanti (GPIO Zero), interrompere l’esecuzione del codice una volta e l’uscita (pausa) e per scegliere un video casuale (scelta).

    da gpiozero import Pulsante da importazione segnale pausa da scelta importazione casuale

    Le ultime tre importazioni sono una libreria che useremo per elencare il contenuto di una directory (glob), eseguire comandi da terminale (sottoprocesso) e l’ultima è una libreria per emulare una tastiera (tastiera).

    import globimport subprocessimport tastiera

    Andando avanti creiamo tre funzioni, blocchi di codice che potremo poi riutilizzare chiamandone il nome. La prima funzione si chiama “play_video” e crea prima un elenco (un oggetto di archiviazione dati) chiamato “video”.

    def play_video():videos = []

    Per riempire l’elenco di informazioni, in particolare un elenco di tutti i video che possiamo riprodurre, utilizziamo un ciclo for, che scorrerà su ogni file in una directory, purché sia ​​un file video mp4. Per questo usiamo “glob” per accedere alla directory “/media/pi/Videos” che in realtà è una chiavetta USB chiamata “Videos” piena di file mp4. Modificalo in modo che corrisponda al nome della directory scelta piena di video. Ogni volta che viene trovato un mp4, viene aggiunto all’elenco dei “video” che abbiamo appena creato.

    per il file in glob.glob(“/media/pi/Videos/*.mp4”): videos.append(file)

    Quindi ora controlliamo che l’elenco sia stato popolato con nomi di file stampando il contenuto dell’elenco sulla shell Python.

    stampa (video)

    Quindi sceglieremo un video casuale dall’elenco e lo memorizzeremo in una variabile chiamata “chosen”, ancora una volta lo stampiamo sulla shell Python.

    Quindi sceglieremo un video casuale dall’elenco e lo memorizzeremo in una variabile chiamata “scelto”, ancora una volta lo stampiamo sulla shell Python scelta = scelta(video) print(scelto) print(scelto)

    L’ultima riga di questa funzione usa la classe Popen dalla libreria dei sottoprocessi per eseguire un comando come se fossimo seduti al terminale, e questo comando serve per aprire il lettore multimediale omxplayer e quindi riprodurre il video scelto.

    subprocess.Popen([‘omxplayer’,(scelto)])

    La prossima funzione si chiama “stop_video” e come puoi immaginare interromperà il video attualmente in riproduzione. Per questo utilizziamo la libreria della tastiera, in particolare la funzione “press_and_release” per simulare la pressione del tasto “q”.

    def stop_video(): keyboard.press_and_release(‘q’)

    L’ultima funzione si chiama “pause_video” ed emula la pressione della barra spaziatrice sulla tastiera, che è il modo in cui omxplayer mette in pausa il video.

    def pause_video(): keyboard.press_and_release(‘space’)

    Con le funzioni create, dobbiamo quindi dire al nostro codice dove sono collegati i nostri pulsanti. Abbiamo tre pulsanti collegati, randomiser (riproduzione), stop e pause_button. Questi pulsanti sono collegati al GPIO rispettivamente ai pin 2, 3 e 4.

    randomizzatore = Pulsante(2)stop = Pulsante(3)pulsante_pausa = Pulsante(4)

    Ok, così via all’ultima parte, e questa è la parte che cerca quando viene premuto un pulsante e reagisce di conseguenza. Ma prima avvolgiamo questa sezione in un gestore di eccezioni. Tenterà di eseguire il codice, ma se l’utente preme CTRL + C, il codice uscirà. Quindi per la sezione try il nostro codice stamperà prima tre righe sulla shell, queste sono le istruzioni per l’utente. Noterai “n” tra ogni colore. Questa è una scorciatoia Python per inserire una nuova riga tra ciascuna delle istruzioni.

    prova: print(“Premi il tasto VERDE per iniziarenGIALLO per mettere in pausanROSSO per fermarti”)

    I nostri tre pulsanti sono in attesa di essere premuti e, utilizzando la libreria GPIO Zero, chiamiamo la classe “when_pressed” per rilevare quando viene premuto ciascuno dei pulsanti. Quando ciò accade, viene eseguita la funzione corrispondente. Quindi, quando premiamo il pulsante Verde randomizzatore (riproduzione), sceglierà casualmente un video dalla chiavetta USB e lo riprodurrà. Noterai che le funzioni non hanno una () alla fine del nome della funzione. Questo perché se lo facessero, il codice verrebbe eseguito automaticamente. In questo momento sono pronti per essere eseguiti su richiesta.

    randomiser.when_pressed = play_video stop.when_pressed = stop_video pause_button.when_pressed = pause_video

    L’ultima riga in questa sezione è una semplice pause(), e viene utilizzata per mantenere il codice in esecuzione e non solo per uscire dopo essere stato eseguito una volta.

    pausa()

    Ma cosa succede se l’utente preme CTRL + C? Bene, questo è un “Interruzione della tastiera” e se ciò si verifica, stamperemo semplicemente una riga vuota, quindi “Esci” sullo schermo.

    tranne KeyboardInterrupt: print(“nEXIT”)

    Quindi ora salva il tuo codice e apri un Terminale nella directory in cui hai salvato il codice. Per poter utilizzare il codice è necessario eseguirlo con sudo (poteri di root) poiché la libreria della tastiera utilizzata nel progetto può essere utilizzata solo come root / sudo.

    Per eseguire il tipo di codice:

    $ sudo python3 VideoPlayer.py

    Quando sei pronto, premi il pulsante Verde per riprodurre il video scelto a caso, per mettere in pausa premi Giallo e per interrompere premi Rosso. Goditi la serata e non rovesciare i popcorn!

    Puoi incorporare il progetto in una scatola resistente, in modo che le piccole mani non rompano l’elettronica. Puoi anche usare pulsanti in stile arcade che sono molto più robusti e hanno meno probabilità di rompersi.

    Il codice completo

    Se vuoi semplicemente copiare e incollare il contenuto nel file VideoPlayer.py, eccolo qui:

    from gpiozero import Buttonfrom signal import pausefrom random import choiceimport globimport subprocessimport keyboarddef play_video(): videos = [] for file in glob.glob(“/media/pi/Videos/*.mp4”): videos.append(file)print( video)scelto = scelta(video) print(scelto) print(scelto)subprocess.Popen([‘omxplayer’,(scelto)]) def stop_video()keyboard.press_and_release(‘q’)def pause_video()keyboard.press_and_release( ‘spazio’)randomiser – Pulsante(2)stop = Pulsante(3)pause_button = Pulsante(4)try:print(“Premere il pulsante VERDE per avviarenGIALLO per mettere in pausanROSSO per interrompere”)randomiser.when_pressed = play_videostop.when_pressed = stop_videopause_button.when_pressed = pause_video pause() eccetto KeyboardInterrupt: print(“nEXIT”)Keyboard Library e Privacy

    In questo progetto abbiamo utilizzato la libreria Keyboard Python per emulare una tastiera utilizzando solo i pulsanti che controllavano la riproduzione, la pausa e l’arresto della riproduzione video. La libreria Keyboard è piuttosto potente e può essere utilizzata per premere qualsiasi tasto, quindi possiamo automatizzare più pressioni di tasti tutte da un solo pulsante (utile per uscire da vim.) La libreria può anche essere utilizzata per scrivere testo sullo schermo, in un in modo simile alla scena “segui il coniglio bianco” di Neo da The Matrix. Ma la funzione più pericolosa di questa libreria è che può essere usata per registrare ogni tasto premuto sulla macchina di destinazione.

    Queste pressioni di tasti possono essere registrate in un elenco, quindi salvate in un file e quindi utilizzate per scopi nefasti. Quindi cerchiamo di essere chiari ragazzi, adulti. La registrazione delle pressioni dei tasti di un utente, senza il suo consenso, è illegale e può causare molti problemi con la scuola/il lavoro/le autorità. Quindi non farlo! Detto questo, può essere utilizzato come un potente strumento durante il debug di come un utente interagisce con il tuo codice, quindi per i test del software (con il consenso del pubblico in generale e dei tester interni) puoi vedere quali tasti stavano premendo subito prima del codice rinchiuso / è diventato termonucleare!

    La libreria Keyboard funziona con Linux e Windows ed è molto divertente giocarci. Per saperne di più su questa libreria, vai a questo post del blog https://bigl.es/tuesday-tooling-record-replay-keystrokes-with-python/ e guarda alcuni esempi di come può essere utilizzata.

    Questo articolo è apparso originariamente su Linux Format Magazine.

    0 0 votes
    Rating post
    Subscribe
    Notificami
    guest
    0 comments
    Inline Feedbacks
    View all comments
    0
    Would love your thoughts, please comment.x