Команда ffmpeg выдает ошибку внутри скрипта, но работает при прямом запуске

Лучшим решением может быть просто отключить гостевую сетевую карту в сетевых настройках Virtualbox, пока вы не будете готовы подключить ее к сети.

Если вы все еще хотите использовать iptables , тогда в гостевом режиме выполните:

sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP
sudo iptables -P OUTPUT DROP

Это изменяет политику по умолчанию для цепочек на DROP.

1
05.01.2018, 10:46
2 ответа

Is there a way to log the stderr from ffmpeg inside the script to see why the command fails inside the script but works when run directly?

Вот так, перенаправьте поток 2, stderr, в файл в tmp. Да, и поскольку вы не хотите, чтобы он постоянно перезаписывал файл tmp, добавьте PID к его имени:

my_command 2> /tmp/ffmpeg_error$$.log

Теперь применим к вашему ffmpeg:

ffmpeg -f x11grab -s 1000x563 -framerate 30 -i $DISPLAY+10,151 -f pulse -ac 2 -i default -c:v libx264 -preset ultrafast -tune zerolatency -x264opts keyint=30:min-keyint=10 -b:v 2000k -pix_fmt yuv420p -s 1000x562 -c:a aac -b:a 160k -ar 44100 -t '4:00:00' -threads 0 -f flv rtmp://IPADDRESS:1935/live1/$CHANNEL 2> /tmp/ffmpeg_error$$.log
3
27.01.2020, 23:24

Попробуйте установить флаг -nostdinна ffmpeg.

Хотя, возможно, это не имеет прямого отношения к основному -исходному вопросу постеров, на данный момент это самый популярный результат поиска по запросу «ffmpeg не работает из-за скрипта», поэтому я все равно делюсь своими выводами в надежде, что кто-то еще помогает.

Я сталкивался с этим всякий раз, когда запускал ffmpegиз cat 'file' | while read INFILE ; do loop. Запуск ffmpegвне этого цикла или сам по себе будет работать нормально. Добавление цикла приведет к сбросу данных на консоль. Я не совсем уверен, почему, но добавление -nostdinвылечило мою проблему, так как я думаю, что время чтения и ffmpeg боролись за стандартный ввод. Я готов выслушать объяснения других людей, почему -nostdinсработал в моем случае.

0
27.01.2020, 23:24

Теги

Похожие вопросы