태그 보관물: shell-script

shell-script

Mass .flac-> .mp3 코드 변환 : ID3 태그 정보를 보존하는 쉘 스크립트를 작성하는 방법은 무엇입니까? 유지합니다 (예 : 제목

최근 몇 주 동안 나는 .flac-> .mp3 트랜스 코딩에 대한 ‘실습’접근 방식에서 훨씬 더 ‘설정하고 잊어 버린’접근 방식으로 전환했습니다.

첫 번째 단계는 GUI 프론트 엔드 (LAME 플러그인이있는 대담)의 사용을 중단하고 대신 여기에 설명 된 방법을 사용하는 입니다.

두 번째 단계는 .flac 파일을 포함하는 많은 하위 디렉토리가있는 디렉토리를 한 번의 간단한 단계로 코드 변환 할 수 있도록 명령 루프가 재귀 적으로 작동하도록하는 bash 쉘 스크립트를 찾는 것입니다. 이 답변 은 askubuntu.com의 사용자가 제공했습니다.

이제 ID3 태그 정보가 보존되도록 사물을 더 세분화하는 방법을 배우고 싶습니다. 위의 ID3 태그 데이터에 연결된 메서드는 최소값을 유지합니다 (예 : 제목 필드 만 남음).

누구든지 그러한 쉘 스크립트를 작성하는 방법을 가르쳐 줄 수 있습니까?


쉘 스크립트는 다음과 같이 업데이트되었습니다 :

#!/bin/bash
file="$1"
flac -cd "$file" | lame --preset fast extreme - "${file%.flac}.mp3"
id3cp "$file" "${file%.flac}.mp3"

find . -name '*.flac' -exec ~/bin/flac2mp3 '{}' \;~ / Desktop / stack에서 수행하면 다음과 같은 출력이 제공됩니다.

01 - Amon Tobin - Chomp Samba.flac: done
LAME 3.98.4 64bits (http://www.mp3dev.org/)
Using polyphase lowpass filter, transition band: 19383 Hz - 19916 Hz
Encoding <stdin> to ./01 - Amon Tobin - Chomp Samba.mp3
Encoding as 44.1 kHz j-stereo MPEG-1 Layer III VBR(q=0)
Parsing ./01 - Amon Tobin - Chomp Samba.flac: done.  Copying to ./01 - Amon Tobin - Chomp Samba.mp3: done

id3info 원래 .flac 및 결과 .mp3의 경우 각각 다음과 같습니다.

*** Tag information for 01 - Amon Tobin - Chomp Samba.flac

(즉, 아무것도);

*** Tag information for 01 - Amon Tobin - Chomp Samba.mp3
*** mp3 info
MPEG1/layer III
Bitrate: 128KBps
Frequency: 44KHz

.flac에는 확실히 태그 정보가 있습니다. EasyTAG를 열어서 확인할 수 있습니다. EasyTAG는 이것을 .mp3의 경우 ‘FLAC Vorbis Tag’이지만 ‘ID3 Tag’라고합니다. 이것이 문제입니까?



답변

#!/bin/sh

file="$1"
outfile=${file%.flac}.mp3

eval $(metaflac --export-tags-to - "$file" | sed "s/=\(.*\)/='\1'/")

flac -cd "$file" | lame --preset fast extreme \
        --add-id3v2 --tt "$TITLE" --ta "$ARTIST" --tl "$ALBUM" \
        --ty "$DATE" --tn "$TRACKNUMBER" --tg "$GENRE" \
        - "$outfile"

답변

mp3fs를 사용하여 flac를 mp3로 대량 인코딩하는 방법

flac 파일을 mp3로 변환하는 프로그램을 사용하는 대신 mp3fs를 사용하여 가상 mp3로 표시하고 복사 작업을 대기시킬 수있는 프로그램을 사용할 수 있습니다. 그것은 나를 위해 훌륭하게 작동합니다.

mp3fs 및 ultracopier 다운로드 및 설치 :

sudo apt-get install mp3fs ultracopier

실행할 각 mp3fs에 대해 flac 및 mp3 디렉토리 쌍을 작성하십시오. 듀얼 코어 CPU가 있으므로 두 개를 실행합니다. flac 파일이있는 파티션에 flac 디렉토리를 보관하면 해당 디렉토리를 빠르게 이동할 수 있습니다. 이 파티션을 시스템에서 “스토리지”라고합니다.

cd /media/Storage
mkdir mp3fs mp3fs/flac_1 mp3fs/mp3_1 mp3fs/flac_2 mp3fs/mp3_2

명령 행에서 또는에 추가하여 디렉토리를 마운트 할 수 있습니다 /etc/fstab. 마운트시 가상 mp3의 비트 전송률 및 인코딩 알고리즘을 구성 할 수도 있습니다. 320kbps의 일정한 비트 전송률을 가진 mp3를 원하며 lame은 가능한 최고의 mp3를 생성하는 데 필요한 모든 시간이 걸릴 수 있습니다.

명령 행에서 :

mp3fs -b 320 -oquality=0 /media/Storage/mp3fs/flac_1 /media/Storage/mp3fs/mp3_1 -o allow_other,ro
mp3fs -b 320 -oquality=0 /media/Storage/mp3fs/flac_2 /media/Storage/mp3fs/mp3_2 -o allow_other,ro

퓨즈가 다음과 같이 불평하면

fusermount : /etc/fuse.conf를 열지 못했습니다 : 권한이 거부되었습니다
fusermount : 옵션 allow_other는 etc / fuse.conf에 ‘user_allow_other’가 설정된 경우에만 허용됩니다.

에서 user_allow_other옵션의 주석 처리를 제거 /etc/fuse.conf하거나

sudo chmod 644 /etc/fuse.conf

또는에서 /etc/fstab:

mp3fs#/media/Storage/mp3fs/flac_1 /media/Storage/mp3fs/mp3_1 fuse user,ro,allow_other,bitrate=320,quality=0 0 0
mp3fs#/media/Storage/mp3fs/flac_2 /media/Storage/mp3fs/mp3_2 fuse user,ro,allow_other,bitrate=320,quality=0 0 0

에 디렉토리를 추가 한 후 /etc/fstab다음을 사용하여 마운트 할 수 있습니다.

sudo mount -a

끝난! 초음파 복사기를 시작하십시오. 그놈 패널 또는 사용하는 모든 것에 표시기 아이콘이 배치됩니다. 클릭하고 사본 추가를 선택하십시오. 나는 두 개의 코어를 사용하기 위해 두 번 그렇게했습니다. 파일 브라우저를 사용하여 일부 flac를 flac_1로 이동하십시오. mp3_1 디렉토리로 이동하여 mp3를 울트라 복사기 창 중 하나로 끌어 복사 큐를 시작하십시오. Ultracopier는 파일의 목적지를 묻습니다. 이제 flac를 mp3로 일괄 인코딩하는 하나의 코어가 사용 중입니다.

다른 코어를 사용하려면 flac 파일을 flac_2로 옮기고 mp3를 mp3_2에서 두 번째 울트라 복사기 창으로 드래그하십시오.

업데이트 : UltraCopier 대신 MiniCopier를 사용하고 있으며 사용하기가 조금 더 쉽습니다. 아래의 의견을 참조하십시오.


답변

id3cpFLAC가 ID3을 사용하지 않으므로 작동 할 수 없습니다. 대신 Vorbis 태그를 사용합니다.

avconv전환을 통해 태그를 유지 관리하는 옵션이 있습니다. 그것은 코덱의 조합에 따라 변덕스럽고 가치가 있지만 귀하의 경우에는 다음과 같이 작동합니다 (버전 9.16-6).

avconv -i in.flac -map_metadata 0:g:0 out.mp3

(사용 : 폴더에이 모든 FLAC 파일을 적용 (재귀 적으로) 쉽게이 같은 같습니다 bash)

for f in */**/*.flac; do
  avconv -i "${f}" -map_metadata 0:g:0 "`echo "${f}" | sed -e s/flac$/mp3/`";
done

참고 그 avconv용도가 자동으로 절름발이; 품질 및 기타 사항을 제어하기위한 추가 옵션이 있습니다. 자세한 man avconv내용을 확인하십시오 .


답변