Ответ был:
a) Я должен вызвать команду Ffmpeg через файл, чтобы это работало. Я не совсем уверен, почему, но так оно и есть.
b) Я не мог раньше получить информацию для регистрации в Ffmpeg. Это потому, что я не туда попал. Мне нужно было войти в / tmp / из-за непривилегированного (никого) пользователя, используемого Nginx. Имеет смысл.
c) В тот момент, когда команда работала из файла, я мог видеть фактические ошибки, которые выдает Ffmpeg, и мог их устранять. Это было связано с размещением опций, интервалом и обеспечением того, что это контейнер flv, а не контейнер mp4.
Вот конфигурация Nginx rtmp, с которой я закончил:
rtmp {
server {
listen 1935;
chunk_size 4096;
application live {
live on;
record off;
meta copy;
exec /Users/Shared/ffmpegcommand.sh $name;
}
application overlay {
live on;
record off;
meta copy;
push rtmp://a.rtmp.youtube.com app=live2 playpath=stream-key;
exec_push /usr/local/bin/ffmpeg -i rtmp://localhost:1935/overlay/$name -vf fps=1/60 /Users/Shared/stream/netcam.jpg;
}
}
}
А вот команда Ffmpeg, которую я использую в командном файле для наложения текста (теперь используется -filter_complex, так как -vf не был подходящим вариантом в этом случае).
/usr/local/bin/ffmpeg -i rtmp://localhost:1935/live/68.1. -filter_complex drawtext="fontfile=/System/Library/Fonts/Supplemental/Verdana.ttf: textfile=/Users/Shared/overlayescaped.txt: reload=1: fontcolor=white: fontsize=17: box=1: boxcolor=black@1: boxborderw=80: x=80: y=935" -c:v libx264 -level 4.1 -maxrate 6000k -bufsize 4000k -c:a copy -f flv rtmp://localhost:1935/overlay/newlive 2>>/tmp/ffmpeg.error
I также изменил параметры звука, чтобы они копировались прямо из источника, поскольку кодирование не требуется.
Наконец, я создал оверлейный текстовый файл из текстового файла, который у меня уже был. В существующем наложении был символ% для влажности, поэтому мне пришлось экранировать этот символ, используя sed в сценарии bash.
escovlfiletmp='/Users/Shared/overlayescapedtmp.txt'
escovlfile='/Users/Shared/overlayescaped.txt'
overlaysearch="% B:"
overlayreplace="\\\\\\% B:"
sed -e "s/${overlaysearch}/${overlayreplace}/g" ${overlayfile} > ${escovlfile}
Я прикрепил экранную шапку к окончательному результату видеопотока. Вся черная область - наложение.
Очень рад.
Спасибо за все ресурсы на этом сайте и в других местах. Это заняло у меня 4 дня и много часов постоянного поиска, но мне удалось собрать все это вместе.
введите описание изображения здесь