Лучшим решением может быть просто отключить гостевую сетевую карту в сетевых настройках Virtualbox, пока вы не будете готовы подключить ее к сети.
Если вы все еще хотите использовать iptables
, тогда в гостевом режиме выполните:
sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP
sudo iptables -P OUTPUT DROP
Это изменяет политику по умолчанию для цепочек на DROP.
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
Попробуйте установить флаг -nostdin
на ffmpeg
.
Хотя, возможно, это не имеет прямого отношения к основному -исходному вопросу постеров, на данный момент это самый популярный результат поиска по запросу «ffmpeg не работает из-за скрипта», поэтому я все равно делюсь своими выводами в надежде, что кто-то еще помогает.
Я сталкивался с этим всякий раз, когда запускал ffmpeg
из cat 'file' | while read INFILE ; do loop
. Запуск ffmpeg
вне этого цикла или сам по себе будет работать нормально. Добавление цикла приведет к сбросу данных на консоль. Я не совсем уверен, почему, но добавление -nostdin
вылечило мою проблему, так как я думаю, что время чтения и ffmpeg боролись за стандартный ввод. Я готов выслушать объяснения других людей, почему -nostdin
сработал в моем случае.