J'ai une vidéo qui est téléchargée avec youtube-dl . Je veux créer une vidéo à partir d'une image et de la vidéo téléchargée, en utilisant ffmpeg
et la fonction de boucle.
./ffmpeg -f concat -safe 0 -i list.txt -c copy merged.mp4
L'intérieur de mon fichier list.txt est
file word_img.jpg
file youtube_video.mp4
L'exécution de la commande en bas de page crée une nouvelle vidéo. C'est juste que c'est exactement la même chose que la vidéo Youtube. L'autre image n'est jamais ajoutée. Cela pourrait-il avoir un rapport avec l'encodage ?
J'ai également essayé une autre approche qui ressemblait à ceci.
./ffmpeg -t 125 -async 1 -i youtube_video.mp4\
-t 5 -i word_img.jpg \
-filter_complex "[0]loop=149:1:0[bgheld5]; \
[1]loop=149:1:0[fgheld5]; \
[bgheld5][fgheld5]overlay=eof_action=pass" out.mp4
Ça marche en quelque sorte. Il y a une image statique qui s'affiche pendant 5 secondes, puis la vidéo youtube de 30 secondes est diffusée. Le problème est que l'audio et la vidéo de la vidéo youtube sont désynchronisés d'environ 5 secondes.
Running ./ffmpeg -i img.jpg
donne les résultats suivants
Input #0, image2, from 'img.jpg':
Duration: 00:00:00.04, start: 0.000000, bitrate: 1258 kb/s
Stream #0:0: Video: mjpeg (Baseline), yuvj420p(pc, bt470bg/unknown/unknown), 640x356 [SAR 96:96 DAR 160:89], 25 tbr, 25 tbn, 25 tbc
Running ./ffmpeg -i video.mp4
donne les résultats suivants
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'video.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
encoder : Lavf58.26.101
Duration: 00:02:00.04, start: 0.000000, bitrate: 575 kb/s
Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 640x356 [SAR 1:1 DAR 160:89], 440 kb/s, 24.98 fps, 24.98 tbr, 25k tbn, 49.95 tbc (default)
Metadata:
handler_name : ISO Media file produced by Google Inc. Created on:
10/28/2018.
Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 128 kb/s (default)
Metadata:
handler_name : ISO Media file produced by Google Inc. Created on: 10/28/2018