我正在尝试使用 mencoder 制作一个在单个图像上播放音乐的视频。我使用 mf 添加图像,并且我总是得到一个带有大约一秒钟音频的视频,报告的长度为 0:00。我尝试过来自不同来源的各种 mp3 和图像,并尝试过使用各种编解码器和选项,但似乎无法解决这个问题。以下是基本命令:
mencoder "mf://image.jpg" -o out.avi -ovc lavc -lavcopts vcodec=mjpeg -audiofile music.mp3 -oac copy
有人知道该怎么做或者为什么 mencoder 会将音乐剪辑到一秒吗?
答案1
这是因为默认 FPS 设置为 30,所以 mencoder 需要每秒 30 张图像——您必须告诉 mencoder 使用一张图像进行整个记录,因此您必须将 FPS 设置为 1/“持续时间”。
添加此选项:
-fps 1/132.8 -ofps 30
其中132.8
,音频的时长为(秒) 。
因此结果应如下所示:
mencoder mf://image.jpg -o out.avi \
-ovc lavc -lavcopts vcodec=mjpeg -audiofile music.mp3 \
-oac copy -fps 1/132.8 -ofps 30
答案2
我只想到了另一种方法,您可以从管道提供相同的图像:
for x in `seq 1 55`; do cat image.jpg; done | mencoder -o out.avi -fps 1 -ovc lavc -demuxer lavf -lavfdopts format=mjpeg -audiofile music.mp3 -oac copy -
其中,您可以将 55 替换为您希望的秒数(这将是歌曲的长度,如您所愿)。
但正如你所见,更笨比 Vojtech 的简单直接的回答更令人失望。我使用这个替代方案的唯一好处是生成的文件大小更小。