LINUX.ORG.RU

Чтение из pipe

 


0

2

Здравствуйте!

Имеется pipe в который gstreamer пишет видео. Необходимо постоянно считывать данные из pipe, т.к. gstreamer пишет видео еще и в порт и если этого не делать запись в порт прервется. Видео из pipe должно писаться в файлы по 10 минут. Пробовал читать в /dev/null и одновременно в файл, но данные, естественно, портятся. Если я буду прерывать чтение из pipe, на время создания нового файла как в примере ниже, то картинка, передаваемая через порт, пропадает, что недопустимо.

while true; do

  ......
  kill `ps ax | grep cat | grep -v "grep" | awk '{print $1}'`

  cat /home/pipe > /home/$(date +"%Y.%m.%d_%H:%M:%S").avi &  
  sleep 600
  
done 

Ответ на: комментарий от kvap

В оба места. Проблема в том, что если я перестаю читать из pipe, то происходит блокировка и в порт тоже ничего не приходит

Ya-NET ()
Ответ на: комментарий от kvap

Текущий код у меня такой

gst-launch-0.10 -e v4l2src device=/dev/video2 ! ... ! tee name=d \
! queue ! ... ! filesink location=/home/pipe d. \
! queue ! ... ! tcpserversink port=5000 &

while true; do

  kill `ps ax | grep cat /home/pipe | grep -v "grep" | grep -v "location" | awk '{print $1}'`

  cat /home/pipe > /home/$(date +"%Y.%m.%d_%H:%M:%S").avi &  
  sleep 600
  
done 
Ya-NET ()
Ответ на: комментарий от Ya-NET

Считывай из пайпа не cat-ом, а ffmpeg-ом и укажи там ему, чтобы не перекодировал и сплитил файлы по 10 минут.

kvap ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.