繁体   English   中英

使用 ffmpeg 将音频文件转换为 mp3

[英]Convert audio files to mp3 using ffmpeg

我需要使用 ffmpeg 将音频文件转换为 mp3。

当我将命令编写为ffmpeg -i audio.ogg -acodec mp3 newfile.mp3 ,出现错误:

FFmpeg version 0.5.2, Copyright (c) 2000-2009 Fabrice Bellard, et al.
  configuration: 
  libavutil     49.15. 0 / 49.15. 0
  libavcodec    52.20. 1 / 52.20. 1
  libavformat   52.31. 0 / 52.31. 0
  libavdevice   52. 1. 0 / 52. 1. 0
  built on Jun 24 2010 14:56:20, gcc: 4.4.1
Input #0, mp3, from 'ZHRE.mp3':
  Duration: 00:04:12.52, start: 0.000000, bitrate: 208 kb/s
    Stream #0.0: Audio: mp3, 44100 Hz, stereo, s16, 256 kb/s
Output #0, mp3, to 'audio.mp3':
    Stream #0.0: Audio: 0x0000, 44100 Hz, stereo, s16, 64 kb/s
Stream mapping:
  Stream #0.0 -> #0.0
Unsupported codec for output stream #0.0

我也运行了这个命令:

 ffmpeg -formats | grep mp3

并得到了这个回应:

FFmpeg version 0.5.2, Copyright (c) 2000-2009 Fabrice Bellard, et al.
  configuration: 
  libavutil     49.15. 0 / 49.15. 0
  libavcodec    52.20. 1 / 52.20. 1
  libavformat   52.31. 0 / 52.31. 0
  libavdevice   52. 1. 0 / 52. 1. 0
  built on Jun 24 2010 14:56:20, gcc: 4.4.1
 DE mp3             MPEG audio layer 3
 D A    mp3             MP3 (MPEG audio layer 3)
 D A    mp3adu          ADU (Application Data Unit) MP3 (MPEG audio layer 3)
 D A    mp3on4          MP3onMP4
 text2movsub remove_extra noise mov2textsub mp3decomp mp3comp mjpegadump imxdump h264_mp4toannexb dump_extra

我猜没有安装 mp3 编解码器。 我在正确的轨道上吗?

你可以使用这个命令:

ffmpeg -i input.wav -vn -ar 44100 -ac 2 -b:a 192k output.mp3

本例中使用的参数说明:

  • -i - 输入文件

  • -vn - 如果源是视频文件,则禁用视频,以确保不包含视频(包括专辑封面图像)

  • -ar - 设置音频采样频率。 对于输出流,它默认设置为相应输入流的频率。 对于输入流,此选项仅对音频抓取设备和原始解复用器有意义,并映射到相应的解复用器选项。

  • -ac - 设置音频通道数。 对于输出流,它默认设置为输入音频通道的数量。 对于输入流,此选项仅对音频抓取设备和原始解复用器有意义,并映射到相应的解复用器选项。 所以在这里使用以确保它是立体声(2通道)

  • -b:a - 将音频比特率转换为精确的每秒 192kbit

1) wav 转 mp3

ffmpeg -i audio.wav -acodec libmp3lame audio.mp3

2) ogg 转 mp3

ffmpeg -i audio.ogg -acodec libmp3lame audio.mp3

3) ac3 到 mp3

ffmpeg -i audio.ac3 -acodec libmp3lame audio.mp3

4)aac转mp3

ffmpeg -i audio.aac -acodec libmp3lame audio.mp3

对于针对 190 VBR 和文件扩展名 = .mp3 而不是 .ac3.mp3 的文件夹中文件的批处理,您可以使用以下代码

将 .ac3 更改为任何源音频格式。

ffmpeg mp3 设置

for f in *.ac3 ; do ffmpeg -i "$f" -acodec libmp3lame -q:a 2 "${f%.*}.mp3"; done

没关系,

我正在使用以下命令将我的音频文件转换为 mp2:

ffmpeg -i input.wav -f mp2 output.mp3

此命令完美运行。

我知道这实际上将文件转换为 mp2 格式,但是生成的文件大小是相同的..

对于文件夹中的批处理文件:

for i in *.wav; do ffmpeg -i "$i" -f mp3 "${i%}.mp3"; done

此脚本将文件夹中的所有“wav”文件转换为 mp3 文件并添加 mp3 扩展名

必须安装ffmpeg (见其他答案)

