Mit welchem Befehl soll ich eine mp3Datei konvertieren , wavderen Bitrate variabel ist ? Oder besser wie würde ich wissen, ob diese Audioquelle fixedBitrate ist oder variable?
Ich glaube nicht, dass das WAV-Dateiformat variable Bitraten unterstützt. Da alle MP3-Decoder dies unterstützen müssen, um den Standards zu entsprechen, sollten Sie in der Lage sein, alle MP3-Dateien in WAV mit fester Bitrate zu konvertieren. Die Ergebnisse hängen jedoch von der Qualität der MP3-Quelle und der für WAV gewählten festen Bitrate ab erstellt. Die meisten MP3-Wiedergabesoftware bieten eine Möglichkeit, die Eigenschaften der wiedergegebenen Datei anzuzeigen. Sie können also eine verwenden, um zu sehen, mit welcher Art von Quelldateien Sie es zu tun haben.
Martineau
Und was ist mit dem Befehl? Was empfehlen Sie?
Soham Dasgupta
Bitte lies noch einmal Martineaus Antwort. Ich habe ein paar Fehler korrigiert. Insbesondere können Sie die Bitrate für PCM-codierte WAV-Dateien nicht einstellen.
Slhck
Antworten:
35
Mit dem ffprobe song.mp3Befehl können Sie Informationen zur Bitrate Ihrer Eingabedateien abrufen . Dies sagt Ihnen jedoch nur die Bitrate des ersten Frames. VBR in MP3-Dateien wird normalerweise einfach durch Ändern der Bitrate für jeden Frame implementiert. Ob es verwendet wird, kann also nicht durch einfaches Lesen des Headers des ersten Frames bestimmt werden. Normalerweise verwende ich eine andere Audiodatei-Player-Software, um festzustellen, ob VBR verwendet wird, da dies bei vielen angezeigt wird (z. B. Foobar2000).
Wenn Sie verlustbehaftete Ausgabe-Codecs (wie MPEG-1 Layer III oder AAC) verwenden, wählt ffmpeg eine Standard-Bitrate für den Ausgabestream oder eine variable Bitrate. Das hängt vom Encoder selbst ab.
Für verlustfreie Codecs können Sie keine variable Bitrate festlegen, da für jedes Sample eine vordefinierte Anzahl von Bits erforderlich ist. ffmpeg -i song.mp3 song.wavSie erhalten daher eine PCM-codierte WAV-Datei mit einer Abtastrate von 44.100 Hz und 16 Bit pro Abtastung. Dies ergibt ungefähr 1411 kBit / s für den gesamten Container, wahrscheinlich viel, viel größer als die MP3-Eingabedatei.
Wenn Sie eine kleinere Dateigröße für die PCM-codierte WAV-Datei wünschen, stellen Sie ein Beispielformat mit geringerer Bittiefe ein (siehe -encodersOption für eine vollständige Liste) und / oder wählen Sie eine niedrigere Abtastrate ( -ar 22050verwenden Sie beispielsweise 22,05 kHz).
Wenn Sie PCM-Audio in einem WAV-Container codieren, können Sie die Bitrate nicht festlegen. Das macht keinen Sinn. PCM ist ein unkomprimiertes Format - Sie können nicht festlegen, dass mehr oder weniger Bits pro Sekunde verwendet werden sollen. Die einzige Möglichkeit, die Größe anzupassen, besteht darin, eine andere Stichprobengröße zu verwenden (siehe -sample_fmtsOption). -ar 128kbedeutet, dass die Abtastrate 128.000 Hz anstelle der üblichen 44,1 oder 48 kHz beträgt.
Slhck
12
Sie sind wahrscheinlich besser dran ffmpeg -i song.mp3 song.wav, da dies die geeignete Bitrate (wahrscheinlich 44,1 kHz) auswählt. Wenn Sie zu wav konvertieren, möchten Sie wahrscheinlich keine weiteren Informationen verlieren.
naught101
@ naught101 war richtig, eigentlich ist es besser ffpmeg, die richtige Sampling-Bitrate anhand der song.mp3Eingabedaten auswählen zu lassen . Auf diese Weise hat die Ausgabebitmapdatei wavdie beste Bitrate. Dies bedeutet übrigens, dass die Dateigröße großartig sein wird, aber bei Überanpassung der Daten: `Stream # 0: 0: Audio: mp3, 44100 Hz, Stereo, s16p, 128 kb / s`
loretoparisi
1
Es ist ziemlich sicher anzunehmen, dass der Fragesteller die resultierenden WAV-Dateien auf eine Audio-CD brennen möchte. Die einzig geeignete Frequenz dafür ist 44100 Hz. Dies -ar 44100ist ein Muss, auch wenn ffmpeg automatisch einen geeigneten 16-Bit-Codec verwendet.
Mikhail T.
3
Laut @ naught101 Kommentar würde ich diesen Prozess befolgen, um das Beste zu finden 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
An diesem Punkt sollten Sie Ihre Plattform zwischen wählen big-endian, little-endiandie wählen Bitrate:
$ 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
Wir können sehen, dass diese Audiodatei mp3eine Bitrate von (dies ist trotz der Erweiterung der Eingabedatei nicht offensichtlich, prüfe nur die Bytes) hat 128 kb/s, der Codec war s16p, Sampling bei 44100 Hz, also wählen wir dementsprechend:
$ 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%
Wenn Sie auf einem Mac sind, können Sie das Audio überprüfen, wenn es white noiseam Anfang / Ende kein Audio hat (wenn das MP3-Original-Audio für einige ms / s kein Audio hat):
$ afplay sample.wav
und natürlich können Sie die Bitmap überprüfen:
$ 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
Verwenden Sie ffmpeg, um das Medium zu konvertieren. Überprüfen Sie zuerst die Dateispezifikation mit ffprobe. benutze diesen Befehl
ffmpeg -i kimberly.wav -acodec pcm_s16le -ar 16000 -ac 1 song.wav
woher
-pcm_s16le is codec 16 bit conversion
-ar is sampling rate (16000samples/sec)
-ac no of audio channel
Antworten:
Mit dem
ffprobe song.mp3
Befehl können Sie Informationen zur Bitrate Ihrer Eingabedateien abrufen . Dies sagt Ihnen jedoch nur die Bitrate des ersten Frames. VBR in MP3-Dateien wird normalerweise einfach durch Ändern der Bitrate für jeden Frame implementiert. Ob es verwendet wird, kann also nicht durch einfaches Lesen des Headers des ersten Frames bestimmt werden. Normalerweise verwende ich eine andere Audiodatei-Player-Software, um festzustellen, ob VBR verwendet wird, da dies bei vielen angezeigt wird (z. B. Foobar2000).Wenn Sie verlustbehaftete Ausgabe-Codecs (wie MPEG-1 Layer III oder AAC) verwenden, wählt ffmpeg eine Standard-Bitrate für den Ausgabestream oder eine variable Bitrate. Das hängt vom Encoder selbst ab.
Für verlustfreie Codecs können Sie keine variable Bitrate festlegen, da für jedes Sample eine vordefinierte Anzahl von Bits erforderlich ist.
ffmpeg -i song.mp3 song.wav
Sie erhalten daher eine PCM-codierte WAV-Datei mit einer Abtastrate von 44.100 Hz und 16 Bit pro Abtastung. Dies ergibt ungefähr 1411 kBit / s für den gesamten Container, wahrscheinlich viel, viel größer als die MP3-Eingabedatei.Wenn Sie eine kleinere Dateigröße für die PCM-codierte WAV-Datei wünschen, stellen Sie ein Beispielformat mit geringerer Bittiefe ein (siehe
-encoders
Option für eine vollständige Liste) und / oder wählen Sie eine niedrigere Abtastrate (-ar 22050
verwenden Sie beispielsweise 22,05 kHz).Hier ist ein Beispiel für beides:
quelle
-sample_fmts
Option).-ar 128k
bedeutet, dass die Abtastrate 128.000 Hz anstelle der üblichen 44,1 oder 48 kHz beträgt.ffmpeg -i song.mp3 song.wav
, da dies die geeignete Bitrate (wahrscheinlich 44,1 kHz) auswählt. Wenn Sie zu wav konvertieren, möchten Sie wahrscheinlich keine weiteren Informationen verlieren.ffpmeg
, die richtige Sampling-Bitrate anhand dersong.mp3
Eingabedaten auswählen zu lassen . Auf diese Weise hat die Ausgabebitmapdateiwav
die beste Bitrate. Dies bedeutet übrigens, dass die Dateigröße großartig sein wird, aber bei Überanpassung der Daten: `Stream # 0: 0: Audio: mp3, 44100 Hz, Stereo, s16p, 128 kb / s`-ar 44100
ist ein Muss, auch wenn ffmpeg automatisch einen geeigneten 16-Bit-Codec verwendet.Laut @ naught101 Kommentar würde ich diesen Prozess befolgen, um das Beste zu finden
acodec
:An diesem Punkt sollten Sie Ihre Plattform zwischen wählen
big-endian
,little-endian
die wählen Bitrate:Wir können sehen, dass diese Audiodatei
mp3
eine Bitrate von (dies ist trotz der Erweiterung der Eingabedatei nicht offensichtlich, prüfe nur die Bytes) hat128 kb/s
, der Codec wars16p
, Sampling bei44100 Hz
, also wählen wir dementsprechend:Wenn Sie auf einem Mac sind, können Sie das Audio überprüfen, wenn es
white noise
am Anfang / Ende kein Audio hat (wenn das MP3-Original-Audio für einige ms / s kein Audio hat):und natürlich können Sie die Bitmap überprüfen:
quelle
Verwenden Sie ffmpeg, um das Medium zu konvertieren. Überprüfen Sie zuerst die Dateispezifikation mit ffprobe. benutze diesen Befehl
ffmpeg -i kimberly.wav -acodec pcm_s16le -ar 16000 -ac 1 song.wav
woher
-pcm_s16le is codec 16 bit conversion -ar is sampling rate (16000samples/sec) -ac no of audio channel
quelle