FFmpeg: Looping-Stream mehrerer Dateien

FFmpeg: Looping-Stream mehrerer Dateien

Derzeit wird versucht, einen Stream von Audiodateien, die aus einer TXT-Datei geladen wurden, in einer Schleife abzuspielen:

 #! /bin/bash
    
        VBR="1500k"
        FPS="30"
        QUAL="ultrafast"
        YOUTUBE_URL=" rtmp://a.rtmp.youtube.com/live2"
        YOUTUBE_KEY="****"
        VIDEO_SOURCE="video.mp4"
        AUDIO_ENCODER="aac"
        
        ffmpeg \
         -stream_loop -1 \
         -re \
         -i "$VIDEO_SOURCE" \
         -thread_queue_size 512 \
         -stream_loop -1 \
         -re \
         -f concat -i audiofiles.txt \
         -c:v libx264 -preset $QUAL -r $FPS -g $(($FPS *2)) -b:v $VBR -bufsize 3000k -maxrate $VBR \
         -c:a $AUDIO_ENCODER -ar 44100 -b:a 128k -pix_fmt yuv420p \
         -f flv $YOUTUBE_URL/$YOUTUBE_KEY

Das Ergebnis ist, dass die Wiedergabeliste einmal abgespielt wird und dann stoppt. Wie kann ich die Schleife erzwingen?

Antwort1

Derconcat demxuerDie Eingabetextdatei kann auf sich selbst verweisen, um eine Endlosschleife zu erstellen.

Beispielinhalte von audio.txt:

ffconcat version 1.0
file 'audio1.mp3'
file 'audio2.mp3'
file 'audio.txt'

ffconcat version 1.0Damit dies funktioniert, ist der Header erforderlich.

Einfacher Beispielbefehl zum kontinuierlichen Wiedergeben von zwei in aufgelisteten Audiodateien audio.txtund Beenden der Ausgabedauer mit der gleichen Dauer wie video.mp4:

ffmpeg -i video.mp4 -f concat -i audio.txt -shortest output.mp4

Adaptiert vonIst es möglich, mit concat eine Endlosschleife zu erstellen?

verwandte Informationen