我使用以下 ffmpeg 命令将我的屏幕流媒体分享到Facebook。
ffmpeg -f avfoundation -r 10 -video_size 352x288 -i "0" -c:v h264 -f flv
"rtmp://rtmp-api.facebook.com:80/rtmp/1269140699772419?ds=1&a=AaYsXcYcdHQrrrUF"
然而,一旦我按下“Go Live'按钮,并转到我的Facebook页面,我可以找到一个帖子说我现在直播。当我按下“播放”按钮时,只有黑色场景持续1~2秒,视频结束。
还有一个奇怪的事情,当我结束直播时,视频可以播放。刷新页面时,我可以找到一条帖子说我现场直播,这篇文章的视频可以成功播放。
任何人都知道为什么在预览和现场直播时可以观看视频而不是确切的直播时刻?
[更新]
答案 0 :(得分:3)
当您将视频视为实时视频时,请在Chrome检查面板中查看是否有任何内容。可能是一些警告或错误,为什么视频没有通过。通过wss使用WebRTC时遇到了同样的问题。
尝试ffmpeg命令的另一件事是添加:
-c:v libx264 -profile:v baseline -level 3.1 -pix_fmt yuv420p
是:
ffmpeg -f avfoundation -r 10 -i "0" -c:v libx264 -profile:v baseline -level 3.1 -pix_fmt yuv420p -f flv "rtmp://rtmp-api.facebook.com:80/rtmp/1269140699772419?ds=1&a=AaYsXcYcdHQrrrUF"
您可以在实时事件之后看到视频,因为编码会保存它并且可以在浏览器中查看并且可以测试。对于实时流只发生复制,你可以使用ffmpeg参数来使它在该页面上可见。
答案 1 :(得分:2)
我也遇到了同样的问题。在我的情况下,我正在循环图像以制作视频并将其流式传输到Facebook而不发送任何音频流。
根据facebook的指南,实时视频流必须包含音频流,否则直播视频将被视为结束。
确保要传输到fb的输入文件包含音频流。如果它没有任何音频流,你仍然可以使用任何其他音频流,然后你可以在按下实时按钮后看到你的视频。
ffmpeg -loop 1 -re -y -f image2 -i "image_path" -i "silent_audio_or_any_other_audio" -codec:a aac -ac 1 -ar 44100 -b:a 128k -pix_fmt yuv420p -profile:v high -s 1280x720 -vb 400k -maxrate 400k -minrate 400k -bufsize 600k -deinterlace -vcodec libx264 -preset veryfast -g 30 -r 30 -strict -2 -f flv "rtmp_link"
我仍在使用此代码,这对我来说非常有用:)
希望,这可能有助于某人。