使用场景说明
我习惯闲暇之余听考研政治课的音频
原版低级代码如下
for %%a in (*.mp4) do ffmpeg -threads 15 -i "%%a" -vn -acodec copy "%%a.aac" -n
pause
此代码仅仅能够实现将bat代码所在文件夹下的视频给无损且无转码高速转换为音频(上百倍速度)
注释:下面的采取的aac是常见视频的内嵌音频流,有的视频比如油管下载下来的mkv格式音乐视频内的音频为fltp格式等,用
ffmpeg -i 文件
即可获取文件内置默认音频的格式,如下若为fltp的格式音频,想要不转码高速输出就得修改aac为fltp

回到正题
之所以不能一个个文件夹下慢慢去一个个启动程序来处理,仅仅是因为我储存视频文件用的是机械硬盘,所以要是一个个文件夹分开的启动多个命令,由于机械硬盘结构设计局限,同时吞吐多个不同位置下的文件需要磁头来回到不同扇区工作,类似于分身乏术就会将几十mb/s的读取性能拉到可怜的个位数4mb/s左右,所以需要找到方法一个程序打开便能够读取多个文件夹下的视频来提取音频同时方便查找放音频到原来的视频所在文件夹下
for /r . %%a in (/*.mp4) do ffmpeg -threads 15 -i "%%a" -vn -acodec copy "%%a.aac" -n
pause
注解什么的懒得注解了,看这篇一样
(原文中用的是%%i 这里用的是%%a 不影响)
参考文章
https://www.cnblogs.com/xpwi/p/9626959.html

效果如下上百倍速度(有的甚至上千倍)

CPU占用超低同时磁盘占用效率极高


本文介绍了如何使用批处理命令ffmpeg高效地将视频文件批量无损转换为音频,尤其针对机械硬盘环境下,通过一次性处理多个文件夹下的视频,避免磁头频繁移动造成的性能下降。代码示例展示了如何遍历指定目录及其子目录,进行音频提取。这种方法能保持极高的磁盘读取效率和CPU占用率。

被折叠的 条评论
为什么被折叠?



