You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用FFmpeg将IP摄像头对接YouTube的技术问题咨询

解决FFmpeg推流YouTube的两个问题

先修正你原脚本里的两处错误:

  • -pix_fmt +是无效参数,YouTube要求视频采用yuv420p像素格式,需改为-pix_fmt yuv420p
  • -vcodec libx264和-c:v copy冲突,二者只能选其一;考虑到断连切换图片的需求,必须用编码而非直接复制流,所以删除-c:v copy

问题1:断连时保持推流并显示默认图片

要实现RTSP断连时不中断YouTube推流,同时播放默认图片,可借助FFmpeg的自动重连参数+滤镜切换流的方案,脚本如下:

rtsp_url="rtsp://xxxxxx"
rtmp_url="rtmp://xxxxxx"
default_img="/绝对路径/默认图片.jpg"

ffmpeg \
  # 开启RTSP自动重连
  -reconnect 1 -reconnect_streamed 1 -reconnect_delay_max 10 \
  -rtsp_transport tcp -i "$rtsp_url" \
  # 无限循环播放默认图片
  -stream_loop -1 -i "$default_img" \
  # 滤镜实现平滑切换:RTSP断连时切到图片,恢复时切回
  -filter_complex "
    [0:v]fade=t=out:st=2:d=1[v_rtsp];
    [1:v]fade=t=in:st=0:d=1[v_img];
    switch=eval=frame:cases='eof(0)':default_source=0[v]
  " \
  # 映射处理后的视频流和RTSP音频流(无音频则忽略)
  -map "[v]" -map 0:a? \
  # 编码参数适配YouTube要求
  -c:v libx264 -tune zerolatency -pix_fmt yuv420p \
  -c:a aac -b:a 128k -strict experimental \
  -f flv "$rtmp_url"

关键参数说明:

  • -reconnect系列参数:让FFmpeg在RTSP断连后自动尝试重连,最大间隔10秒
  • -stream_loop -1:让默认图片无限循环播放
  • switch滤镜:当RTSP流中断(触发eof(0))时,自动切换到图片流;RTSP恢复后切回原流
  • fade滤镜:实现流切换时的淡入淡出效果,避免画面生硬跳转

问题2:保持YouTube播放器ID一致

播放器ID由你使用的固定推流密钥和持久直播事件决定,按以下操作即可固定:

  1. 登录YouTube Studio,进入「直播」→「管理直播」
  2. 创建或选择一个「持久直播」事件(不要创建一次性临时直播)
  3. 获取该直播事件对应的固定RTMP推流URL和密钥,不要使用系统生成的一次性密钥
  4. 你的FFmpeg脚本始终推送到这个固定的RTMP地址,即使推流中断重连,YouTube会复用同一个播放器会话,ID不会改变

注意:不要每次推流都创建新的直播事件,必须复用同一个持久直播事件,否则会生成新的播放器ID。


内容的提问来源于stack exchange,提问作者vcima

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 05:16:08