有没有办法在流式传输到 rtmp 时更改 ffmpeg 输入? 我有这个 bash 脚本
#! /bin/bash
VBR="1500k"
FPS="24"
QUAL="superfast"
RTMP_URL="rtmp://live.live/live"
KEY="xxxxxxxxxxxxxxxxxxxxx"
VIDEO_SOURCE="video.mp4"
AUDIO_SOURCE="song.mp3"
NP_SOURCE="song.txt"
FONT="font.ttf"
ffmpeg \
-re -f lavfi -i "movie=filename=$VIDEO_SOURCE:loop=0, setpts=N/(FRAME_RATE*TB)" \
-thread_queue_size 512 -i "$AUDIO_SOURCE" \
-map 0:v:0 -map 1:a:0 \
-map_metadata:g 1:g \
-vf drawtext="fontsize=25: fontfile=$FONT: \
box=1: boxcolor=black@0.5: boxborderw=20: \
textfile=$NP_SOURCE: reload=1: fontcolor=white@0.8: x=50: y=50" \
-vcodec libx264 -pix_fmt yuv420p -preset $QUAL -r $FPS -g $(($FPS * 2)) -b:v $VBR \
-acodec libmp3lame -ar 44100 -threads 6 -qscale:v 3 -b:a 320000 -bufsize 512k \
-f flv "$RTMP_URL/$KEY"
我想要做的是能够动态更改 VIDEO_SOURCE,我在想是否可以将输入设为目录然后动态更改该目录中的视频,我是处理脚本的新手所以我不知道该怎么做
答案 0 :(得分:0)
这是一个完整的猜测,基于我对 while guess != fruits:
if fruit.index(guess) < fruit.index(fruits):
print("-You've guessed low, try again")
guess = input("Guess a fruit: blueberry, grape, apple, mango, or watermellon: \n")
elif fruit.index(guess) > fruit.index(fruits):
print("-You've guessed high, try again")
guess = input("Guess a fruit: blueberry, grape, apple, mango, or watermellon: \n")
#the loop breaks when guess==fruits and enters the else block
else:
print("You guessed the right number!")
如何处理交互式输入的了解很少:
ffmpeg
如果您将 while :; do
ffmpeg \
-re -f lavfi -i "movie=filename=$VIDEO_SOURCE:loop=0, setpts=N/(FRAME_RATE*TB)" \
-thread_queue_size 512 -i "$AUDIO_SOURCE" \
-map 0:v:0 -map 1:a:0 \
-map_metadata:g 1:g \
-vf drawtext="fontsize=25: fontfile=$FONT: \
box=1: boxcolor=black@0.5: boxborderw=20: \
textfile=$NP_SOURCE: reload=1: fontcolor=white@0.8: x=50: y=50" \
-vcodec libx264 -pix_fmt yuv420p -preset $QUAL -r $FPS -g $(($FPS * 2)) -b:v $VBR \
-acodec libmp3lame -ar 44100 -threads 6 -qscale:v 3 -b:a 320000 -bufsize 512k \
-f flv "$RTMP_URL/$KEY"
read -p "Next movie?" VIDEO_SOURCE
[ "$VIDEO_SOURCE" = q ] && break
done
发送到标准输入,ffmpeg
应该(?)退出。然后,您的脚本将提示您输入 q
的新值。如果您再次键入 VIDEO_SOURCE
,则循环退出。否则,它会使用新的视频源文件重新启动 q
。
如果这可行,您或许可以将其调整为更接近您的需求。