Короче; Я запускаю эту команду для потоковой передачи постоянно растущего аудиофайла audio.mpg в ffmpeg

tail -F audio.mp3 | ffmpeg -i - http://127.0.0.1:8090/feed1.ffm

audio.mp3 - это SSH'd с другого сервера, на котором есть устройство захвата, через которое передаются данные. Это работает правильно, однако audio.mp3 постоянно растет, и все, что мне действительно нужно, это отправлять хвостовые mp3 данные в ffmpeg чтобы кодировать и отправлять их в ffserver на той же машине.

Есть ли команда, которую я могу запустить для вывода tail -F, а также удалить выведенные данные из audio.mp3 .

По сути, я хочу установить ограничение в 1 МБ на размер файла audio.mp3

заранее спасибо

1 ответ1

1

Это звучит как проблема "именной трубы" (Шерлок Холмс, пожалуйста, прости меня). Поскольку данные не должны оставаться в вашей системе, вы должны создать именованный канал,

 mkfifo my_pipe

и затем сделайте процесс записи SSH в него, и вы можете прочитать из него:

cat < my_pipe | ffmpeg -i - http://127.0.0.1:8090/feed1.ffm

Когда процесс, который записывает данные, завершен, в cat появится EOF, и вы сможете прекратить котирование с помощью Ctrl+C. Конечно, вы также можете быть умнее, написав небольшой скрипт, который ожидает EOF; Пока он не находит его, он передает данные, когда он находит EOF, он завершает операцию. Таким образом, вам не нужно контролировать весь процесс.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .