İçeriğe geç

Raspberry Pi Rastgele Video Oynatıcı Nasıl Yapılır

    1647909603

    Bir sürü film, dizi veya başka yerel video dosyalarınız varsa ve hangisini izleyeceğinize karar veremiyorsanız, bir tuşa basarak Raspberry Pi’nin sizin için seçim yapmasını sağlayabilirsiniz. Adil olmak gerekirse, yerel dosyalardan veya web’den rastgele bir videoyu oynatmanın daha kolay yolları var, ancak bu proje kadar eğlenceli değiller. O halde patlamış mısırı alın ve kendi Raspberry Pi rastgele video oynatıcımızı oluşturmaya ve kodlamaya başlayalım!

    Donanım

    Bu proje için devreyi kurmak basittir. GPIO’ya 2,3,4 pinlerinde bağlı olan sadece üç butona ihtiyacımız var ve bu butonların her birinin GND’ye de bağlanması gerekiyor, bunun için Pi’de tek bir GND pini ve bir dişiden erkeğe jumper kablosu kullanabiliriz . Bir devre tahtasının rayına bağlı olmak, iki erkekten erkeğe atlama kablosu aracılığıyla bağlanabilen birden fazla GND bağlantımız olduğu anlamına gelir. Daha fazla bilgi için bu proje için indirilen şemaya bakın. Donanım kurulduğunda, Pi’niz için gereken tüm aksesuarları takın ve Raspbian masaüstüne önyükleyin.

    Yazılım

    Çoğu Pi projesinde olduğu gibi, başka bir şey yapmadan önce Raspberry Pi’nizi Raspbian işletim sisteminin güncel bir kopyasıyla kurmanız gerekir. Özel bir klavye ve fare kullanmak istemiyorsanız, VNC aracılığıyla başka bir bilgisayardan eriştiğiniz başsız bir Raspberry Pi oluşturabilirsiniz.

    Herhangi bir Python kodu yazabilmemiz için önce projeyi oluşturmamıza yardımcı olacak iki kütüphane kurmamız gerekiyor. Bir Terminal açın ve aşağıdakini yazın, her satırın sonunda Enter tuşuna basmayı unutmayın.

    $ sudo pip3 glob kurun $ sudo pip3 klavyeyi kurun

    Onlar hakkında daha sonra konuşacağız. Şimdilik, Programlama menüsünde bulunan Python 3 düzenleyicisini açın ve yeni bir boş dosya oluşturmak için Dosya >> Yeni’ye tıklayın. Yeni pencerede hemen Dosya >> Kaydet’e tıklayın. Kodu VideoPlayer.py olarak kaydedin ve sık sık kaydetmeyi unutmayın!

    Şimdi kodu yazmaya başlıyoruz ve ilk işimiz ihtiyacımız olan kütüphaneleri import etmek. İlk üç kitaplık, düğme basışlarını algılamak (GPIO Zero), kodun bir kez çalışmasını durdurmak ve çıkmak (duraklatmak) ve rastgele bir video seçmek (seçim) için kullanılır.

    gpiozero’dan içe aktarma Düğmesinden sinyal içe aktarma duraklatmadan rastgele içe aktarma seçiminden

    Son üç içe aktarma, bir dizinin (glob) içeriğini listelemek, terminal komutlarını çalıştırmak (alt işlem) için kullanacağımız bir kitaplık ve sonuncusu bir klavyeyi (klavye) taklit etmek için bir kitaplıktır.

    globimport alt işlemini içe aktarma klavyesi

    Devam ederek, daha sonra adlarını arayarak yeniden kullanabileceğimiz üç işlev, kod bloğu oluşturuyoruz. İlk işleve “play_video” adı verilir ve önce “videolar” adlı bir liste (veri depolama nesnesi) oluşturur.

    def play_video():videos = []

    Listeyi bilgilerle, özellikle oynatabileceğimiz tüm videoların bir listesiyle doldurmak için, bir mp4 video dosyası olduğu sürece, bir dizindeki her dosya üzerinde yinelenecek bir for döngüsü kullanıyoruz. Bunun için “/media/pi/Videos” dizinine erişmek için “glob” kullanıyoruz, bu gerçekten “Videolar” olarak adlandırılan ve mp4 dosyalarıyla dolu bir USB çubuğu. Bunu, videolarla dolu seçtiğiniz dizinin adıyla eşleşecek şekilde değiştirin. Ne zaman bir mp4 bulunsa, az önce oluşturduğumuz “videolar” listesine eklenir.

    glob.glob(“/media/pi/Videos/*.mp4”) içindeki dosya için: videos.append(file)

    Şimdi listenin içeriğini Python kabuğuna yazdırarak listenin dosya adlarıyla doldurulduğunu kontrol edelim.

    yazdır(videolar)

    Daha sonra listeden rastgele bir video seçip “chosen” isimli bir değişkene kaydedeceğiz, bunu tekrar Python kabuğuna yazdıracağız.

    Daha sonra listeden rastgele bir video seçeceğiz ve onu “chosen” isimli bir değişkene kaydedeceğiz, yine bunu Python kabuğuna yazdıracağız seçilen = seçim(videolar) print(chosen) print(chosen)

    Bu işlevdeki son satır, sanki terminalde oturuyormuşuz gibi bir komutu çalıştırmak için alt işlem kitaplığından Popen sınıfını kullanır ve bu komut, çok yönlü oynatıcı medya oynatıcısını açmak ve ardından seçilen videoyu oynatmak içindir.

    subprocess.Popen([‘omxplayer’,(seçilen)])

    Sonraki işleve “stop_video” denir ve tahmin edebileceğiniz gibi o anda oynatılan videoyu durduracaktır. Bunun için klavye kitaplığını, özellikle “q” tuşuna basmayı simüle etmek için “press_and_release” işlevini kullanıyoruz.

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

    Son işleve “pause_video” adı verilir ve klavyedeki boşluk çubuğuna basılmasına öykünür, omxplayer videoyu bu şekilde duraklatır.

    def duraklama_video(): klavye.press_and_release(‘boşluk’)

    Oluşturulan fonksiyonlar ile daha sonra kodumuza butonlarımızın nereye bağlı olduğunu söylememiz gerekiyor. Bağlı üç düğmemiz var, rastgeleleştirici (oynat), durdur ve duraklat_düğmesi. Bu düğmeler, sırasıyla 2, 3 ve 4 numaralı pinlerde GPIO’ya bağlanır.

    rastgeleleştirici = Button(2)stop = Button(3)pause_button = Button(4)

    Tamam, son bölüme kadar, ve bu, bir düğmeye basıldığında arayan ve buna göre tepki veren kısımdır. Ama önce bu bölümü bir istisna işleyicisine sarıyoruz. Kodu çalıştırmayı deneyecek, ancak kullanıcı CTRL + C tuşlarına basarsa kod çıkacaktır. Deneme bölümü için kodumuz önce kabuğa üç satır yazdıracak, bunlar kullanıcıya verilen talimatlar. Her renk arasında “n” göreceksiniz. Bu, talimatların her biri arasına yeni bir satır eklemek için Python kısayoludur.

    deneyin: print(“Durdurmak için KIRMIZI duraklatmak için SARI başlatmak için YEŞİL düğmeye basın”)

    Üç butonumuz basılmayı bekliyor ve her bir butona ne zaman basıldığını algılamak için GPIO Zero kütüphanesini kullanarak “When_pressed” sınıfını kullanıyoruz. Bu olduğunda ilgili fonksiyon çalıştırılır. Yani Yeşil rastgeleleştirici (oynat) düğmesine bastığımızda, USB çubuğundan rastgele bir video seçecek ve oynatacaktır. İşlev adının sonunda bir () işaretinin bulunmadığını fark edeceksiniz. Bunun nedeni, eğer yaparlarsa, kodun otomatik olarak çalışmasıdır. Şu anda talep üzerine çalışmaya hazırlar.

    randomiser.When_pressed = play_video stop.while_pressed = stop_video Pause_button.When_pressed = Pause_video

    Bu bölümdeki son satır basit bir duraklatmadır () ve bu, yalnızca bir kez çalıştırıldıktan sonra çıkmak için değil, kodu çalışır durumda tutmak için kullanılır.

    Duraklat()

    Ancak kullanıcı CTRL + C tuşlarına basarsa ne olur? Peki, bu bir “Klavye Kesintisidir” ve bu gerçekleşirse, ekrana boş bir satır yazdıracağız ve ardından ekranda “Çıkış” yapacağız.

    KeyboardInterrupt hariç: print(“nEXIT”)

    Şimdi kodunuzu kaydedin ve kodu kaydettiğiniz dizine bir Terminal açın. Projede kullanılan klavye kütüphanesi sadece root / sudo olarak kullanılabildiğinden, kodu kullanabilmemiz için sudo (root power) ile çalıştırmamız gerekiyor.

    Kod türünü çalıştırmak için:

    $ sudo python3 VideoPlayer.py

    Hazır olduğunuzda rastgele seçilen videoyu oynatmak için Yeşil düğmeye basın, duraklatmak için Sarıya basın ve durdurmak için Kırmızıya basın. Akşamınızın tadını çıkarın ve patlamış mısırı dökmeyin!

    Küçük eller elektroniği kırmasın diye projeyi sağlam bir kutuya yerleştirebilirsiniz. Ayrıca çok daha sağlam ve kırılma olasılığı daha düşük olan arcade tarzı düğmeleri de kullanabilirsiniz.

    Komple Kod

    İçeriği kopyalayıp VideoPlayer.py dosyasına yapıştırmak istiyorsanız, işte burada:

    gpiozero’dan içe aktarma Düğmeden sinyal içe aktarma duraklatmadan rastgele içe aktarma seçimini içe aktarma globimport alt işlemi içe aktarma klavyedef play_video(): videolar = [] glob.glob(“/media/pi/Videos/*.mp4”): videos.append(file)print( videolar)seçilen = seçim(videolar) yazdır(seçilen) yazdır(seçilen)subprocess.Popen([‘omxplayer’,(seçilen)]) def stop_video()keyboard.press_and_release(‘q’)def duraklama_video()keyboard.press_and_release( ‘space’)randomizer – Button(2)stop = Button(3)pause_button = Button(4)try:print(“durdurmak için SARI ve duraklatmak için RED’i başlatmak için YEŞİL düğmeye basın”)randomiser.When_pressed = play_videostop.while_pressed = stop_videopause_button.while_pressed = duraklama_video duraklatma() KeyboardInterrupt hariç: print(“nEXIT”)Klavye Kitaplığı ve Gizlilik

    Bu projede, yalnızca video oynatmayı, duraklatmayı ve durdurmayı kontrol eden basma düğmelerini kullanarak bir klavyeyi taklit etmek için Keyboard Python kitaplığını kullandık. Klavye kitaplığı oldukça güçlüdür ve herhangi bir tuşa basmak için kullanılabilir, bu nedenle birden fazla tuşa basmayı tek bir düğmeden otomatikleştirebiliriz (vim’den çıkmak için kullanışlıdır.) Kitaplık aynı zamanda ekrana metin yazmak için de kullanılabilir. Neo’nun Matrix’teki “beyaz tavşanı takip et” sahnesine benzer. Ancak bu kitaplığın en tehlikeli işlevi, hedef makinede her tuşa basışları kaydetmek için kullanılabilmesidir.

    Bu tuş basışları bir listeye kaydedilebilir, ardından bir dosyaya kaydedilebilir ve ardından kötü amaçlar için kullanılabilir. O halde net olalım çocuklar, yetişkinler. Bir kullanıcının tuş basımlarını rızası olmadan kaydetmek yasa dışıdır ve okul / iş / yetkililerle başınızı büyük belaya sokabilir. Bu yüzden yapma! Bununla birlikte, bir kullanıcının kodunuzla nasıl etkileşime girdiğinde hata ayıklarken güçlü bir araç olarak kullanılabilir, böylece yazılım testi için (genel halkın ve kurum içi testçilerin rızasıyla) koddan hemen önce hangi tuşlara bastığını görebilirsiniz. kilitlendi / termonükleer gitti!

    Klavye kitaplığı Linux ve Windows ile çalışır ve oynaması çok eğlencelidir. Bu kitaplık hakkında biraz daha fazla bilgi edinmek için bu blog gönderisine gidin https://bigl.es/tuesday-tooling-record-replay-keystrokes-with-python/ ve nasıl kullanılabileceğine dair birkaç örneğe bakın.

    Bu makale ilk olarak Linux Format Magazine’de yayınlandı.

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