Bash 从多个图像和声音文件创建旁白幻灯片

Bash 从多个图像和声音文件创建旁白幻灯片,bash,audio,video,ffmpeg,Bash,Audio,Video,Ffmpeg,我有一套jpg格式的幻灯片(s-00.jpg,s-01.jpg,…)和一套mp3格式的音频文件(a-00.mp3,a-01.mp3,…) 我想创建一个带有旁白幻灯片的mp4: s-00.jpg在播放a-00.mp3时显示 s-01.jpg在播放a-01.mp3时显示 我确信这对于ffmpeg来说相对来说是微不足道的,但我很难理解语法。到目前为止,我所能发现的是,我可以用这些图像制作一个视频 ffmpeg -i s-%02d.jpg slideshow.mp4 我找到了很多如何在整个幻灯片

我有一套jpg格式的幻灯片(s-00.jpg,s-01.jpg,…)和一套mp3格式的音频文件(a-00.mp3,a-01.mp3,…)

我想创建一个带有旁白幻灯片的mp4:

  • s-00.jpg在播放a-00.mp3时显示
  • s-01.jpg在播放a-01.mp3时显示
我确信这对于ffmpeg来说相对来说是微不足道的,但我很难理解语法。到目前为止,我所能发现的是,我可以用这些图像制作一个视频

ffmpeg -i s-%02d.jpg slideshow.mp4

我找到了很多如何在整个幻灯片放映中添加一个mp3文件的示例,但找不到任何可以在每张幻灯片中添加不同mp3文件的示例

感谢罗伯特在上面的评论,我找到了答案。我编写了一个bash脚本来实现这一点,而不是试图提出一个overcomplex ffmpeg解决方案:

# Create one video per slide
for file in *.mp3 
do
    number=$(echo $file | cut -f 1 -d '.')
    ffmpeg -y -loop 1 -i $number.jpg -i tmp-$file -c:v libx264 -c:a aac -b:a 192k -vf format=yuv420p -shortest $number.mp4


    echo "file '$number.mp4'" >> files.txt
done

# Merge videos
ffmpeg -y -f concat -safe 0 -i files.txt -movflags +faststart -c copy output.mp4


# Clean up
mv output.mp4 output.do_not_delete
rm *.mp4
mv output.do_not_delete output.mp4
rm files.txt

感谢罗伯特在上面的评论,我找到了答案。我编写了一个bash脚本来实现这一点,而不是试图提出一个overcomplex ffmpeg解决方案:

# Create one video per slide
for file in *.mp3 
do
    number=$(echo $file | cut -f 1 -d '.')
    ffmpeg -y -loop 1 -i $number.jpg -i tmp-$file -c:v libx264 -c:a aac -b:a 192k -vf format=yuv420p -shortest $number.mp4


    echo "file '$number.mp4'" >> files.txt
done

# Merge videos
ffmpeg -y -f concat -safe 0 -i files.txt -movflags +faststart -c copy output.mp4


# Clean up
mv output.mp4 output.do_not_delete
rm *.mp4
mv output.do_not_delete output.mp4
rm files.txt

欢迎来到堆栈溢出。这也是一个面向专业和热情程序员的问答页面。在问题中添加您自己的代码。你至少要展示你自己解决这个问题的研究成果。只是一个想法,但是由于你所有的活动部分,你可以考虑2个步骤。对于所有幻灯片,获取音频和ffmpeg合并这2张幻灯片,对所有幻灯片重复。。第二部分比较难。这是一个concat过滤器,它迭代/浓缩所有谨慎的视频以组成最终输出Hanks,@RobertRowntree-我想我会继续搜索几天,而不是执行简单的额外步骤…欢迎来到Stack Overflow。这也是一个面向专业和热情程序员的问答页面。在问题中添加您自己的代码。你至少要展示你自己解决这个问题的研究成果。只是一个想法,但是由于你所有的活动部分,你可以考虑2个步骤。对于所有幻灯片,获取音频和ffmpeg合并这2张幻灯片,对所有幻灯片重复。。第二部分比较难。这是一个concat过滤器,它迭代/压缩所有谨慎的视频以组成最终输出Hanks,@RobertRowntree-我想我会持续搜索数天,而不是执行简单的额外步骤…建议在第一个
ffmpeg
命令中添加
-vf format=yuv420p
,这样输出就可以由非ffmpeg播放器播放,如果要通过渐进式下载观看输出,则将
-movflags+faststart
转换为第二个命令。另外,引用变量,这样就不会在文件名上用空格分隔(请参见shellcheck.net)。如果要优化
cut
命令,请使用参数扩展来处理扩展。谢谢!已修改此项-请参见上文
-movflags+faststart
是一个输出选项,因此应将其移动到输出文件之前,而不是输入之前。这解释了它为何会中断。。。我永远不会明白。谢谢建议将
-vf format=yuv420p
添加到第一个
ffmpeg
命令中,以便非基于ffmpeg的播放器可以播放输出,如果要通过渐进式下载观看输出,建议将
-movflags+faststart
添加到第二个命令中。另外,引用变量,这样就不会在文件名上用空格分隔(请参见shellcheck.net)。如果要优化
cut
命令,请使用参数扩展来处理扩展。谢谢!已修改此项-请参见上文
-movflags+faststart
是一个输出选项,因此应将其移动到输出文件之前,而不是输入之前。这解释了它为何会中断。。。我永远不会明白。谢谢