引言

FFMpeg 是众多多媒体应用程序的核心,但该程序本身不具备一次转换多个文件的能力。

但也拦不住,FFMpeg 本身是命令行程序,可编写脚本,借助 Bash 轻松快速地构建自动化程序。

1 - 设置变量

使用 FFMpeg 处理批处理文件转换的唯一高效方法是通过 Bash 脚本。不需要做的非常复杂,为了一个需求,只要够用就可以。

本文将使用简单得多的方法来完成工作。

首先,创建一个 Bash 脚本文件。

touch ffmpeg-batch.sh

接下来,使用您喜欢的文本编辑器打开它,并将其设置为bash脚本。

#!/bin/bash

此脚本将对文件路径、扩展名和 FFMpeg 选项使用一系列变量。

通过这种足够灵活的方式,你可以在不同参数位置,传递不同的文件,并在传参过程中选择文件格式。

我们规划五个变量:输入目录和输出目录各需要一个。

为输入文件扩展名设置一个集合,为输出扩展名设置另一个集合。

创建一个通用的参数转换选项。

我们把变量名都起好了:

srcExt=$1

destExt=$2

srcDir=$3

destDir=$4

opts=$5

想用你喜欢的变量名,那完全可以,修改就是。

扩展名是必需的,而不是简单地从文件中提取它们,因为一个文件夹可能包含多种类型的文件。

如果文件夹中只有一种类型的文件,那么可以直接修改脚本,使其以这种方式工作。

2 - for 循环

此脚本中的所有内容都通过一个简单的 for 循环进行。它将迭代指定目录中有指定扩展名的每个文件。

for filename in "$srcDir"/*.$srcExt; do

done

3 - 去掉文件名

要使脚本真正具有通用性,你需要去掉每个文件的路径和扩展名,以获得纯粹的文件名。这样,脚本将能够以相同的文件名导出新转换的文件,而不需要单独指定或重命名文件。

首先,去掉扩展并将其赋给一个新变量。

for filename in "$srcDir"/*.$srcExt; do

然后,将路径从文件名中剥离。

baseName=${basePath##*/}

你可以试着把结果打印出来,看看变量内容是什么。

echo $baseName

4 - 汇总起来

经过上面的思路准备,终于可以添加 FFmpeg 起作用的代码了。这一部分本质上只是一个对 FFMpeg 的简单调用。为 FFMpeg 提供完整的文件名,并将路径作为其输入。

然后,使用目标目录、提取的文件名和目标文件扩展名构建输出。

引号是 Bash 将每个变量视为字符串所必需的,否则如果中间出现空格,将会解析错误。

ffmpeg -i "$filename" $opts "$destDir"/"$baseName"."$destExt"

你也可以在循环之后添加一条 echo "Finished",以确认文件已成功转换。

总结起来,你的脚本应该如下所示:

它没有太多功能,但是该脚本足以处理大多数情况。

为了让该脚本可执行,需要赋予可执行权限,如下:

chmod u+x ffmpeg-batch.sh

运行调用应该是这样的:

./ffmpeg-batch.sh flac mp3 /home/username/Music/'Led Zeppelin'/'Led Zeppelin'/ /home/username/Music/'Led Zeppelin MP3'/ "-ab 320k"

写在最后

一旦你习惯使用之后,它会成为你批处理音视频文件,非常得力的一个工具。

FFMpeg 是一个优秀的程序,如果你喜欢极简主义,在命令行你就可以得到所要的结果。不必打开那些动辄上 G 的臃肿的软件。

这很 geek ,不是吗?

Happy Coding :-)

我是 @程序员小助手 ,持续分享编程知识,欢迎关注。

