문제
원래 질문
기존 MP3 파일에서 새로운(완전히 유효한) MP3 파일을 생성하여 미리 보기(구매 전 시도 스타일)로 사용할 수 있기를 원합니다.새 파일에는 첫 번째 파일만 포함되어야 합니다. N 트랙의 초.
이제 나는 그냥 "스트림을 끊을" 수 있다는 것을 압니다. N 초(비트 전송률 및 헤더 크기로 계산) 파일을 전달할 때 이는 약간 지저분하고 VBR 트랙의 실제 PITA입니다.적절한 MP3 파일을 생성하고 싶습니다.
누구든지 아이디어가 있나요?
답변
둘 다 mp3split
그리고 ffmpeg
둘 다 좋은 솔루션입니다.저는 ffmpeg를 선택했습니다. Linux 서버에 일반적으로 설치되며 윈도우에서 쉽게 사용 가능.ffmpeg로 미리보기를 생성하기 위한 더 좋은 명령줄 매개변수는 다음과 같습니다.
-t <seconds>
지정된 초 후에 자르기-y
강제로 파일 덮어쓰기-ab <bitrate>
비트 전송률 설정 -ab 96k-ar <rate Hz>
샘플링 속도 설정(예: -ar 22050 22.05kHz용-map_meta_data <outfile>:<infile>
infile에서 outfile로 트랙 메타데이터 복사
-ab 및 -ar를 설정하는 대신 Tim Farley가 제안한 대로 다음을 사용하여 원래 트랙 설정을 복사할 수 있습니다.
-acodec copy
해결책
ffmpeg도 추천하지만 John Boker가 제안한 명령줄에는 의도하지 않은 부작용이 있습니다.파일을 기본 비트 전송률(적어도 여기에 있는 버전에서는 64kb/s)로 다시 인코딩합니다.이로 인해 고객은 사운드 파일의 품질에 대해 잘못된 인상을 받을 수 있으며 시간도 더 오래 걸립니다.
트랜스코딩 없이 30초로 분할되는 명령줄은 다음과 같습니다.
ffmpeg -t 30 -i inputfile.mp3 -acodec copy outputfile.mp3
-acodec 스위치는 ffmpeg에게 트랜스코딩되지 않는 특수 "복사" 코덱을 사용하도록 지시합니다.번개처럼 빠릅니다.
메모:Oben Sonne의 의견을 바탕으로 명령이 업데이트되었습니다.
다른 팁
처음 30초를 제거하고 나머지는 유지하려면 다음을 사용하십시오.
ffmpeg -ss 30 -i inputfile.mp3 -acodec copy outputfile.mp3
노력하다:
ffmpeg -t 30 -i inputfile.mp3 outputfile.mp3
mp3cut을 사용할 수 있습니다:
cutmp3 -i foo.mp3 -O 30s.mp3 -a 0:00.0 -b 0:30.0
우분투 저장소에 있으므로 다음과 같습니다. sudo apt-get install cutmp3
.
이 명령도 완벽하게 작동합니다.음악 파일을 20초에서 40초로 자릅니다.
-y :출력 파일을 강제로 덮어씁니다.
ffmpeg -i test.mp3 -ss 00:00:20 -to 00:00:40 -c copy -y temp.mp3
시도해 볼 수도 있습니다. Mp3Splt.
나는 이전에 mp3splt.exe win32 프로세스를 간단히 래핑한 C# 서비스에서 이를 사용한 적이 있습니다.Linux/PHP 시나리오에서도 비슷한 작업을 수행할 수 있다고 가정합니다.
이 특정 목적으로 사용하지는 않았지만 장담합니다. ffmpeg 할 수있어.
같은 작업을 하다가 오류가 발생했습니다
Invalid audio stream. Exactly one MP3 audio stream is required.
Could not write header for output file #0 (incorrect codec parameters ?): Invalid argumentStream mapping:
나를 위해 수정한 내용은 다음과 같습니다.
ffmpeg -ss 00:02:43.00 -t 00:00:10 -i input.mp3 -codec:a libmp3lame out.mp3