Здравствуйте!
Никак не могу подобрать волшебный ключик к этой программе.
Есть сразу два вопроса из одной оперы.
1. Проблема вот в чем: записываю видео по протоколу rtmp в контейнер mp4 (но не суть). Все отлично, если бы ffmpeg после завершения стрима отрубался и завершал муксирование контейнера. Но он ждет чего то. Ключиком к отрубанию должна быть команда rtmp протокола NetStream.Unpublish. Он ее либо не видит, либо не знает про нее, либо знает но молчит. Т.е. ffmpeg переходит в вечную паузу, надеясь что поток продолжится когда либо. Также происходит со стартом, если стрим ещё не запущен, ffmpeg будет ждать его начала, тоже бесконечно.
Пробовал
-abort_on empty_output empty_output_stream
-muxdelay 1
-muxpreload 1
не подошло
Да, начал конечно программно шаманить, запускал ffmpeg через php скрипт и там уже мониторил. Проперял изменение в размере записанного файла, если размер 5 раз не меняется, то я считаю что запись завершена
2. Как корректно убивать ffmpeg? Ок, когда он в так сказать активной работе то убивается хорошо и INT и TERM сигналами с первого раза (Exiting normally, received signal 2.). Когда он в «вечной паузе», то первое послание сигнала INT (или TERM не важно) - никакой реакции, второй посыл такого же сигнала - убивается как Terminated, то есть не корректно. Поэтому не записывает атом в конец mp4 контейнера и файл не читабется. Почему со второго раза убивается и почему аварийно terminated?