ffmpeg 音乐循环_自媒体良器:音频文件批处理,FFmpeg一行搞定!果断收藏相关推荐

  1. python提取txt中指定内容_提取视频中的音频,Python三行程序搞定!

    来源:http://suo.im/5yOtbx 写在开头 身处数据爆炸增长的时代,各种各样的数据都飞速增长,视频数据也不例外.我们可以使用 python 来提取视频中的音频,而这仅仅需要安装一个体量很 ...

  2. 文件格式和扩展名不匹配.文件可能已损坏_自媒体良器:音频文件批处理,FFmpeg一行搞定!果断收藏...

    引言 FFMpeg 是众多多媒体应用程序的核心,但该程序本身不具备一次转换多个文件的能力. 但也拦不住,FFMpeg 本身是命令行程序,可编写脚本,借助 Bash 轻松快速地构建自动化程序. 1 - ...

  3. ffmpeg 音乐循环_[宜配屋]听图阁

    ffmpeg -i out3.mp4 -i music3D.wav -filter_complex [1:a]aloop=loop=-1:size=2e+09[out];[out][0:a]amix  ...

  4. 数字媒体播放器音频格式

    数字媒体播放器音频格式 有数字媒体播放器和这些仍在扩大多种音频格式,可今天.您可能会看到对这些文件类型的编解码器.该编解码器是指需要进行编码和解码(编码解码简称为编码器)的算法. 在过去的数字音频播放 ...

  5. 【源码+图片素材】Java王者荣耀游戏开发_开发Java游戏项目【王者荣耀】1天搞定!!!腾讯游戏_Java课程设计_Java实战项目_Java初级项目

    王者荣耀是当下热门手游之一,小伙伴们是否想过如何制作一款属于自己的王者荣耀游戏呢? 本课程讲解了一个王者荣耀游戏的详细编写流程,即使你是刚入门Java的新手,只要你简单掌握了该游戏所需要的JavaSE ...

  6. python可以播放音乐吗_详解python播放音频的三种方法

    第一种 使用pygame模块 pygame.mixer.init() pygame.mixer.music.load(self.wav_file) pygame.mixer.music.set_vol ...

  7. python mp4提取音频加入另一段视频_使用 PHP-FFMpeg 操作视频/音频文件

    做音频合成的时候找到的一个php操作ffmpeg 的类库.GitHub地址:https://github.com/PHP-FFMpeg/PHP-FFMpeg/.本文的例子大部分都是上面的 在使用之前请 ...

  8. android使用ffmpeg生成有声图片,多张图片添加音频文件合成mp4文件

    首先 强烈推荐 我师父的ffmeg的两篇课程 对于有一点编程知识的android开发者 对视频这块会有很大的进步 FFMPEG打造万能视频播放器  基础篇 FFMPEG打造万能视频播放器 进阶篇 FF ...

  9. iphone照片永久删除怎么恢复_怎么恢复删除的照片?专业数据恢复软件轻松搞定...

    怎么恢复删除的照片?照片相信对大家来说也都并不陌生,不管是旅游还是聚会,很多人往往也都会随手一拍,并将这些照片作为留恋.所以现在的生活中,用于拍照的设备也都越来越多,同时很多人对于所拍照片的清晰度也有 ...

最新文章

  1. Fastlane实战(一):移动开发自动化之道
  2. putty network error: connection refused
  3. python学习必备知识点: 装饰器
  4. Gradle中的buildScript代码块
  5. 设计模式 工厂方法_工厂设计模式–一种有效的方法
  6. 删不干净_“我劝你别删前任微信”
  7. 300+Jquery, CSS, MooTools 和 JS的导航菜单资源
  8. sublime 安装 Package Control(笔记)
  9. 记事本可以编辑html语言吗,笔记本win7系统使用记事本编辑和运行html代码的方法...
  10. 【JVM】浅谈对OOM的认识
  11. 领英·影响力2020:职场人再定位,千里马伯乐新论
  12. sqlite3简单使用
  13. IDM无法连接到目标服务器
  14. 如何在Win10中运行Win7小游戏 扫雷,蜘蛛纸牌,红心大战,纸牌,空当接龙?
  15. win10系统打不开qq提示错误代码0x00000005怎么办
  16. Python中的shape[0]、shape[1]和shape[-1]分别是什么意思(附代码)
  17. 学计算机基础微课视频教程,计算机基础教学对微课的应用
  18. 5855. 找出数组中的第 K 大整数
  19. Android 图片与屏幕坐标点
  20. 来到 “鹅厂” 的 2019

热门文章

  1. SLIC图像超像素分割算法解析
  2. slam十四讲 _直接法
  3. 资源收集贴(持续更新...)
  4. bootrom是什么?
  5. java正则表达式 以开头结尾_正则匹配 符合以什么开头以什么结尾的
  6. 【Proteus仿真】51单片机过零检测触发控制光耦+可控硅调光电路
  7. 本体技术视点 | 数据的去中心化协作和可信流动(一)
  8. 背包问题不同要求下的初始化
  9. 【自然语言处理】Word2Vec 词向量模型详解 + Python代码实战
  10. matlab 图像 whos函数,matlab图像处理常用函数