Cắt MP3 thành 30 giây đầu tiên


103

Câu hỏi gốc

Tôi muốn có thể tạo tệp MP3 mới (hoàn toàn hợp lệ) từ tệp MP3 hiện có để được sử dụng làm bản xem trước - kiểu thử trước khi mua. Tệp mới chỉ nên 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 luồng" ở n giây (tính từ tốc độ bit và kích thước tiêu đề) khi phân phối tệp, nhưng điều này hơi bẩn và là PITA thực sự trên đường dẫn VBR. Tôi muốn có thể tạo một tệp MP3 thích hợp.

Bất cứ ai có bất kỳ ý tưởng?

Câu trả lời

Cả hai mp3splitffmpegđều là 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 dễ dàng có sẵn cho các cửa sổ . Đây là một số tham số dòng lệnh tốt hơn để tạo bản xem trước với ffmpeg

  • -t <seconds> chặt sau số giây được chỉ định
  • -y buộc ghi đè tệp
  • -ab <bitrate>đặt tốc độ bit, 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> sao chép siêu dữ liệu theo dõi từ infile sang outfile

thay vì đặt -ab và -ar, bạn có thể sao chép cài đặt bản nhạc gốc, như Tim Farley đề xuất, với:

  • -acodec copy

Tôi chưa sử dụng nó cho mục đích cụ thể này, nhưng tôi cá là ffmpeg có thể làm được.
Grapefrukt

Chỉ cần một suy nghĩ: bạn có thể muốn bỏ qua phần đầ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ừ phần 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 như nó chỉ là một "lập trường" một phần - ví dụ Pink Floyd 's chiếu sáng ngươi điên kim cương .
Tomas Sedovic

Cũng như lưu ý, tôi đã có một khoảng thời gian thực sự tồi tệ với ffmpeg, mptsplit và mp3cutter trên CentOS, tất cả chúng đều báo "Thiếu tiêu đề". Vì vậy, tôi phải sử dụng MP3 Class và một số phép toán để cắt theo kích thước tệp.
vườn

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

Câu trả lời:


142

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

Đây là một dòng lệnh sẽ cắt thành 30 giây mà không cần chuyển mã:

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

Công tắc -acodec yêu cầu ffmpeg sử dụng codec "sao chép" đặc biệt không chuyển mã. Nó nhanh như chớp.

LƯU Ý: lệnh được cập nhật dựa trên nhận xét từ Oben Sonne


21
Các ffmpegphiên bản gần đây (ít nhất là kể từ 0.10.6) diễn giải 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 -i ...và các tùy chọn liên quan đến đầu ra phải xuất hiện sau -i .... Điều này có nghĩa là bây giờffmpeg -t 30 -i inputfile.mp3 -acodec copy outputfile.mp3 sẽ là câu trả lời chính xác.
Oben Sonne

Tôi có thể trích xuất âm thanh 30 giây từ tệp đầu vào 15 giây được không, có nghĩa là nếu máy phân loại tệp thì 30 giây thì trích xuất 30 giây nhưng nếu tệp 15 giây thì lặp lại và trích xuất hoàn tất 30 giây.
Girish Patidar

6
Nếu bạn muốn đặt thời gian bắt đầu (bù đắp), bạn có thể sử dụng -ss hh:mm:ss[.xxx]. Ví dụ: ffmpeg -t 30 -ss 00:00:15.500 -i inputfile.mp3 -acodec copy outputfile.mp3sẽ cắt thành 30 giây bắt đầu từ 00h 00m 15s 500ms .
patryk.beza

1
đối với một số lý do trên lệnh không làm việc cho tôi, nhưng nếu tôi thay đổi nó để: ffmpeg -i inputfile.mp3 -t 30 -acodec copy outputfile.mp3sau đó nó làm việc một cách hoàn hảo
Krishnendu

Đối với tôi các tùy chọn -t và -s phải được sử dụng riêng biệt trong 2 lệnh. Nhưng nó hoạt động, cảm ơn!
Yan King Yin

