我有一个嵌入了封面的 mp3 文件。我想生成一个带有音频播放的图像视频,播放时间与音频播放时间相同。
我可以使用以下方法通过单独文件中的图像实现此目的:
ffmpeg -loop 1 -framerate 1 -i "image.jpg" -i "audio.mp3" -map 0:v -map 1:a -shortest -r 1 "output.mp4"
不将图像分离成其自己的文件就可以做到这一点吗?
如果我运行ffprobe -i audio.mp3
它表明
Stream #0:1: Video: mjpeg (Progressive), yuvj420p(pc, bt470bg/unknown/unknown), 1200x1200 [SAR 300:300 DAR 1:1], 90k tbr, 90k tbn (attached pic)
Metadata:
title : front cover
comment : Cover (front)
这是图像的 ffprobe:ffprobe -i image.jpg
Input #0, image2, from 'folder.jpg':
Duration: 00:00:00.04, start: 0.000000, bitrate: 53163 kb/s
Stream #0:0: Video: mjpeg (Progressive), yuvj420p(pc, bt470bg/unknown/unknown), 1200x1200 [SAR 300:300 DAR 1:1], 25 fps, 25 tbr, 25 tbn
据我了解,-loop
和framerate
选项是图像解复用器的一部分。
这可能吗?如果不在 CLI 上,是否可以在不到 37 年的时间内修改源代码来做到这一点?
谢谢
答案1
我发现使用环路滤波器有效:
ffmpeg -i "first.mp3" -filter_complex "[0:v]scale=-1:-1[vid];[vid]loop=loop=-1:size=1:start=0[vid2]" -map [vid2]:v -map 0:a -b:a 320k -shortest -r 1 -movflags +faststart "output.mp4"
不过速度很慢,只有 5 倍。我会继续尝试,看看能否找到更快的方法。