【发布时间】:2020-04-24 16:38:52
【问题描述】:
我已经用头撞这堵墙很久了。希望大家能帮我解决。
我有一个从 IP 摄像机到我的计算机的实时流。
Nginx 发布到 YouTube 和 FFmpeg 流,每分钟需要一帧用于静态网络摄像头图像。
这是我尝试使用但没有成功的 exec_push 代码。 YouTube 流和帧捕获工作正常。我用freetype安装了FFmpeg。这一切都在安装了自制 FFmpeg --HEAD 的 MacOS X 10.15.4 Catalina 上。
更新:我还应该说我已经尝试使用命令行 FFmpeg 输出叠加层,并且它与这个命令配合得很好:
/usr/local/bin/ffmpeg -i rtmp://localhost:1935/live/68.1. -vf drawtext="fontfile=/System/Library/Fonts/Supplemental/Arial.ttf:text='Stack Overflow': fontcolor=white: fontsize=24: box=1: boxcolor=black@0.5: boxborderw=5: x=(w-text_w)/2: y=(h-text_h)/2" /Users/user/Desktop/test.mp4
所以看起来输出部分是FFmpeg在Nginx.conf中不喜欢的部分
我的想法是我应该将覆盖的 FFmpeg 流传递给“覆盖”应用程序,并将流发布到 Youtube 并从那里捕获帧。 (并且还可能被记录)。
更新:当我尝试指向一个 sh 文件来运行命令而不是直接 FFmpeg exec_push 时,我得到:
[alert] 56849#0: kevent() error on 15 filter:-1 flags:4002 (2: No such file or directory)
非常感谢!
rtmp {
server {
listen 1935;
chunk_size 4096;
application live {
live on;
record off;
exec_push /usr/local/bin/ffmpeg -i rtmp://localhost:1935/live/68.1. -vf drawtext="fontfile=/System/Library/Fonts/Supplemental/Arial.ttf:textfile=/Users/Shared/overlayescaped.txt: reload=1: fontcolor=white: fontsize=20: box=1: boxcolor=black@1: boxborderw=75: x=70: y=925" -c:v libx264 -maxrate 6000k -bufsize 4000k -c:a aac -b:a 160k -ar 44100 -b:a 128k -f mp4 rtmp://localhost:1935/overlay/test;
#push rtmp://localhost:1935/overlay;
}
application overlay {
live on;
record off;
push rtmp://a.rtmp.youtube.com app=live2 playpath=yourstreamkey;
exec_push /usr/local/bin/ffmpeg -i rtmp://localhost:1935/overlay/$name -vf fps=1/60 /Users/Shared/stream/netcam.jpg;
}
}
}
【问题讨论】:
标签: nginx ffmpeg youtube overlay rtmp