2008-09-04 31 views
73

Câu hỏi gốcCrop MP3 sang 30 giây đầu tiên

Tôi muốn để có thể tạo ra một mới (đầy đủ hợp lệ) tập tin MP3 từ một file MP3 hiện có để được sử dụng như một bản xem trước - hãy thử-trước-bạn -buy kiểu. Tệp mới chỉ được chứa n giây đầu tiên của bản nhạc.

Bây giờ, tôi biết tôi chỉ có thể "cắt dòng" tại n giây (tính từ kích thước bitrate và tiêu đề) khi phân phối tệp, nhưng điều này hơi bẩn và PITA thực trên bản nhạc VBR. Tôi muốn có thể tạo ra một tập tin MP3 thích hợp.

Bất kỳ ai có ý tưởng nào?

câu trả lời

Cả mp3splitffmpeg là cả hai giải pháp tốt. Tôi đã chọn ffmpeg vì nó thường được cài đặt trên các máy chủ Linux và cũng là easily available for windows. Dưới đây là một số thông số dòng lệnh tốt hơn để tạo ra xem trước với ffmpeg

  • -t <seconds> Chop số sau theo quy định của giây
  • -y lực lượng tập tin ghi đè
  • -ab <bitrate> bộ bitrate ví dụ -ab 96k
  • -ar <rate Hz> đặt tốc độ lấy mẫu, ví dụ: -ar 22050 cho 22.05kHz
  • -map_meta_data <outfile>:<infile> copy track siêu dữ liệu từ infile để outfile

thay vì thiết -ab và -ar, bạn có thể sao chép các thiết lập theo dõi ban đầu, như Tim Farley cho thấy, với :

  • -acodec copy
+0

Tôi không nhận ra ffmpeg có thể làm điều đó. Cảm ơn bạn. –

Trả lời

99

Tôi cũng đề nghị ffmpeg, nhưng dòng lệnh do John Boker đề xuất có tác dụng phụ không mong muốn: nó mã hóa lại tệp thành bitrate mặc định (ít nhất là 64 kb/s trong phiên bản này). Điều này có thể cho khách hàng của bạn một ấn tượng sai về chất lượng của các tệp âm thanh của bạn và cũng mất nhiều thời gian hơn để thực hiện.

Dưới đây là một dòng lệnh mà sẽ cắt đến 30 giây mà không cần chuyển mã:

ffmpeg -t 30 -i inputfile.mp3 -acodec copy outputfile.mp3 

Việc chuyển đổi -acodec nói ffmpeg để sử dụng "bản sao" đặc biệt bộ giải mã mà không chuyển mã. Nó nhanh như chớp.

Chú ý: lệnh đã được cập nhật dựa trên bình luận từ Oben Sonne

+18

Các phiên bản 'ffmpeg' gần đây (ít nhất là từ 0.10.6) giải thích các tùy chọn khác nhau dựa trên vị trí. Các tùy chọn liên quan đến đầu vào phải xuất hiện trước các tùy chọn '-i ...' và các tùy chọn releated đầu ra phải xuất hiện sau '-i ...'. Điều này có nghĩa là 'ffmpeg -t 30 -i inputfile.mp3 -acodec copy outputfile.mp3' sẽ * bây giờ * là câu trả lời đúng. –

+0

Tôi có thể trích xuất âm thanh 30 giây từ 15 tập tin đầu vào thứ hai, nó có nghĩa là nếu vắt tập tin sau đó 30 giây sau đó giải nén 30 giây nhưng nếu tập tin 15 giây sau đó lặp lại và trích xuất hoàn thành 30 giây. –

+2

Nếu bạn muốn đặt thời gian bắt đầu (offset), bạn có thể sử dụng ['-ss hh: mm: ss [.xxx]'] (https://ffmpeg.org/ffmpeg.html#Main-options). Ví dụ: 'ffmpeg -t 30 -ss 00: 00: 15.500 -i inputfile.mp3 -acodec copy outputfile.mp3' sẽ cắt thành * 30 giây * bắt đầu từ * 00h 00m 15s 500ms *. –

2

Tôi đã không sử dụng nó cho mục đích cụ thể này, nhưng tôi đặt cược ffmpeg có thể làm điều đó.

15

thử:

ffmpeg -t 30 -i inputfile.mp3 outputfile.mp3 
5

Bạn có thể muốn thử Mp3Splt.

Tôi đã sử dụng nó trước trong dịch vụ C# chỉ đơn giản là gói quá trình win32 mp3splt.exe. Tôi cho rằng một cái gì đó tương tự có thể được thực hiện trong kịch bản Linux/PHP của bạn.

+2

Đã sử dụng MP3Split với thành công cho việc cắt mp3 – Freshblood

5

Chỉ cần một ý nghĩ: bạn có thể muốn bỏ qua sự khởi đầu của bài hát gốc. Giả sử, bạn có thể sử dụng đoạn 30 giây bắt đầu từ thứ ba của bài hát.
Trong một số bài hát, 30 giây đầu tiên không cho bạn biết nhiều vì nó chỉ là phần "thiết lập cảnh" - ví dụ: Pink Floyd 's Shine On You Crazy Diamond.

+4

+1 bài hát tuyệt vời! – alex

+0

up cho pink floyd –

42

Nếu bạn muốn BỎ 30 giây đầu tiên (và giữ phần còn lại), sau đó sử dụng này:

ffmpeg -ss 30 -i inputfile.mp3 -acodec copy outputfile.mp3 
8

bạn có thể sử dụng mp3cut :

cutmp3 -i foo.mp3 -O 30s.mp3 -a 0:00.0 -b 0:30.0 

Đó là trong ubuntu repo, vì vậy chỉ cần: sudo apt-get install cutmp3.

1

Cũng giống như lưu ý, tôi đã có một thời gian thực sự xấu với ffmpeg, mptsplit và mp3cutter trên CentOS, tất cả đều báo cáo "Tiêu đề bị thiếu". Vì vậy, tôi đã phải đi với MP3 Class và một số toán học để cắt bằng cách kích thước.

0

Tôi đã có một lỗi trong khi làm cùng

Invalid audio stream. Exactly one MP3 audio stream is required. 
Could not write header for output file #0 (incorrect codec parameters  ?): Invalid argumentStream mapping: 

Fix đối với tôi là: ffmpeg -ss 00: 02: 43,00 -t -i 00:00:10 input.mp3 -codec: a libmp3lame out.mp3

2

Lệnh này cũng hoạt động hoàn hảo. Tôi đã cắt nhạc từ 20 giây xuống còn 40 giây.

-y: buộc tệp đầu ra để ghi đè.

ffmpeg -i test.mp3 -ss 00:00:20 -to 00:00:40 -c copy -y temp.mp3 
Các vấn đề liên quan