如上所述这里输入和输出扩展将被检测ffmpeg所以没有必要对格式的烦恼,只需运行下面的命令:

ffmpeg -i inputFile.ogg outputFile.mp3

我不得不清除我的 ffmpeg,然后从 ppa 安装另一个:

sudo apt-get purge ffmpeg
sudo apt-add-repository -y ppa:jon-severinsson/ffmpeg 
sudo apt-get update 
sudo apt-get install ffmpeg

然后转换:

 ffmpeg -i audio.ogg -f mp3 newfile.mp3

https://trac.ffmpeg.org/wiki/Encode/MP3

VBR编码:

ffmpeg -vn -ar 44100 -ac 2 -q:a 1 -codec:a libmp3lame output.mp3

Mac OS 的高品质完美运行!

ffmpeg -i input.wma -q:a 0 output.mp3

尝试 FFmpeg 静态构建链接

文档: https : //www.johnvansickle.com/ffmpeg/

在您的服务器上的同一目录中托管静态构建

$ffmpeg = dirname(__FILE__).'/ffmpeg';

$command = $ffmpeg.'ffmpeg -i audio.ogg -acodec libmp3lame audio.mp3';

shell_exec($command);

如果您有一个文件夹和子文件夹充满了要转换的 wav,请将以下命令放入文件中,将其保存在要转换的文件夹根目录中的 .bat 文件中,然后运行 ​​bat 文件

for /R %%g in (*.wav) do start /b /wait "" "C:\ffmpeg-4.0.1-win64-static\bin\ffmpeg" -threads 16 -i "%%g" -acodec libmp3lame "%%~dpng.mp3" && del "%%g"

我将解释如何为 mac 将 webm 转换为 mp3,我想对于 linux 它也适用。

  1. 安装 ffmpeg - brew install ffmpeg (mac) 或sudo apt install ffmpeg (linux)
  2. 创建 shell 脚本 - 打开文本编辑器,将以下代码放入:
#!/bin/bash

echo webm to mp3 converter! Work begins! 
for FILE in *.webm; do     
    echo -e "Processing file '$FILE'";
    ffmpeg -i "${FILE}" -vn -ab 128k -ar 44100 -y "${FILE%.webm}.mp3";
done;

此代码将查看当前目录中所有扩展名为 .webm 的文件。

  1. 不带扩展名保存此文件(例如“my-converter”)
  2. 通过终端导航到创建的文件
  3. 通过键入命令使文件可执行: chmod 700 my-converter ,现在将在同一目录中创建 unix 可执行文件 (.sh)。
  4. 通过键入以下命令从终端执行文件: ./my-converter并开始该过程,您将在终端窗口中看到进度。

完毕。

似乎没有人使用find ,它可以让您在一行中完成所有操作。 基于这个答案这篇文章

find . -type f -iname "*.webm" -exec bash -c 'FILE="$1"; ffmpeg -i "${FILE}" -vn -ab 128k "${FILE%.webm}.mp3";' _ '{}' \;

对于例如播客,128k 对我来说已经足够了。 除了其他一些参数之外,您还可以调整该参数:

  • -i - 输入文件
  • -vn - 如果源是视频文件,则禁用视频,以确保不包含视频(包括专辑封面图像)
  • -ar -设置一个UDIO采样由于F R equency。 对于输出流,它默认设置为相应输入流的频率。 对于输入流,此选项仅对音频抓取设备和原始解复用器有意义,并映射到相应的解复用器选项。
  • -ac -设置UDIOçhannels数量。 对于输出流,它默认设置为输入音频通道的数量。 对于输入流,此选项仅对音频抓取设备和原始解复用器有意义,并映射到相应的解复用器选项。 所以在这里使用以确保它是立体声(2通道)
  • -b:a - 将音频比特率转换为精确的每秒 192kbit

使用以前的答案,这是通过将以下内容添加到 .bashrc/.zshrc 中的别名:

alias convert-aac="cd ~/Downloads && aac-to-mp3"

# Convert all .aac files into .mp3 files in the current folder, don't convert if a mp3 file already exists
aac-to-mp3(){
    find . -type f -iname "*.aac" -exec \
        bash -c 'file="$1"; ffmpeg -n -i "$file" -acodec libmp3lame "${file%.aac}.mp3";' _ '{}' \;
}

用法convert-aac (在shell中)

感谢https://stackoverflow.com/a/70339561/2391795https://stackoverflow.com/a/12952172/2391795https://unix.stackexchange.com/a/683488/60329

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM