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

如何用FFmpeg给视频指定区域加滚动歌曲名并推流至YouTube/Twitch

FFmpeg 直播推流与视频文本/滚动效果处理方案

一、给视频添加歌曲名称文本

使用FFmpeg的drawtext滤镜直接在视频帧上叠加文本,可自定义字体、位置、样式:

# 基础示例:固定位置显示歌曲名
drawtext=fontfile=你的字体文件.ttf:text='歌曲名称':x=100:y=100:fontsize=24:fontcolor=white:shadowcolor=black:shadowx=2:shadowy=2

若音频文件包含元数据,可自动读取歌曲名:

drawtext=fontfile=你的字体文件.ttf:text='%{metadata:title}':x=100:y=100:fontsize=24:fontcolor=white

二、特定区域+指定时间段的文本滚动

通过enable参数限制文本显示时间,结合坐标表达式实现仅在指定区域内滚动:

# 示例:第5-15秒内,在x=50到x=500的水平区域,文本从右向左滚动
drawtext=fontfile=你的字体文件.ttf:text='滚动歌词内容':
x='if(gt(t,5), min(500, 500 - (t-5)*50), 500)':  # 5秒后开始左移,到x=50边界停止
y=300:fontsize=24:fontcolor=white:
enable='between(t,5,15)'  # 仅在5-15秒生效

三、优化循环视频+多音频循环推流命令

你原命令中的-c copy属于冗余参数(后续对视频重新编码,该参数不生效),优化后命令更简洁可靠:

ffmpeg -re -stream_loop -1 -i back.gif \
-stream_loop -1 -safe 0 -i mylist.txt \
-c:v libx264 -preset veryfast -b:v 3000k -maxrate 3000k -bufsize 6000k \
-pix_fmt yuv420p -g 50 \
-c:a aac -b:a 160k -ac 2 -ar 44100 \
-map 0:v:0 -map 1:a:0 \
-f flv rtmp://live.twitch.tv/app/$key
  • -stream_loop -1分别作用于视频和音频输入,实现两者无限循环
  • -re按帧率读取输入,避免推流速度过快

四、整合滚动图片效果到推流命令

将滚动图片脚本与推流命令整合,调整滤镜循环逻辑适配无限推流:

ffmpeg -re -ignore_loop 0 -r 25 -i back.gif \
-loop 1 -r 25 -i input.jpg \
-stream_loop -1 -safe 0 -i mylist.txt \
-filter_complex "[0:v]crop=270:257:360:55[c0];[c0][1:v]overlay=y='257-t*257*0.04':eof_action=repeat[fg];[0:v][fg]overlay=x=360:y=55:eof_action=repeat[v_out]" \
-map "[v_out]" -map 2:a:0 \
-c:v libx264 -preset veryfast -b:v 3000k -maxrate 3000k -bufsize 6000k \
-pix_fmt yuv420p -g 50 \
-c:a aac -b:a 160k -ac 2 -ar 44100 \
-f flv rtmp://live.twitch.tv/app/$key
  • [0:v]crop=270:257:360:55[c0]:从背景视频裁剪出滚动区域遮罩
  • overlay=y='257-t*257*0.04':控制图片从下往上滚动的速度
  • eof_action=repeat:确保滤镜效果随视频循环持续生效

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 14:40:30