首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >静态图像和mp3的文件夹?

静态图像和mp3的文件夹?
EN

Stack Overflow用户
提问于 2013-06-28 04:00:00
回答 1查看 478关注 0票数 1

我想创建一组由单个图像组成的视频,这是整个视频显示,但每个视频都有一个不同的音频文件。我可以用各种工具手动完成,但问题是我有很多音频文件,我不能优化帧率(后面会有更多),这样做需要很多时间,但ffmpeg提供了我需要的一切,但问题是我不知道如何批量处理所有东西。

基本代码:

ffmpeg -i song-name.mp3 -loop 1 -i cover.jpg -r frame-rate -t song-length -acodec copy output.mp4

我想要实现的目标:

假设我有一个文件夹,其中包含几个音频文件: song-name-1.mp3、song-name-2.mp3、...、song-name-n.mp3和cover.jpg。

我需要一个批处理文件,它接受文件夹中每个mp3文件的名称(我想是一个FOR循环),并使用相同的命令处理它:

ffmpeg -i song-name.mp3 -loop 1 -i cover.jpg -r frame-rate -t song-length -acodec copy output.mp4

因此,每个视频的图像总是相同的。可以使用工具mp3info和相应的命令获取歌曲长度:

mp3info.exe -p %S song-name.mp3

因为我在整个视频中只有一张图像,所以最优的帧速率将是视频长度的倒数,即1/length (其中length是我们从mp3info获得的以秒为单位的变量)。

因此,最终的代码应该如下所示:

ffmpeg -i song-name.mp3 -loop 1 -i cover.jpg -r 1/length -t length -acodec copy song-name.mp4

其中"song-name“是一个变量,它会随着for循环的每次迭代而改变(例如,对于文件夹中的每个音频文件),而length是一个变量,我们可以通过下面的命令获取它的值:

mp3info.exe -p %S song-name.mp3

我找到了一个FOR循环的例子来获取特定文件夹中所有MP3的所有文件名,但我不知道如何集成mp3info。我希望有人能帮助我,并且我对C编程语言有一定的了解,如果C编程语言可以以任何方式使用的话。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-06-28 17:47:44

这是经过编辑的简化版本,没有VBS数学。

使用%%S的原因是,%是一个特殊的批处理字符,用于%environment% variables和forINdo循环中,并且为了在forINdo命令中获得一个单一值,必须将其加倍。类似地,echo %%将回显一个百分号。

代码语言:javascript
复制
@echo off
for %%a in (*.mp3) do (
for /f "delims=" %%b in ('mp3info.exe -p %%S "%%a"') do (
ffmpeg -i "%%a" -loop 1 -i "cover.jpg" -r 1 -t %%b -acodec copy "%%~na.mp4"
)
)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17352149

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档