Soh*_*pta 40 audio mp3 ffmpeg aac audio-conversion
我应该使用什么命令将mp3文件转换为wav比特率可变的文件。或者更好的是我如何知道源音频是fixed比特率还是比特率variable?
mar*_*eau 53
您可以使用该ffprobe song.mp3命令获取有关输入文件比特率的一些信息。然而,这只告诉你第一帧的比特率。MP3文件中的VBR通常只是通过改变每一帧的比特率来实现的,所以仅通过读取第一帧的头部并不能确定是否使用它。我通常使用其他一些音频文件播放器软件来确定是否正在使用 VBR,因为许多软件会显示(例如 Foobar2000)。
当您使用有损输出编解码器(例如 MPEG-1 第三层或 AAC)时,ffmpeg 会为输出流选择默认比特率或可变比特率。这取决于编码器本身。
对于无损编解码器,您不能设置可变比特率,因为每个样本采用预定义的比特数。ffmpeg -i song.mp3 song.wav因此,将为您提供一个PCM 编码的WAV 文件,其采样率为 44,100 Hz,每个样本为 16 位。这导致整个容器大约为 1411 kBit/s,可能比 MP3 输入文件大得多。
如果您想要较小的 PCM 编码 WAV 文件的文件大小,请设置位深度较小的样本格式(请参阅-encoders选项以获取完整列表)和/或选择较低的采样率(-ar 22050例如将使用 22.05 kHz)。
这是一个同时进行的示例:
ffmpeg -i song.mp3 -acodec pcm_u8 -ar 22050 song.wav
Run Code Online (Sandbox Code Playgroud)
小智 10
根据@naught101 评论,我会按照这个过程来检测最好的acodec:
$ ffmpeg -formats | grep PCM
DE f32be PCM 32-bit floating-point big-endian
DE f32le PCM 32-bit floating-point little-endian
DE f64be PCM 64-bit floating-point big-endian
DE f64le PCM 64-bit floating-point little-endian
DE s16be PCM signed 16-bit big-endian
DE s16le PCM signed 16-bit little-endian
DE s24be PCM signed 24-bit big-endian
DE s24le PCM signed 24-bit little-endian
DE s32be PCM signed 32-bit big-endian
DE s32le PCM signed 32-bit little-endian
DE u16be PCM unsigned 16-bit big-endian
DE u16le PCM unsigned 16-bit little-endian
DE u24be PCM unsigned 24-bit big-endian
DE u24le PCM unsigned 24-bit little-endian
DE u32be PCM unsigned 32-bit big-endian
DE u32le PCM unsigned 32-bit little-endian
Run Code Online (Sandbox Code Playgroud)
此时,请考虑您的平台在big-endian、little-endian、 选择比特率之间进行选择:
$ ffmpeg -i sample.mp3
[mp3 @ 0x7fb33180da00] Estimating duration from bitrate, this may be inaccurate
Input #0, mp3, from 'sample.mp3':
Metadata:
title : Saturday
artist : Winterwood
album : Love In The Heart
track : 2/15
TPA : 1/1
encoded_by : iTunes 11.0.1
genre : Country & Folk
date : 1997
Duration: 00:04:27.76, start: 0.000000, bitrate: 128 kb/s
Stream #0:0: Audio: mp3, 44100 Hz, stereo, s16p, 128 kb/s
Run Code Online (Sandbox Code Playgroud)
我们可以看到这个音频文件是一个mp3(这并不明显,尽管输入文件有扩展名,只是检查字节)的比特率为128 kb/s,编解码器为s16p,采样为44100 Hz,因此我们相应地选择:
$ ffmpeg -i sample.mp3 -acodec pcm_s16le -ar 44100 sample.wav
Input #0, mp3, from 'sample.mp3':
Metadata:
title : Saturday
artist : Winterwood
album : Love In The Heart
track : 2/15
TPA : 1/1
encoded_by : iTunes 11.0.1
genre : Country & Folk
date : 1997
Duration: 00:04:27.76, start: 0.000000, bitrate: 128 kb/s
Stream #0:0: Audio: mp3, 44100 Hz, stereo, s16p, 128 kb/s
File 'sample.wav' already exists. Overwrite ? [y/N] y
Output #0, wav, to 'sample.wav':
Metadata:
INAM : Saturday
IART : Winterwood
IPRD : Love In The Heart
IPRT : 2/15
TPA : 1/1
ITCH : iTunes 11.0.1
IGNR : Country & Folk
ICRD : 1997
ISFT : Lavf56.4.101
Stream #0:0: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 44100 Hz, stereo, s16, 1411 kb/s
Metadata:
encoder : Lavc56.1.100 pcm_s16le
Stream mapping:
Stream #0:0 -> #0:0 (mp3 (native) -> pcm_s16le (native))
Press [q] to stop, [?] for help
size= 46125kB time=00:04:27.75 bitrate=1411.2kbits/s
video:0kB audio:46125kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.000457%
Run Code Online (Sandbox Code Playgroud)
如果您在 mac 上,您可以检查音频是否white noise在开头/结尾没有音频(当 mp3 原始音频在某些毫秒/秒内没有音频时):
$ afplay sample.wav
Run Code Online (Sandbox Code Playgroud)
当然,您可以仔细检查位图:
$ ffmpeg -i sample.wav
Input #0, wav, from 'sample.wav':
Metadata:
artist : Winterwood
date : 1997
genre : Country & Folk
title : Saturday
album : Love In The Heart
track : 2/15
encoder : Lavf56.4.101
encoded_by : iTunes 11.0.1
Duration: 00:04:27.76, bitrate: 1411 kb/s
Stream #0:0: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 44100 Hz, 2 channels, s16, 1411 kb/s
Run Code Online (Sandbox Code Playgroud)
使用ffmpeg转换媒体,首先使用ffprobe检查文件规范。使用这个命令
ffmpeg -i kimberly.wav -acodec pcm_s16le -ar 16000 -ac 1 song.wav
在哪里
-pcm_s16le is codec 16 bit conversion
-ar is sampling rate (16000samples/sec)
-ac no of audio channel
| 归档时间: |
|
| 查看次数: |
103458 次 |
| 最近记录: |