Ffmpeg 合并视频。一步完成多种叠加和音频

Ffmpeg 合并视频。一步完成多种叠加和音频,ffmpeg,Ffmpeg,我有一个每小时运行一次的过程来更新60秒的天气视频 我将背景视频与生成的m4a音轨、滚动文本和独立的顶部和底部覆盖层相结合 我需要在mp4和TLS(m3u8)格式的所有这些 现在,我连续执行3个ffmpeg会话,最终得到渲染的720p mp4 然后我运行第四个ffpmeg会话,将mp4转换为TLS版本(我需要mp4和m3u8) 我在4次ffmpeg运行中完成了这项工作,因为我还没有弄清楚如何组合过滤器并在更少的时间内完成 当我尝试将其合并时,我会丢失覆盖层或文本。我不可能在一次会议中把它全部讲出

我有一个每小时运行一次的过程来更新60秒的天气视频

我将背景视频与生成的m4a音轨、滚动文本和独立的顶部和底部覆盖层相结合

我需要在mp4和TLS(m3u8)格式的所有这些

现在,我连续执行3个ffmpeg会话,最终得到渲染的720p mp4

然后我运行第四个ffpmeg会话,将mp4转换为TLS版本(我需要mp4和m3u8)

我在4次ffmpeg运行中完成了这项工作,因为我还没有弄清楚如何组合过滤器并在更少的时间内完成

当我尝试将其合并时,我会丢失覆盖层或文本。我不可能在一次会议中把它全部讲出来。我尝试过在过滤器中使用逗号分隔,但没有找到正确的组合

任何帮助我展示如何结合这项工作和减少运行次数将不胜感激

这在带有ffmpeg 3.4.1版的Centos 7机箱上运行

#
# Step 1: Combine background video with audio and scrolling text
#
ffmpeg -i /video/weather/media/sunnybeach.mp4 \
-i /video/weather/prod/currentweather.m4a \
-i /video/weather/media/weather-lower-third1.png \
-map 2:v:0 -map 1:a:0 -strict -2 \
-filter_complex  "[0]split[txt][orig];[txt]drawtext=fontfile=/var/www/vhosts/30a.tv/httpdocs/openx/lib/pear/Image/Canvas/Fonts/arial.ttf:fontsize=80:fontcolor=white:x=(w-text_w)/2+20:y=h-70*t:textfile=/video/weather/prod/currentweather.txt:bordercolor=black:borderw=2[txt];[orig]crop=iw:50:0:0[orig];[txt][orig]overlay” \
-t 60 -c:v libx264 -y -s hd720  -loglevel quiet /video/weather/prod/currentweather.mp4 2>&1 >> /dev/null

if [ $? != 0 ]; then echo fail step 1; exit 1;fi

#
# Step 2: now overlay current lowerthird
#
ffmpeg -i /video/weather/prod/currentweather.mp4 \
-i /video/weather/media/weather-lower-third1.png \
-strict -2 -filter_complex  "[0:v][1:v]overlay" -c:a copy -y  \
-loglevel quiet $FKWI/currentweather1.mp4 2>&1 >> /dev/null

if [ $? != 0 ]; then echo fail step 2; exit 1;fi

#
# Step 3: now overlay current topbanner
#
ffmpeg -i $FKWI/currentweather1.mp4 \
-i /video/weather/media/weather-top-banner.png \
-strict -2 -filter_complex  "[0:v][1:v]overlay" -c:a copy -y  \
-loglevel quiet $FKWI/currentweather.mp4 2>&1 >> /dev/null

if [ $? != 0 ]; then echo fail step 3; exit 1;fi

#
# Step 4: Now make TLS version
#

cd $FKWI/httpdocs/weather
RES1=`/usr/bin/ffmpeg -i $FKWI/httpdocs/currentweather.mp4 \
-profile:v baseline -level 3.0 -s 1280x720 \
-c:a aac -ar 48000 -g 60 -start_number 0 \
-hls_time 6 -hls_list_size 0 -f hls \
-hls_base_url "http://$URL.com/weather/" \
-hls_segment_filename "video%04d.ts" \
-strict -2   -loglevel quiet "currentweather.m3u8" 2>&1>>/dev/null `

if [ $? != 0 ]; then echo fail step 4; exit 1;fi
这段代码可以很好地生成这两个视频,但它需要4次运行,我需要在更少的运行中实现