Какую команду я должен использовать, чтобы преобразовать mp3файл wav, битрейт которого является переменным. Или лучше, как я узнаю, является ли этот источник аудио fixedбитрейтом или variable?
Я не думаю, что формат файла WAV поддерживает переменную скорость передачи данных. Поскольку все MP3-декодеры должны поддерживать его, чтобы он соответствовал стандартам, вы должны иметь возможность конвертировать любой файл MP3 в формат WAV с фиксированным битрейтом, хотя ваши результаты будут различаться в зависимости от качества исходного MP3 и фиксированного битрейта, выбранного для WAV. создано. Большинство программ для воспроизведения MP3 предоставляют способ просмотра свойств воспроизводимого файла, поэтому вы можете использовать его, чтобы узнать, с какими исходными файлами вы имеете дело.
Мартино
А как насчет команды? Что вы порекомендуете?
Сохам Дасгупта
Пожалуйста, прочитайте ответ Мартино снова. Я исправил несколько ошибок. В частности, вы не можете установить битрейт для файлов WAV в кодировке PCM.
Slhck
Ответы:
36
Вы можете получить некоторую информацию о битрейте ваших входных файлов с помощью ffprobe song.mp3команды. Однако это говорит только о битрейте первого кадра. VBR в файлах MP3 обычно реализуется простым изменением битрейта для каждого кадра, поэтому невозможно определить, используется ли он, просто прочитав заголовок первого кадра. Я обычно использую какое-то другое программное обеспечение проигрывателя аудиофайлов, чтобы определить, используется ли VBR, как это будет показывать многие (например, Foobar2000).
Когда вы используете выходные кодеки с потерями (такие как MPEG-1 Layer III или AAC), ffmpeg выбирает битрейт по умолчанию для выходного потока или переменный битрейт. Это зависит от самого кодера.
Для кодеков без потерь вы не можете установить переменную скорость передачи битов, поскольку каждая выборка занимает предварительно определенное количество битов. ffmpeg -i song.mp3 song.wavпоэтому вы получите WAV-файл в кодировке PCM с частотой дискретизации 44 100 Гц и 16 бит на выборку. Это приводит к примерно 1411 кбит / с для всего контейнера, вероятно, намного больше, чем входной файл MP3.
Если вы хотите меньший размер файла для файла WAV в кодировке PCM, установите формат семпла с меньшей битовой глубиной (см. -encodersОпцию для получения полного списка) и / или выберите более низкую частоту дискретизации (например, -ar 22050будет использоваться 22,05 кГц).
Если вы кодируете звук PCM в контейнере WAV, вы не можете установить битрейт. Это не имеет смысла. PCM - это несжатый формат - вы не можете сказать, чтобы он использовал больше или меньше бит в секунду. Единственный способ отрегулировать размер - использовать другой размер выборки (см. -sample_fmtsОпцию). -ar 128kозначает, что частота дискретизации будет 128000 Гц вместо обычных 44,1 или 48 кГц.
Slhck
12
Вы, вероятно, лучше делать ffmpeg -i song.mp3 song.wav, так как это выберет соответствующий битрейт (который, вероятно, 44,1 кГц). Если вы конвертируете в wav, вы, вероятно, не хотите потерять дополнительную информацию ..
naught101
@ naught101 был прав, но лучше ffpmegвыбрать правильный битрейт выборки в соответствии с song.mp3входными данными. Таким образом, выходной wavфайл растрового изображения будет иметь лучший битрейт. Это означает, что, между прочим, размер файла будет большим, но с переобучением данных: `Поток # 0: 0: Аудио: mp3, 44100 Гц, стерео, s16p, 128 кбит / с`
loretoparisi
1
Можно с уверенностью предположить, что цель этого автора - записать получившиеся WAV-файлы на аудио-CD. Единственная подходящая частота для этого - 44100 Гц, поэтому -ar 44100это необходимо, даже если ffmpeg автоматически использует подходящий 16-битный кодек.
Михаил Т.
3
Согласно комментарию @ 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
В этот момент, рассмотрим вашу платформу выбрать между 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
Мы можем видеть, что этот аудиофайл является 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%
Если у вас Mac, вы можете проверить звук, если его нет white noiseв начале / конце (когда в оригинальном аудио mp3 нет звука в течение нескольких мс / сек):
$ afplay sample.wav
и, конечно, вы можете дважды проверить растровое изображение:
$ 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
Используйте 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
Ответы:
Вы можете получить некоторую информацию о битрейте ваших входных файлов с помощью
ffprobe song.mp3
команды. Однако это говорит только о битрейте первого кадра. VBR в файлах MP3 обычно реализуется простым изменением битрейта для каждого кадра, поэтому невозможно определить, используется ли он, просто прочитав заголовок первого кадра. Я обычно использую какое-то другое программное обеспечение проигрывателя аудиофайлов, чтобы определить, используется ли VBR, как это будет показывать многие (например, Foobar2000).Когда вы используете выходные кодеки с потерями (такие как MPEG-1 Layer III или AAC), ffmpeg выбирает битрейт по умолчанию для выходного потока или переменный битрейт. Это зависит от самого кодера.
Для кодеков без потерь вы не можете установить переменную скорость передачи битов, поскольку каждая выборка занимает предварительно определенное количество битов.
ffmpeg -i song.mp3 song.wav
поэтому вы получите WAV-файл в кодировке PCM с частотой дискретизации 44 100 Гц и 16 бит на выборку. Это приводит к примерно 1411 кбит / с для всего контейнера, вероятно, намного больше, чем входной файл MP3.Если вы хотите меньший размер файла для файла WAV в кодировке PCM, установите формат семпла с меньшей битовой глубиной (см.
-encoders
Опцию для получения полного списка) и / или выберите более низкую частоту дискретизации (например,-ar 22050
будет использоваться 22,05 кГц).Вот пример выполнения обоих:
источник
-sample_fmts
Опцию).-ar 128k
означает, что частота дискретизации будет 128000 Гц вместо обычных 44,1 или 48 кГц.ffmpeg -i song.mp3 song.wav
, так как это выберет соответствующий битрейт (который, вероятно, 44,1 кГц). Если вы конвертируете в wav, вы, вероятно, не хотите потерять дополнительную информацию ..ffpmeg
выбрать правильный битрейт выборки в соответствии сsong.mp3
входными данными. Таким образом, выходнойwav
файл растрового изображения будет иметь лучший битрейт. Это означает, что, между прочим, размер файла будет большим, но с переобучением данных: `Поток # 0: 0: Аудио: mp3, 44100 Гц, стерео, s16p, 128 кбит / с`-ar 44100
это необходимо, даже если ffmpeg автоматически использует подходящий 16-битный кодек.Согласно комментарию @ naught101, я бы следовал этому процессу, чтобы обнаружить лучшее
acodec
:В этот момент, рассмотрим вашу платформу выбрать между
big-endian
,little-endian
, то выбрать битрейт:Мы можем видеть, что этот аудиофайл является
mp3
(это не очевидно, несмотря на расширение входного файла, просто проверьте байты), имеет битрейт128 kb/s
, кодек былs16p
, сэмплирование44100 Hz
, поэтому мы выбираем соответственно:Если у вас Mac, вы можете проверить звук, если его нет
white noise
в начале / конце (когда в оригинальном аудио mp3 нет звука в течение нескольких мс / сек):и, конечно, вы можете дважды проверить растровое изображение:
источник
Используйте 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
источник