Kaip atlikti vaizdo transliaciją naudojant „Raspberry Pi“?

Kaip atlikti vaizdo transliaciją naudojant „Raspberry Pi“? „“ klasė „StreamingOutput“(objektas): def __init__(savarankiškai): savarankiškai.rėmas = Nė vienas savarankiškai.buferis = .BytesIO() savarankiškai.būklė = Būklė() def rašyti(savarankiškai, buf): jei buf.prasideda su(b' xff xd8'): # Naujas rėmelis, nukopijuokite esamą buferio turinį ir praneškite visiems Galima # klientų savarankiškai.buferis.sutrumpinti() su savarankiškai.būklė: savarankiškai.rėmas = savarankiškai.buferis.gauti vertę() savarankiškai.būklė.pranešti_viskas() savarankiškai.buferis.Ieškoti(0) grįžti savarankiškai.buferis.rašyti(buf) klasė „StreamingHandler“(serverio.„BaseHTTPRequestHandler“): def do_GET(savarankiškai): jei savarankiškai.kelias == „/“: savarankiškai.send_response(301) savarankiškai.send_header(„Vieta“, „/index.html“) savarankiškai.pabaigos_ antraštės() elifas savarankiškai.kelias == „/index.html“: turinys = PAGE.koduoti(„utf-8“) savarankiškai.send_response(200) savarankiškai.send_header('Turinio tipas', „text / html“) savarankiškai.send_header(„Turinio ilgis“, len(turinys)) savarankiškai.pabaigos_ antraštės() savarankiškai.wfile.rašyti(turinys) elifas savarankiškai.kelias == „/stream.mjpg“: savarankiškai.send_response(200) savarankiškai.send_header(„Amžius“, 0) savarankiškai.send_header(„Talpyklos valdymas“, „be talpyklos, privatus“) savarankiškai.send_header(„Pragma“, „be talpyklos“) savarankiškai.send_header('Turinio tipas', 'multipart / x-mixed-pakeisti; riba = FRAME ') savarankiškai.pabaigos_ antraštės() bandyti: kol Tiesa: su produkcija.būklė: produkcija.būklė.laukti() rėmas = produkcija.rėmas savarankiškai.wfile.rašyti(b'- Rėmas r n') savarankiškai.send_header('Turinio tipas', „image / JPEG“) savarankiškai.send_header(„Turinio ilgis“, len(rėmas)) savarankiškai.pabaigos_ antraštės() savarankiškai.wfile.rašyti(rėmas) savarankiškai.wfile.rašyti(b' r n') išskyrus Išimtis kaip yra: medienos ruoša.įspėjimas( 'Pašalintas srautinio perdavimo klientas% s:% s', savarankiškai.kliento adresas, str(yra)) Kitas: savarankiškai.send_error(404) savarankiškai.pabaigos_ antraštės() klasė „StreamingServer“(lizdo serveris.„ThreadingMixIn“, serverio.„HTTPServer“): leisti_naudoti_adresą = Tiesa daemon_threads = Tiesa su „picamera“.„PiCamera“(rezoliucija=„640x480“, kadrų dažnis=24) kaip fotoaparatas: produkcija = „StreamingOutput“() fotoaparatas.pradžios įrašymas(produkcija, formatas=„mjpeg“) bandyti: adresas = (', 8000) serverio = „StreamingServer“(adresas, „StreamingHandler“) serverio.aptarnauti amžinai() pagaliau: fotoaparatas.stop_recording()

Įklijavę kodą naujame sukurtame faile paspauskite „Ctrl“ + X, tipo IR ir paspauskite Įveskite.



10 žingsnis: paleiskite vaizdo srautą

Išsaugoję scenarijų, paleisime jį naudodami „Python3“, įvesdami šią komandą:

 python3 rpi_video_streaming.py 

Parašę šią komandą, scenarijus pradės veikti ir dabar mes galėsime prisijungti prie savo interneto serverio http: //: 8000 . Mes atidarysime naršyklę ir įklijuosime nuorodą į ją ir naudosime IP adresą, kurį mūsų Pi priskyrė maršrutizatorius. Mes galime patekti į vaizdo transliaciją per savo mobilųjį telefoną, planšetinį kompiuterį ir kt., Kuriuose yra įdiegta naršyklė ir susieta su panašiu tinklu kaip ir mūsų Pi. Aš parašiau, '192.168.1.14:8000' vaizdo įrašo srautui paleisti.



11 žingsnis: suteikite paskutinius prisilietimus

Išbandę Pi kamerą ir sužinoję, kad ji veikia gerai, esame pasirengę ją sumontuoti tinkamoje vietoje. Jis gali būti įrengtas šalia namo vartų, kad galėtume stebėti kiekvieną įeinantį ar išeinantį iš namų žmogų. Viskas, ko mums reikia, yra valdžia ĮJUNGTA mūsų fotoaparatą naudodami adapterį, ir geriau būtų jį įdėti į korpusą ir tiesiog palikti fotoaparato pusę atvirą vaizdo srautui perduoti.



Programos

  1. Saugumo sumetimais jį galima įrengti namuose.
  2. Jis gali būti naudojamas biuruose stebint darbuotojų judėjimą.
  3. Jį galima įrengti prekybos centruose, geležinkelio stotyse ir kt., Prie jo gali prisijungti administracijos darbuotojai, norėdami patikrinti ir išlaikyti balansą konkrečioje vietovėje.