Küsimus:
Kas on võimalik aktiivselt salvestav / raspi kaameras peatada / peatada?
puk
2013-10-16 08:35:13 UTC
view on stackexchange narkive permalink

Raspi kaamera käivitamine on üsna tühine:

  raspivid -t 10000 -o test.h264  

Probleem:

seda ei saa kuidagi peatada. See tundub minu jaoks tõesti rumal, kuna minu teada pole jaemüügiks saadaval ühtegi kaamerat, mis eeldaks, et kasutaja määraks mitu sekundit joosta ja töötab siis nii palju sekundeid enne peatumist.

  • Taust :

    See kujutab endast jälgimisel tohutut probleemi. Koostan programmi, kus koduvalve lülitatakse sisse, kui kasutaja lahkub, ja siis naasmisel uuesti välja. Kui liikumine tuvastatakse vahetult enne kasutaja naasmist, alustab kaamera salvestamist ettemääratud aja jooksul (st 10 minutit), kuid kuna käsk raspivid blokeerub, saan olukorra, kus kasutaja on füüsiliselt majas, kuid programm on olekus valve . Selle lahendamiseks käivitan lõime käsu raspivid käivitamiseks, nii et nüüd värskendatakse olekuid õigesti, lähtudes sellest, millal kasutaja tuleb ja läheb. Kuid nüüd ei tööta teised osariigid. Näiteks ei saa ma lülituda olekusse TV , kuna ma ei saa HD-videomaterjali korraga salvestada ja seda vaadata. Samamoodi ei saa ma lülituda olekule Party (pidude pidev videosalvestus), kuna kaamera juba salvestab.

    Võimalik lahendus:

    Kasutades veebist leitud koodi (kuid ei leia enam linki), leidsin häkkimise, kus tapsin lõime, mis käivitas käsu raspivid . Kahjuks peab SO seda jumalateotuseks (vt siin ja siin), millega ma nõustun mitte ainult seetõttu, et see võib rikkuda .h264 faile ja põhjustada mälulekkeid, aga ka seetõttu, et minu jaoks on kodeerimine õudusunenägu (mul peavad kõikjal olema lukud ja semaforid, kuna käivitan ka teisi lõime liikumise tuvastamiseks).

    Küsimus:

    Kas raspi kaamera salvestamist saab kuidagi peatada? Kui ei, siis miks mitte?

  • Kaks vastused:
    lenik
    2013-10-16 09:38:08 UTC
    view on stackexchange narkive permalink

    Lähtekoodi Raspivid kontrollimisel selgub, et püüdmise katkestamiseks on kaks võimalust.

    Esimene meetod on mis tahes SIGNAL-i saatmine püüdmisprotsessi. Signaali töötleb järgmine kood jaotises Raspivid:

      / ** * Sigintsignaalide käitleja * * @param signal_number sissetuleva signaali ID. * * / static void signal_handler (int signal_number) {// Kõigi signaalide katkestamine vcos_log_error ("Programmi katkestamine \ n"); // TODO: Peate kõik avatud asjad sulgema ... kuidas? väljapääs (255); }  

    Selle tulemusel lõpeb püüdmisprotsess keskmiselt 100 ms-ga.

    Nagu on märgitud selle vastuse kommentaarides, saab seda Pythonis saavutada järgmise abil kood:

      popen = alamprotsess. Avatud (cmd). . . popen.send_signal (signal.SIGINT)  

    Teine meetod oleks kasutajaandmete tagasihelistamise kasutamine, millel on väli:

      callback_data.abort = 0;  kood> 

    ja võite arvata, mis juhtub, kui määrate selle välja muuks kui null =).

    Kui vajate üksikasjalikumat selgitust, kutsun teid üles kontrollima lähtekood.

    Aitäh. Kuid ma pole kindel, mis neist kumbagi on. Kas see on C? Ma oleksin pidanud mainima, et minu kood on Python. Mul õnnestus leida [väga valus] viis selle ümber, kasutades "popen = alamprotsess. Avatud (cmd)" ja "popen.send_signal (signaal.SIGINT)"
    signaalide saatmine on esimene lähenemisviis, millest kirjutasin, vabandust, et see oli valus =)
    tavaliselt toimivad STOP- ja CONT-signaalid selleks ok
    FYI-sse lisati koodile „raspivid” kood, mis võimaldab signaalide kasutamist video salvestamise juhtimiseks. Nüüd saate signaale kasutada peatamiseks ja seejärel salvestamise jätkamiseks. Ei ole selge, kas on võimalik anda programmist väljumisest märku ja väljundfaili graatsiliselt sulgeda. Lisateavet `raspivid`i lisatavate uute valikute kohta leiate aadressilt https://github.com/raspberrypi/userland/pull/104.
    Tegin selle sõlmes js, saates SIGTERM signaali, et sellest graatsiliselt väljuda.
    Kas olete kindel, et see kirjutab videometaandmeid? koodist ei tundu nii. "TODO: peate sulgema kõik avatud asjad ... kuidas?"
    Ugi Prashanth Gopal
    2015-01-29 21:29:50 UTC
    view on stackexchange narkive permalink

    Proovige kasutada valikut -k (klahvivajutus): Salvestamise ja pausi vahel liikumine ENTER-is .

      raspivid -t 10000 - o test.h264 -k  

    Pärast selle käsu täitmist vajutage video lõpetamiseks nuppu 'x' ja 'enter'.



    See küsimus ja vastus tõlgiti automaatselt inglise keelest.Algne sisu on saadaval stackexchange-is, mida täname cc by-sa 3.0-litsentsi eest, mille all seda levitatakse.
    Loading...