跳至主要内容

ffmpeg

大多数人使用像 OBS 这样的软件向 Owncast 直播。 如果你想直接从命令行进行流传输,ffmpeg 可以捕获相机或捕获卡,并通过 RTMP 将其推送到你的服务器。 这是一条高级路径,假设你对命令行感到舒适。

下面的示例适用于 Linux,捕获 /dev/video2 相机和 hw:1,0 ALSA 音频设备:

ffmpeg -f alsa -ac 2 -i hw:1,0 -thread_queue_size 64 \
-f v4l2 -framerate 60 -video_size 1280x720 -input_format yuyv422 -i /dev/video2 \
-c:v libx264 -preset veryfast -b:v 1984k -maxrate 1984k -bufsize 3968k \
-vf "format=yuv420p" -g 120 -c:a aac -b:a 128k -ar 44100 \
-f flv rtmp://<ip-of-your-server>/live/<your-streaming-key>

主要选项的作用:

  • -i /dev/video2-i hw:1,0:视频和音频输入。 这些是你为你的硬件和平台更改的部分(见下文)。
  • -c:v libx264 -preset veryfast:使用 x264 编码视频。 veryfast 用较低的 CPU 使用率换取一些压缩效率。 较慢的预设在相同比特率下看起来更好,但使用更多的 CPU。
  • -b:v 1984k -maxrate 1984k -bufsize 3968k:目标比特率约为 1984 kbps,并在此限制。 请参阅 选择视频质量 以为你的内容和上传速度选择比特率。
  • -g 120: emit a keyframe every 120 frames. -g counts frames, not seconds, so at 60 fps this is a keyframe every 2 seconds, which is what Owncast needs to segment the stream cleanly. Set -g to twice your framerate.
  • -c:a aac -b:a 128k -ar 44100:128 kbps 和 44.1 kHz 的 AAC 音频。
  • -f flv rtmp://.../live/<your-streaming-key>:将结果发送到你的 Owncast 服务器。 保留 /live/ 路径并使用你的流密钥。

其他平台上的输入

操作系统之间唯一更改的是输入标志。 上面的编码和输出选项保持不变。

macOS 使用 avfoundation。 列出你的设备,然后按 视频:音频 顺序选择它们:

ffmpeg -f avfoundation -list_devices true -i ""
ffmpeg -f avfoundation -framerate 30 -i "0:0" ...

Windows 使用 dshow。 列出你的设备,然后按名称选择它们:

ffmpeg -list_devices true -f dshow -i dummy
ffmpeg -f dshow -i video="Your Camera":audio="Your Microphone" ...

对于大多数设置,专用广播应用程序比维护 ffmpeg 命令更简单。 请查看 广播软件 概述以了解常见选项。


Improve this page

See something missing or incorrect? Edit this page and improve the documentation for everyone.

Contributors to this documentation