57

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

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


12

Lệnh này cũng hoạt động hoàn hảo. Tôi đã cắt các tệp nhạc của mình từ 20 đến 40 giây.

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

ffmpeg -i test.mp3 -ss 00:00:20 -to 00:00:40 -c copy -y temp.mp3

1
Hoàn hảo! Cảm ơn vì đã chia sẻ điều này.
HerrimanCoder

11

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.


6

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

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


2
MP3Split đã qua sử dụng với thành công cho mp3 cắt
Freshblood

0

Tôi đã gặp lỗi khi làm điều tương tự

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

Khắc phục cho tôi là:

ffmpeg -ss 00:02:43.00 -t 00:00:10 -i input.mp3 -codec:a libmp3lame out.mp3

0

medipack là một ứng dụng dòng lệnh rất đơn giản như một trình bao bọc ffmpeg.

bạn có thể cắt video của mình bằng các lệnh sau:

medipack trim input.mp3 -s 00:00 -e 00:30 -o output.mp3
medipack trim input.mp3 -s 00:00 -t 00:30 -o output.mp3

bạn có thể xem các tùy chọn của lệnh con trim như:

srb@srb-pc:$ medipack trim -h
usage: medipack trim [-h] [-s START] [-e END | -t TIME] [-o OUTPUT] [inp]

positional arguments:
  inp                   input video file ex: input.mp4

optional arguments:
  -h, --help            show this help message and exit
  -s START, --start START
                        start time for cuting in format hh:mm:ss or mm:ss
  -e END, --end END     end time for cuting in format hh:mm:ss or mm:ss
  -t TIME, --time TIME  clip duration in format hh:mm:ss or mm:ss
  -o OUTPUT, --output OUTPUT

bạn cũng có thể khám phá các tùy chọn khác bằng cách sử dụng medipack -h

srb@srb-pc:$ medipack --help
usage: medipack.py [-h] [-v] {trim,crop,resize,extract} ...

positional arguments:
  {trim,crop,resize,extract}

optional arguments:
  -h, --help            show this help message and exit
  -v, --version         Display version number

bạn có thể truy cập https://github.com/srbcheema1/medipack và các ví dụ thanh toán trong README.


1
Ưu điểm của trình bao bọc này là gì? Bởi vì nó có vẻ không đơn giản hơnffmpeg -i input -ss <start time> -to <end time> output
llogan

Tôi đã thêm một tùy chọn -tcó thể được sử dụng thay thế -ecó nghĩa là giả sử tôi cắt video 4 phút 36 giây tiếp theo, tôi không cần phải lo lắng khi thêm những thời gian đó theo cách thủ công, tôi cũng đã cung cấp sự dễ dàng tương tự khi cắt video, hãy xem ví dụ trong README, bạn sẽ hiểu được lý do tại sao CLI của nó dễ hơn ffmpeg đơn giản. Tôi đồng ý rằng nó không phải là mạnh mẽ nhưng đối với người bình thường là công cụ hữu ích của nó.
srbcheema1

2
ffmpeg-totùy chọn đó là những gì bạn -tcó thể làm.
llogan

thế còn tùy chọn crop% age được đề cập trong README dưới tiêu đề phụ cây trồng, có sẵn không ?? Tôi vừa tạo công cụ đó theo yêu cầu bởi một người đã trả cho tôi vài đô la, vì họ không muốn lo lắng về danh sách tùy chọn cli lớn, chỉ họ muốn một công cụ có thể thực hiện một số tác vụ một cách dễ dàng, ngay cả khi có tất cả các tùy chọn trong ffmpeg, nhưng vẫn sẽ rất khó để noob tìm thấy tất cả chúng trong phần trợ giúp dòng lệnh của nó. công cụ này có một phần đơn giản giúp dễ dàng cho một Noob để hiểu
srbcheema1

Chắc chắn,-vf "crop=iw*0.1:ih*0.1:0:0"
llogan
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.