gpt4 book ai didi

facebook - 在 Ubuntu 16.04 上使用 ffmpeg 从 Icecast 流式传输到 Facebook Live

转载 作者:行者123 更新时间:2023-12-04 23:03:14 24 4
gpt4 key购买 nike

我有一个由 Liquidsoap+Icecast 在 DigitalOcean 液滴(Ubuntu 16.04)上流式传输的网络广播,我想将此音频流与带有 ffmpeg 的简单 jpeg 图像结合起来,将其转换为视频流并将其实时发送到 Facebook。

Facebook Live 规范:

Video Format :

We accept video in maximum 720p (1280 x 720) resolution, at 30 frames per second. (or 1 key frame every 2 seconds). You must send an I-frame (keyframe) at least once every two seconds throughout the stream.. Recommended max bit rate is 4000 Kbps. Titles must be less than 255 characters otherwise the stream will fail. The Live API accepts H264 encoded video and AAC encoded audio only.

Video Length :

240 minute maximum length, with the exception of continuous live (see above). 240 minute maximum length for preview streams (either through Live dialog or publisher tools). After 240 minutes, a new stream key must be generated.

Advanced Settings :

Pixel Aspect Ratio: Square. Frame Types: Progressive Scan. Audio Sample Rate: 44.1 KHz. Audio Bitrate: 128 Kbps stereo. Bitrate Encoding: CBR.



我试过的 ffmpeg 命令:
ffmpeg -loop 1 -i radio-background.jpg -thread_queue_size 20480 -i http://localhost:8000/radio -framerate 30 -r 30 -acodec aac -strict -2 -c:v libx264 -strict experimental -b:a 128k -pix_fmt yuvj444p -x264-params keyint=60 -b:v 256k -minrate 128k -maxrate 512k -bufsize 768k -f flv 'rtmp://rtmp-api.facebook.com:80/rtmp/<fb-streaming-key>'

这实际上是有效的,因为 Facebook 接收实时视频并允许我发布它。但我不明白为什么几乎每 2 或 3 秒就会出现一次延迟。我让不同的人观看测试视频,每个人都遇到相同的问题:每 2 或 3 秒播放“卡住”半秒,似乎正在加载视频,我什至可以看到加载图标在屏幕上旋转。

我为以下选项尝试了不同的值组合:-thread_queue_size/-b:v/-minrate/-maxrate/-bufsize。似乎没有任何变化。

视频流对我来说是新的,我对之前列出的选项不太满意,所以我想我在这里遗漏了一些东西......

另外,请注意,icecast 音频流完美运行,并且根据 DigitalOcean 图表,服务器没有过载。所以我认为我的 ffmpeg 命令是错误的。

什么 ffmpeg 参数适用于这种情况?

最佳答案

指定图像的帧速率。这将在输入项之前进行。

-r 30 -loop 1 -i radio-background.jpg

如果您的广播流已经是 aac,您可以只流式传输复制,无需重新编码音频。您可以使用 -c:a 副本。
-c:a copy

如果你仍然想使用 aac,你应该切换到使用 libfdk_aac。 ffmpeg 默认使用 128k 比特率的音频,因此无需指定 -b:a
-c:a libfdk_aac

默认情况下,ffmpeg 将使用第一项的输入帧速率作为输出,因此您无需再指定帧速率。 (您指定了两次输出帧速率。-framerate 30 和 -r 30 相同)

超快预设以获得更好的 CPU 性能、调整和像素格式。您也可以使用 -g 作为键。
-c:v h264 -preset ultrafast -tune stillimage -pix_fmt yuvj444p -g 60

设置配置文件和配置文件级别,bframes
-profile:v high444 -level 4.2

使用 -b:v 或 -minrate -maxrate -bufsize 但不能同时使用。
-b:v 768k

我们出去
-f flv rtmp://rtmp-api.facebook.com:80/rtmp/streamkey

现在把它们放在一起
    ffmpeg -r 30 -loop 1 -i radio-background.jpg \
-i http://localhost:port/mount -c:a libfdk_aac -c:v h264 -b:v 768k \
-preset ultrafast -tune stillimage -pix_fmt yuvj444p -g 60 \
-profile:v high444 -level 4.2 -f flv rtmp://rtmp-api.facebook.com:80/rtmp/streamkey

关于facebook - 在 Ubuntu 16.04 上使用 ffmpeg 从 Icecast 流式传输到 Facebook Live,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41651248/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com