Skip to content

Cara Membuat Pemutar Video Acak Raspberry Pi

    1647909603

    Jika Anda memiliki banyak film, acara, atau file video lokal lainnya dan tidak dapat memutuskan mana yang akan ditonton, Anda dapat membuat Raspberry Pi memilih untuk Anda, dengan satu sentuhan tombol. Agar adil, ada cara yang lebih mudah untuk memutar video acak, baik dari file lokal atau di web, tetapi tidak semenyenangkan proyek ini. Jadi ambil popcorn dan mari kita mulai membuat dan mengkodekan pemutar video acak Raspberry Pi kita sendiri!

    Perangkat keras

    Membangun sirkuit untuk proyek ini sederhana. Kami hanya membutuhkan tiga tombol, terhubung ke GPIO di pin 2,3,4 dan masing-masing tombol ini juga perlu terhubung ke GND, untuk ini kami dapat menggunakan satu pin GND pada Pi, dan kabel jumper female ke male . Terhubung ke – rel papan tempat memotong roti berarti kita memiliki beberapa koneksi GND yang dapat dihubungkan melalui dua kabel jumper pria ke pria. Lihat diagram dalam unduhan untuk proyek ini untuk informasi lebih lanjut. Saat perangkat keras dibuat, pasang semua aksesori yang diperlukan untuk Pi Anda dan boot ke desktop Raspbian.

    Perangkat lunak

    Seperti kebanyakan proyek Pi, sebelum Anda melakukan hal lain, Anda harus mengatur Raspberry Pi Anda dengan salinan sistem operasi Raspbian saat ini. Jika Anda tidak ingin menggunakan keyboard dan mouse khusus, Anda dapat membuat Raspberry Pi tanpa kepala yang Anda akses dari komputer lain melalui VNC.

    Sebelum kita dapat menulis kode Python apa pun, kita perlu menginstal dua pustaka yang akan membantu kita membuat proyek. Buka Terminal, dan ketik berikut ini, ingatlah untuk menekan Enter di akhir setiap baris.

    $ sudo pip3 install glob$ sudo pip3 install keyboard

    Kami akan berbicara lebih banyak tentang mereka nanti. Untuk saat ini buka editor Python 3, temukan di menu Pemrograman dan klik File >> New untuk membuat file kosong baru. Segera klik File >> Simpan di jendela baru. Simpan kode sebagai VideoPlayer.py dan jangan lupa untuk sering menyimpannya!

    Jadi sekarang kita mulai menulis kode, dan tindakan pertama kita adalah mengimpor perpustakaan yang kita butuhkan. Tiga perpustakaan pertama digunakan untuk mendeteksi penekanan tombol (GPIO Zero), menghentikan kode agar tidak berjalan sekali dan keluar (jeda) dan untuk memilih video acak (pilihan.)

    dari Tombol impor gpozerodari jeda impor sinyal dari pilihan impor acak

    Tiga impor terakhir adalah perpustakaan yang akan kita gunakan untuk membuat daftar isi direktori (glob), menjalankan perintah terminal (subproses) dan yang terakhir adalah perpustakaan untuk meniru keyboard (keyboard.)

    impor globimport subprosesimport keyboard

    Selanjutnya kami membuat tiga fungsi, blok kode yang nantinya dapat kami gunakan kembali dengan memanggil namanya. Fungsi pertama disebut “play_video” dan pertama-tama membuat daftar (objek penyimpanan data) yang disebut “video”.

    def play_video():videos = []

    Untuk mengisi daftar dengan informasi, khususnya daftar semua video yang dapat kami putar, kami menggunakan for loop, yang akan mengulangi setiap file dalam direktori, selama itu adalah file video mp4. Untuk ini kami menggunakan “glob” untuk mengakses direktori “/media/pi/Videos” yang sebenarnya adalah stik USB yang disebut “Video” yang penuh dengan file mp4. Ubah ini agar sesuai dengan nama direktori pilihan Anda yang penuh dengan video. Setiap kali mp4 ditemukan, itu ditambahkan ke daftar “video” yang baru saja kita buat.

    untuk file di glob.glob(“/media/pi/Videos/*.mp4”): videos.append(file)

    Jadi sekarang mari kita periksa apakah daftar telah diisi dengan nama file dengan mencetak isi daftar ke shell Python.

    cetak (video)

    Kemudian kita akan memilih video acak dari daftar dan menyimpannya dalam variabel yang disebut “terpilih”, sekali lagi kita mencetaknya ke shell Python.

    Kemudian kita akan memilih video acak dari daftar dan menyimpannya dalam variabel yang disebut “terpilih”, sekali lagi kita mencetak ini ke shell Python dipilih = pilihan(video) print(dipilih) print(dipilih)

    Baris terakhir dalam fungsi ini menggunakan kelas Popen dari perpustakaan subproses untuk menjalankan perintah seolah-olah kita duduk di terminal, dan perintah ini adalah untuk membuka pemutar media omxplayer, lalu memutar video yang dipilih.

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

    Fungsi berikutnya disebut “stop_video” dan seperti yang Anda duga, itu akan menghentikan video yang sedang diputar. Untuk ini kami menggunakan perpustakaan keyboard, khususnya fungsi “press_and_release” untuk mensimulasikan penekanan tombol “q”.

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

    Fungsi terakhir disebut “pause_video” dan mengemulasi menekan spasi pada keyboard, yang merupakan cara omxplayer menjeda video.

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

    Dengan fungsi yang dibuat, selanjutnya kita perlu memberi tahu kode kita di mana tombol kita terhubung. Kami memiliki tiga tombol yang terhubung, pengacak (play), stop dan pause_button. Tombol-tombol ini terhubung ke GPIO masing-masing pada pin 2, 3 dan 4.

    pengacak = Tombol(2)stop = Tombol(3)pause_button = Tombol(4)

    Ok lanjut ke bagian terakhir, dan ini adalah bagian yang dicari ketika tombol ditekan, dan bereaksi sesuai dengan itu. Tapi pertama-tama kita bungkus bagian ini dalam sebuah exception handler. Ini akan mencoba menjalankan kode, tetapi jika pengguna menekan CTRL + C maka kode akan keluar. Jadi untuk bagian try kode kita pertama-tama akan mencetak tiga baris ke shell, ini adalah instruksi untuk pengguna. Anda akan melihat “n” di antara setiap warna. Ini adalah singkatan Python untuk menyisipkan baris baru di antara setiap instruksi.

    coba: print(“Tekan tombol HIJAU untuk memulainKUNING ke jedanMERAH untuk berhenti”)

    Tiga tombol kita sedang menunggu untuk ditekan, dan menggunakan library GPIO Zero kita memanggil kelas “when_pressed” untuk mendeteksi kapan setiap tombol ditekan. Ketika ini terjadi, fungsi yang sesuai dijalankan. Jadi ketika kita menekan tombol Green randomizer (play) maka secara acak akan memilih video dari USB stick dan memutarnya. Anda akan melihat bahwa fungsi tidak memiliki () di akhir nama fungsi. Ini karena jika mereka melakukannya, maka kode akan berjalan secara otomatis. Saat ini mereka siap untuk berjalan sesuai permintaan.

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

    Baris terakhir di bagian ini adalah pause() sederhana, dan ini digunakan untuk menjaga kode tetap berjalan, dan tidak hanya keluar setelah dijalankan sekali.

    berhenti sebentar()

    Tetapi apa yang terjadi jika pengguna menekan CTRL + C? Nah ini adalah “Keyboard Interrupt” dan jika itu terjadi kita cukup mencetak baris kosong lalu “Exit” di layar.

    kecuali KeyboardInterrupt: print(“nEXIT”)

    Jadi sekarang simpan kode Anda, dan buka Terminal ke direktori tempat Anda menyimpan kode. Untuk menggunakan kode, kita perlu menjalankannya dengan sudo (kekuatan root) karena perpustakaan keyboard yang digunakan dalam proyek hanya dapat digunakan sebagai root / sudo.

    Untuk menjalankan jenis kode:

    $ sudo python3 VideoPlayer.py

    Jika sudah siap tekan tombol Hijau untuk memutar video yang dipilih secara acak, untuk jeda tekan Kuning, dan untuk berhenti tekan Merah. Nikmati malam Anda dan jangan tumpahkan popcorn!

    Anda dapat menyematkan proyek dalam kotak yang kokoh, sehingga tangan kecil tidak merusak elektronik. Anda juga dapat menggunakan tombol bergaya arcade yang jauh lebih kuat dan kecil kemungkinannya untuk rusak.

    Kode Lengkap

    Jika Anda hanya ingin menyalin dan menempelkan konten ke file VideoPlayer.py, ini dia:

    dari gpozero tombol impordari sinyal impor jedadari pilihan impor acakimport globimport subprosesimport keyboarddef play_video(): videos = [] untuk file di glob.glob(“/media/pi/Videos/*.mp4”): videos.append(file)print( videos)chosen = choice(videos) print(chosen) print(chosen)subprocess.Popen([‘omxplayer’,(chosen)]) def stop_video()keyboard.press_and_release(‘q’)def pause_video()keyboard.press_and_release( ‘spasi’)randomiser – Tombol(2)stop = Tombol(3)pause_button = Tombol(4)try:print(“Tekan tombol HIJAU untuk memulainKUNING untuk menjeda MERAH untuk berhenti”)randomiser.when_pressed = play_videostop.when_pressed = stop_videopause_button.when_pressed = pause_video pause()kecuali KeyboardInterrupt: print(“nEXIT”)Perpustakaan dan Privasi Keyboard

    Dalam proyek ini kami menggunakan perpustakaan Keyboard Python untuk mengemulasi keyboard hanya dengan menggunakan tombol tekan yang mengontrol pemutaran, jeda, dan penghentian pemutaran video. Pustaka Keyboard agak kuat dan dapat digunakan untuk menekan tombol apa saja, sehingga kita dapat mengotomatiskan beberapa penekanan tombol semua dari satu tombol tekan (berguna untuk keluar dari vim.) Pustaka juga dapat digunakan untuk menulis teks ke layar, dalam dengan cara yang mirip dengan adegan “ikuti kelinci putih” Neo dari The Matrix. Namun fungsi paling berbahaya dari library ini adalah dapat digunakan untuk merekam setiap penekanan tombol pada mesin target.

    Penekanan tombol ini dapat direkam ke daftar, kemudian disimpan ke file dan kemudian digunakan untuk tujuan jahat. Jadi mari kita menjadi jelas anak-anak, orang dewasa. Merekam penekanan tombol pengguna, tanpa persetujuan mereka adalah ilegal dan dapat membuat Anda mendapat banyak masalah dengan sekolah / pekerjaan / otoritas. Jadi jangan lakukan itu! Dengan demikian, ini dapat digunakan sebagai alat yang ampuh saat men-debug bagaimana pengguna berinteraksi dengan kode Anda, jadi untuk pengujian perangkat lunak (dengan persetujuan masyarakat umum dan penguji internal), Anda dapat melihat tombol apa yang mereka tekan tepat sebelum kode terkunci / pergi termonuklir!

    Pustaka Keyboard berfungsi dengan Linux dan Windows dan sangat menyenangkan untuk dimainkan. Untuk membaca lebih banyak tentang perpustakaan ini, kunjungi posting blog ini https://bigl.es/tuesday-tooling-record-replay-keystrokes-with-python/ dan lihat beberapa contoh bagaimana itu dapat digunakan.

    Artikel ini awalnya muncul di Majalah Format Linux.

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