문제

원래 질문

기존 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
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top