Jak przekonwertować moją kolekcję muzyki FLAC na Apple Lossless?

13

Mam rozsądną kolekcję muzyki, którą przechowuję w formacie FLAC na moim laptopie z Ubuntu. Chciałbym rozpocząć odtwarzanie tej muzyki na komputerze Mac i zsynchronizować ją stamtąd z iPodem. Ludzie zasugerowali, że najlepszym sposobem na to jest konwersja mojej kolekcji na ALAC, i zdecydowałem, że właśnie to chcę zrobić.

Zanim zanurzyłem się i napisałem niestandardowe skrypty powłoki, które wywołują ffmpegjakieś złożone findpolecenie, pomyślałem, że poproszę o radę.

Jak najlepiej przekonwertować istniejącą kolekcję FLAC na ALAC, bez utraty jakości dźwięku i zachowania wszystkich metadanych?

jml
źródło
Huh Jestem zaskoczony. Pomyślałem, że będzie oczywisty wybór narzędzia do transkodowania, ale wszystkie, które mogę znaleźć, koncentrują się na wideo.
RAOF
Skończyło się na tym, że napisałem niestandardowy skrypt Pythona, który nazywał się metaflac, ffmpeg i AtomicParsley.
jml

Odpowiedzi:

21

avconv (lub ffmpeg, którego avconv jest rozwidleniem) może to zrobić z wiersza poleceń:

avconv -i input.flac -c:a alac output.m4a

Powinien sam zachować metadane.

Aby wykonać każdy flac w katalogu:

for f in ./*.flac; do avconv -i "$f" -c:a alac "${f%.*}.m4a"; done

Aby wykonać rekursywnie każdy flac (w bieżącym katalogu i wszystkich podkatalogach):

shopt -s globstar
for f in ./**/*.flac; do avconv -i "$f" -c:a alac "${f%.*}.m4a"; done

Jeśli masz flacs w plikach ogg lub coś, oczywiście zmień ./*.flacna ./*.ogg.

Myślę, że powinno to działać z avconv / ffmpeg z repozytoriów (ponieważ ALAC jest wydany na licencji Apache i może być legalnie dystrybuowany), chociaż mam zainstalowaną wersję z medibuntu.

Jeśli chcesz pozbyć się oryginalnych plików, możesz umieścić rmw pętli. Ta wersja używa -nflagi avconv, więc nie zastąpi już istniejących plików ALAC, a &&zamiast tego; oznacza, że ​​jeśli avconv zatrzyma się z błędem, oryginalny plik FLAC nie zostanie usunięty:

for f in ./*.flac; do avconv -n -i "$f" -c:a alac "${f%.*}.m4a" && rm "$f"; done

Pamiętaj, że usuwanie plików za pomocą rm jest nieodwracalne (poza odzyskiwaniem danych kryminalistycznych), więc używaj go ostrożnie.

zła
źródło
Czy wiesz, jak zamienić pliki FLAC na pliki ALAC, zamiast tworzyć kopię pliku FLAC?
user138784
@ użytkownik 13 nie, avconv / ffmpeg nie może tego zrobić, nie może zastąpić plików, które wykorzystuje jako dane wejściowe. Możesz użyć rmdo usunięcia oryginalnych plików, jeśli chcesz.
evilsoup
Nie jestem guru z linii poleceń (jestem całkiem nowy w GNU / Linux), więc do tej pory ręcznie je usuwałem. (Nautilus, uporządkuj pliki według typu, a następnie mogę po prostu wybrać wszystkie pliki .flac w tym katalogu i je usunąć). Zobaczę, jak działa to „rm”. :)
user138784
@ user138 Zredagowałem odpowiedź, aby pokazać jedną implementację z rm- chociaż zwróć uwagę na ostrzeżenie, rmjest prawie nieodwracalne, natychmiast usuwa pliki zamiast przenosić je do kosza. Inną alternatywą byłoby użycie globowania po zakończeniu pętli (abyś mógł sprawdzić, czy nie wystąpiły problemy ... jeśli polecenie nie powiedzie się z jakiegokolwiek powodu, nie chcesz pozbywać się oryginałów): rm -- *.flacusunie wszystkie FLAC w katalogu roboczym.
evilsoup
Dzięki za radę! Zwykle przechowuję oryginalne pliki flac w innym katalogu, więc nie ma ryzyka ich utraty.
user138784,