Il tee
comando legge da input standard e copia in qualsiasi numero di file più output standard per impostazione predefinita, vedere man tee
per maggiori dettagli. Ciò significa che puoi chiedere a tee di creare un file dall'input e quindi reindirizzare l'output a qualcos'altro.
L'aggiunta di un tubo aggiuntivo in teoria aggiunge un po 'di inefficienza. Se questo è significativo o no, dovrai giudicare te stesso usando il tuo metodo di streaming. Il mio metodo attuale non è soddisfacente alla massima risoluzione. Non è un grande interesse in questo momento, ma quando lo è, cercherò di trovare qualcosa di meglio (ad es. Presumibilmente gstreamer funziona meglio del clvc).
Tuttavia, vale la pena notare che il file salvato localmente sul pi allo stesso tempo è di qualità perfetta, quindi l'attività non interferisce con raspivid. Ecco un esempio:
raspivid -o - -t 0 | tee test_video.h264 |
cvlc -v stream:///dev/stdin --sout '#standard{access=http,mux=ts,dest=:8080' :demux=h264
L'ho diviso in due righe per leggibilità; puoi premere return after |
(pipe) e terminare il comando proprio come puoi interrompere una linea con \
. Puoi sostituirlo cvlc
con quello che vuoi. Ancora una volta, sebbene il flusso fosse di scarsa qualità, test_video.h264
è risultato perfetto.
Se abbasso la risoluzione a 640x360 questa disposizione va bene, con un secondo o due di latenza che è quello che ottengo normalmente. Non credo tee
che il secondo tubo faccia alcuna differenza per la qualità del flusso; questi sono in grado di offrire un throughput molto più elevato del necessario qui e non richiedono molto in termini di risorse di sistema.
La CPU ha funzionato al 35-45%, il che è lo stesso che accade quando si trasmettono video in streaming tee
.
raspivid
puoitee
l'output in un file e gstreamer o qualsiasi altra cosa (vediman tee
). Finché uno stream è direttamente su disco, non aggiungerà molto overhead, ma se si desidera elaborare l'input in due diversi formati contemporaneamente, penso che sarà troppo lavoro da gestire per il pi.