많은 mp3 파일을 결합 / 병합하는 방법은 무엇입니까?


59

많은 mp3 파일을 결합 / 병합하는 방법에 대해 Google을 검색하면 파일을 cat함께 묶어야한다고 제안합니다 .

그것은 "작동"할 수 있지만, 각 헤더와 IDv3 태그 세트도 연결되므로 분명히 올바른 방법이 아닙니다.

많은 mp3를 결합 / 병합하기 위해 스크립팅 할 수있는 Linux 프로그램이 있습니까?

mplayer / mencoder / ffmpeg가 할 수 있습니까?

답변:


79

이것은 두 개의 mp3 파일을 연결하고 결과 메타 데이터는 첫 번째 파일의 메타 데이터가됩니다.

ffmpeg -i "concat:file1.mp3|file2.mp3" -acodec copy output.mp3

ffmpeg의 경우 전체 "concat :"부분은 단일 "입력 파일"이며 해당 메타 데이터는 첫 번째로 연결된 파일의 데이터이기 때문입니다. 두 번째 파일의 메타 데이터를 대신 사용하려면이를 더미 입력 파일로 추가하고 메타 데이터를 출력의 메타 데이터에 맵핑해야합니다.

ffmpeg -i "concat:file1.mp3|file2.mp3" -i file2.mp3 -acodec copy test.mp3 -map_metadata 0:1

두 개의 메타 데이터로 메타 데이터를 구성하려면 직접 작성해야합니다. 파일의 메타 데이터를

ffmpeg -i file1.mp3 -f ffmetadata file1.metadata

메타 데이터를 모두 덤프하고 새 메타 데이터를 생성 한 후을 사용하여 출력 파일에 추가 하고 음수 입력 파일 번호에서 매핑을 -metadata설정하여 메타 데이터 복사를 비활성화 할 수 있습니다 -map_metadata. 이름 값을 설정하고 다른 메타 데이터는 설정하지 않습니다.

ffmpeg -i "concat:file1.mp3|file2.mp3" -acodec copy -metadata "title=Some Song" test.mp3 -map_metadata 0:-1

참고로 특정 버전의 ffmpeg가 필요합니다. 파일이 연결을 찾을 수 없다고 표시되면 업그레이드하고 다시 실행 해보십시오
Sameer

젠투의 ffmpeg 0.10.4에서 잘 작동합니다. 무엇을 사용하고 있습니까? 명령을 잘못 입력하지 않았습니까?
Ambroz Bizjak

1
다른 사람들을 위해 몇 가지 사항을 명확하게 설명하고 싶었습니다. -acodec오디오 코덱이 사용됨을 copy의미하고, muxing과 demuxing 만 있고 인코딩 / 트랜스 코딩은 안됨을 의미합니다 (즉, 매우 빠르며 품질 손실이 없음)
Housemd

1
여러 파일을 끌어서 놓을 수있는 GUI 프로그램 (예 : 순차적으로 기록 된 기록을 위해 시간순으로 정렬하고 일부 파일을 편집 한 경우)이 좋으면 하나의 파일을 출력합니다.
제임스 레이

1
이것은 좋은 대답이지만, 거의 모든 경우에 결과 MP3 파일은 파일이 결합 된 위치 사이에 짧은 (1 초) 간격이 있습니다. 따라서 MP3 트랙을 병합하여 매끄러운 재생 앨범 / 세트 / 무엇이든 만들려는 경우에는 제대로 작동하지 않습니다.
도마뱀

13

Mp3Wrap- 파일 이름이나 ID3 정보를 잃지 않고 재 인코딩하지 않고 여러 개의 MP3 파일을 재생 가능한 단일 MP3로 래핑하는 명령 줄 유틸리티입니다. 또한 MP3 내부의 재생 목록, 정보 파일 및 표지 이미지와 같은 비 오디오 데이터 보관을 지원합니다. 이 파일은 나중에 압축을 풀 수 있습니다 (예 : mp3splt 사용). 일반 MP3 디코더는 전체 오디오 스트림을 하나의 긴 트랙으로 재생할 수 있습니다.


1
100 + mp3를 결합하고 원본으로 다시 분할하는 옵션을 원했기 때문에이 권장 사항에 대해 감사합니다. 훨씬 가볍고 간단한 솔루션 인 ffmpeg.
joshbaptiste 2

이 속성은 더 이상 작동하지 않습니다. 몇 개의 파일을 연결하고 출력 파일을 검사하십시오 mp3val. 동기화 오류가보고됩니다. 즉, Chrome 64 이상에서 첫 번째 청크 이후에는 재생되지 않습니다 ( bugs.chromium.org/p/chromium/issues/detail?id=794782bugs.chromium.org/p/chromium/issues/detail?id 참조) = 806601 # c10 )
Housemd

Windows에서 작동하지 않는 것 같습니다. 메타 데이터가 보존되지 않았습니다.
Gruber

9

이것은 MP3로 가득 찬 폴더를 하나의 MP3 파일로 연결합니다 :

1) 연결할 MP3 파일 목록을 저장합니다 (예 :

$ cat mylist.txt
file '/tmp/01.mp3'
file '/tmp/02.mp3'
file '/tmp/03.mp3'
file '/tmp/04.mp3'
file '/tmp/05.mp3'
file '/tmp/06.mp3'
file '/tmp/07.mp3'

2) 다음 명령을 (실행 -safe 0됩니다 mylist.txt 대신 상대 경로를 사용하는 경우에는 필요하지 않음 )

$ ffmpeg -f concat -safe 0 -i mylist.txt -c copy output.mp3

3

현재 디렉토리의 모든 mp3 파일을 연결하려면 다음을 수행하십시오.

function join_by { local IFS="$1"; shift; echo "$*"; }
files=(*.mp3)
ffmpeg -i "concat:`join_by "|" $files`" -acodec copy output.mp3

0

스크립팅이 필요한 경우 ffmpeg 솔루션을 사용하는 것이 좋습니다. 그러나 이와 같은 작업을 수행하기 위해 응용 프로그램이 필요한 경우 Audacity를 사용해 볼 수 있습니다. 오픈 소스 및 크로스 플랫폼입니다. 나는 그것을 mp3에 참여시키는 데 사용하지는 않았지만 mp3에서 섹션을 자르고 마지막에 페이드 아웃하는 데 사용했습니다. 나는 당신이 mp3에 합류하고 그것들을 서로 교차 페이드 할 수 있음을 기꺼이 생각합니다.


4
내가 아는 한 Audacity는 원시 사운드 데이터에서 작동하며 mp3와 연결하면 트랜스 코딩으로 인해 성능이 저하됩니다.
Ambroz Bizjak

0

zsh :

audio-join() ffmpeg -i "concat:${(j:|:)@[2,-1]}" -acodec copy $1

audio-join output.mp3 *.mp3

답변에 설명이 포함될 것으로 기대합니다. (이 페이지의 모든 답변이 좋은 예는 아닙니다.)
Scott

0

Miles Wolbe의 답변을 바탕으로 저에게 도움이 된 한 줄짜리가 있습니다.

ls *.mp3 | \
    sed -e "s/\(.*\)/file '\1'/" | \
    ffmpeg -protocol_whitelist 'file,pipe' -f concat -i - -c copy output.mp3
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.