Команда tee
читает из стандартного ввода и копирует в любое количество файлов плюс стандартный вывод по умолчанию, см. man tee
Подробности. Это означает, что вы можете попросить tee создать файл из ввода, а затем направить вывод во что-то еще.
Добавление дополнительной трубы теоретически добавляет немного неэффективности. Что касается того, важно это или нет, вам придется судить самим, используя собственный метод потоковой передачи. Мой текущий метод не является удовлетворительным при полном разрешении. Сейчас это не очень интересно, но когда это произойдет, я постараюсь найти что-то лучше (например, предположительно, gstreamer работает лучше, чем clvc).
Однако стоит отметить, что файл, сохраненный локально на пи одновременно, имеет отличное качество, поэтому активность не мешает распивиду. Вот пример:
raspivid -o - -t 0 | tee test_video.h264 |
cvlc -v stream:///dev/stdin --sout '#standard{access=http,mux=ts,dest=:8080' :demux=h264
Я разбил это на две строки для удобства чтения; вы можете нажать return после |
(pipe) и завершить команду так же, как вы можете разбить строку \
. Вы можете заменить на cvlc
то, что вы хотите. Опять же, хотя поток был низкого качества, test_video.h264
получилось идеально.
Если я уменьшу разрешение до 640x360, то это нормально, с задержкой в секунду или две, что я обычно получаю. Я не думаю, что tee
второй канал влияет на качество потока; они способны иметь гораздо более высокую пропускную способность, чем это необходимо, и не требуют большого количества системных ресурсов.
Процессор работал на 35-45%, что соответствует скорости потоковой передачи видео tee
.
raspivid
вы можете сделатьtee
вывод в файл и gstreamer или что-то еще (см.man tee
). Пока один поток направляется прямо на диск, это не приведет к большим накладным расходам, но если вы хотите обрабатывать ввод в двух разных форматах одновременно, я думаю, что это будет слишком большой работой для пи.