Я использую ffmpeg для преобразования и разделения видео из процесса Python.Когда я запускаю его из консоли как обычный пользователь, все работает, как и ожидалось, однако, если я запускаю его как демон, он выдает такое же количество файлов, но с молчанием почти во всем файле.
Это строкаЯ выполняю из python:
def convert_to_ffmpeg(file, ffmpeg_folder, chunk_length):
res = -1
try:
file_name = os.path.join(ffmpeg_folder, ntpath.basename(file) + ".flac")
res = os.system("ffmpeg -i " + file + " -f segment -segment_time "+str(chunk_length)+" " + file_name + " -y >/dev/null 2>&1")
except Exception as e:
raise MyException(code=210005, detalails=file, cause=e)
if not res == 0:
raise MyException(code=210004, detalails=str(res) + " - " + file)
return file_name
Когда я запускаю его с нормальной консоли, он работает как положено: он разбивает видео на фрагменты «self._chunk_length» секунд.
Однако, еслиЯ запускаю программу, используя python-daemon, с таким кодом:
if daemon_run:
pid_file = check_unclean_exit(config['pidfile'], log)
context = daemon.DaemonContext(
working_directory=approot,
umask=0o002,
pidfile=pid_file,
)
context.signal_map = {
signal.SIGTERM: programa_cleanup,
signal.SIGHUP: 'terminate',
# signal.SIGUSR1: reload_program_config,
}
with context:
convert_to_ffmpeg("/foo/testfile.mkv", "/foo/ffmpeg", 40)
Она производит ТОЧНО одинаковые куски, однако большая часть содержимого кусков - просто тишина.Он разделяется в нужной точке, но не полностью заполняет содержимое аудиовыхода.Конечно, исключение не выдается, поскольку ffmpeg всегда возвращает 0
Я даже установил полностью свежий Debian 9 на виртуальную машину, чтобы устранить проблемы с ffmpeg и настройкой моего старого доброго компьютера.
Конечно, это упрощенный пример.Настоящая вещь - это многопоточное приложение, которое просматривает каталог для файлов для конвертации.