Konwertuj .flac na .mp3 za pomocą ffmpeg, zachowując wszystkie metadane
88
Jak mogę przekonwertować .flac na .mp3 za pomocą ffmpeg, zachowując wszystkie metadane (czyli konwersję komentarza Vorbis w plikach .flac na metadane ID3v2 z .mp3)?
Pamiętaj, że następnym razem powinieneś zadać ffmpegpytania dotyczące użycia CLI w Super User . Stack Overflow służy tylko do pytań dotyczących programowania. Ponadto FLAC oficjalnie obsługuje tylko komentarze Vorbis , więc zakładam, że chcesz przekonwertować na ID3v2 zamiast „zachować”.
Llogan
Ok, naprawiłem moje pytanie. Zadałem tutaj, ponieważ widziałem takie pytania na StackOverflow (np. To lub to ) i założyłem, że podzielenie się moją wiedzą może być interesujące. Widzę również, że istnieje tag ffmpeg , więc dlaczego nie udostępnić tutaj mojego rozwiązania? ffmpeg jest używany w wielu aplikacjach przez wielu programistów.
Vito Gentile
3
Znacznik ffmpeg mówi: „Pytania dotyczące interaktywnego korzystania z narzędzia wiersza poleceń FFmpeg należy zadawać w programie Super User.”. To nic wielkiego, ale chciałem tylko zwrócić na to uwagę, ponieważ moim zdaniem jest tu zbyt wiele pytań niezwiązanych z tematem.
llogan
Odpowiedzi:
152
Następujące polecenie zachowuje wysoką jakość na .mp3 (320 kbps), a metadane z pliku .flac są konwertowane do formatu ID3v2, który można dołączyć do plików .mp3:
Warto zauważyć, że "ffmpeg" może wymagać zastąpienia przez "avconv".
shockburner
5
FWIW ffmpeg3.2 automatycznie kopiuje metadane do ID3v2 z FLAC bez konieczności określania -map_metadata 0 -id3v2_version 3, chociaż nie kopiuje do tagów ID3v1. Używam do tego osobnego narzędzia.
Dai
1
teksty nadal nie są kopiowane
user151496
1
Czy dzieli flac, jeśli jest kilka części?
Artem
1
@Artyom Prawdopodobnie powinieneś mieć plik cue wraz z flacem, w którym zaznaczone są punkty podziału. Jeśli tak, możesz użyć shnsplit (konsola) lub flakonu (GUI), aby podzielić plik i przekonwertować części na mp3. Jeśli masz tylko jeden flac , możesz albo napisać dla niego cui , albo użyć opcji -ss i -t ffmpeg, aby wyciąć każdy utwór.
56
Doskonała odpowiedź powyżej. Używam go razem z find, aby dodać wszystkie pliki FLAC w poddrzewie do iTunes za pomocą tego polecenia
Anegdota: wszyscy użytkownicy w naszej firmie mają nazwy gwiazdek, skrócone do 3-5 znaków. Mój to „sirius”, krótki panie;)
user2707001
Nierozpoznana opcja „nazwa”.
MonsterMMORPG
14
Jeśli chcesz zaoszczędzić trochę miejsca, wypróbuj zalecenia hydrogenaud.io :
Bardzo wysoka jakość: HiFi, domu, lub ciche słuchanie, z najlepszego rozmiaru pliku
-V0 (~245 kbps), -V1 (~225 kbps), -V2 (~190 kbps)lub -V3 (~175 kbps)są zalecane. Te ustawienia VBR zwykle dają przejrzyste wyniki. Mogą występować słyszalne różnice między tymi ustawieniami, ale są one rzadkie.
Jeśli chcesz użyć tej opcji w ffmpeg, powinieneś użyć -q:a 0aliasu.
Kontroluj jakość za pomocą -qscale:a(lub aliasu -q:a). Wartości są specyficzne dla kodera, więc dla libmp3lame zakres wynosi 0-9, gdzie niższa wartość oznacza wyższą jakość. 0-3 zwykle daje przejrzyste wyniki, 4 (domyślnie) powinno być bliskie percepcyjnej przezroczystości, a 6 daje „akceptowalną” jakość. Opcja -qscale:ajest odwzorowana na -Vopcję w samodzielnym narzędziu lame interfejsu wiersza poleceń.
Utworzy folder o nazwie „mp3” w folderze z plikami flac, a wewnątrz folderu mp3 zapisze względne pliki mp3 z szybkością transmisji 320 kb / s, bez zachowywania w nazwie starego rozszerzenia pliku.
:rwydaje się być zshmodyfikatorem, który nie działa bash. W Bash można zastąpić "${file:r}.mp3"z "${file%.flac}.mp3".
mivk
aby pokazać tylko nazwę pliku z pliku, w użyciu bash${file%.*}
Evhz
2
Wiem, że o to nie pytano, ale biorąc pod uwagę, że jednym z powodów, dla których tak się stało (przynajmniej tego chciałem), jest to, że muzykę można importować do Apple iTunes, który nie obsługuje formatu FLAC. W takim przypadku bardziej sensowne jest przekonwertowanie FLAC na własny bezstratny format Apple, m4a. Użyłem tego polecenia, aby przekonwertować wszystkie pliki w bieżącym folderze, zachowując podobne rozmiary plików.
Nierozpoznana opcja „nazwa”. Błąd podczas dzielenia listy argumentów: Nie znaleziono opcji
MonsterMMORPG
@MonsterMMORPG prawdopodobnie przegapiłeś wpisanie. po poleceniu znajdź. Plik. mówi find, aby szukał w bieżącym folderze, a -name mówi mu, aby szukał pasujących nazw plików.
Dhiraj Gupta
2
Ten skrypt flac2mp3.sh używa ffmpegdo konwersji drzewa folderów plików FLAC na inne drzewo folderów plików MP3. Okładka jest dołączona, jeśli jest obecna. Możesz ustawić CORESzmienną, aby tworzyć zadania w tle i konwertować kilka plików jednocześnie.
ffmpeg
pytania dotyczące użycia CLI w Super User . Stack Overflow służy tylko do pytań dotyczących programowania. Ponadto FLAC oficjalnie obsługuje tylko komentarze Vorbis , więc zakładam, że chcesz przekonwertować na ID3v2 zamiast „zachować”.Odpowiedzi:
Następujące polecenie zachowuje wysoką jakość na .mp3 (320 kbps), a metadane z pliku .flac są konwertowane do formatu ID3v2, który można dołączyć do plików .mp3:
źródło
ffmpeg
3.2 automatycznie kopiuje metadane do ID3v2 z FLAC bez konieczności określania-map_metadata 0 -id3v2_version 3
, chociaż nie kopiuje do tagów ID3v1. Używam do tego osobnego narzędzia.Doskonała odpowiedź powyżej. Używam go razem z find, aby dodać wszystkie pliki FLAC w poddrzewie do iTunes za pomocą tego polecenia
Aby automatycznie dodać wynikowe pliki do iTunes, pobierz katalog importu iTunes z
wynik np
Następnie uruchom np
Aby automatycznie dodać wszystkie przekonwertowane utwory do iTunes.
źródło
Jeśli chcesz zaoszczędzić trochę miejsca, wypróbuj zalecenia hydrogenaud.io :
Źródło: http://wiki.hydrogenaud.io/index.php?title=LAME
Jeśli chcesz użyć tej opcji w ffmpeg, powinieneś użyć
-q:a 0
aliasu.Źródło: https://trac.ffmpeg.org/wiki/Encode/MP3
Jeśli chcesz również metatagi ID3v1, powinieneś dodać
-write_id3v1 1
parametr.Więc moje ostatnie polecenie to:
źródło
Testowałem następujące polecenie, aby przekonwertować
infile.flac
plik naoutfile.mp3
:Począwszy od Ubuntu 16.04, powyższe polecenie wydaje się kopiować (głównie? Wszystkie?) Metadane.
-q:a 0
mówi,ffmpeg
aby używać najwyższej jakości VBR.Jednak
ffmpeg
transkodowałem okładkę albumu zjpeg
napng
, co zwiększyło rozmiar okładki.(Myślę, że powyższy rodzaj konwersji ma sens, biorąc pod uwagę, jak
ffmpeg
działa ).Po pewnym kopaniu znalazłem
-c:v copy
opcję, która określa, że strumień wideo powinien być kopiowany, a nie transkodowany. Pełne polecenie to:Powyższe polecenie powoduje:
źródło
Aby rekurencyjnie przekonwertować w mp3 wszystkie pliki flac w zagnieżdżonych folderach, użyłem tego polecenia:
Utworzy folder o nazwie „mp3” w folderze z plikami flac, a wewnątrz folderu mp3 zapisze względne pliki mp3 z szybkością transmisji 320 kb / s, bez zachowywania w nazwie starego rozszerzenia pliku.
źródło
Jedna linijka do konwersji wszystkich
.flac
plików do.mp3
jednego katalogu, zachowując większość metadanych:for file in *.flac; do ffmpeg -i $file -q:a 0 ${file:r}.mp3; done
(Uwaga:
${file:r}
usuwa rozszerzenie podanej ścieżki do pliku)źródło
$file
podobnego"$file"
.:r
wydaje się byćzsh
modyfikatorem, który nie działabash
. W Bash można zastąpić"${file:r}.mp3"
z"${file%.flac}.mp3"
.${file%.*}
Wiem, że o to nie pytano, ale biorąc pod uwagę, że jednym z powodów, dla których tak się stało (przynajmniej tego chciałem), jest to, że muzykę można importować do Apple iTunes, który nie obsługuje formatu FLAC. W takim przypadku bardziej sensowne jest przekonwertowanie FLAC na własny bezstratny format Apple, m4a. Użyłem tego polecenia, aby przekonwertować wszystkie pliki w bieżącym folderze, zachowując podobne rozmiary plików.
find . -name "*.flac" -exec ffmpeg -i {} -map_metadata 0 -acodec alac {}.m4a \;
źródło
Ten skrypt flac2mp3.sh używa
ffmpeg
do konwersji drzewa folderów plików FLAC na inne drzewo folderów plików MP3. Okładka jest dołączona, jeśli jest obecna. Możesz ustawićCORES
zmienną, aby tworzyć zadania w tle i konwertować kilka plików jednocześnie.źródło