Tách một tệp âm thanh thành các đoạn có độ dài xác định


16

Tôi có một số tệp âm thanh dài (mỗi tệp 80 phút; m4a) và muốn chúng được chia thành các phần 5 hoặc 10 phút.

Tôi thấy nhiều câu hỏi để phân tách một tệp âm thanh ở các khoảng dừng, âm báo mở rộng, v.v. nhưng dường như không thể tìm thấy câu hỏi nào liên quan đến thao tác đơn giản này. Có ai biết một cách đơn giản để làm điều này?

Tất nhiên, một cái gì đó tự động, và dòng lệnh vẫn ổn, thậm chí còn được ưa thích.

Cảm ơn trước!

Câu trả lời:


20

Với ffmpeg gần đây (tải xuống bản dựng tĩnh từ đây ):

ffmpeg -i in.m4a -f segment -segment_time 300 -c copy out%03d.m4a

Điều này sử dụng muxer phân đoạn và sao chép các dòng bit. Nếu tệp của bạn có luồng âm thanh và video, bạn có thể tắt luồng video với -vn.


Đây là một lớp lót, bạn chỉ cần cài đặt RubyFFmpeg :

ruby -e '(0..4500).step(300) { |x| system "ffmpeg -ss #{x} -i in.m4a -c copy -t 300 out-#{x}.m4a"}'

Đơn giản chỉ cần thực hiện trong cùng một thư mục nơi in.m4alà. Nó sẽ sao chép dòng bit âm thanh, vì vậy việc thực hiện việc này có thể sẽ mất ít hơn vài giây.

Giải thích:

  • 4800 giây là độ dài của tệp âm thanh (80 phút × 60 giây), vì vậy lần phân tách cuối cùng của chúng tôi là 4500 (4800 - 300 giây).
  • Chúng tôi đi từ 0 đến 4500 và chúng tôi chia ra cứ sau 300 giây (5 phút × 60 giây).
  • FFmpeg sẽ bắt đầu tại thời điểm được chỉ định bởi -ss
  • Và nó sẽ sao chép theo thời gian được chỉ định bởi -t
  • Nó sẽ ghi một số tệp đầu ra được gọi out-<x>.mp4, <x>thời gian bắt đầu tính bằng giây.

Cảm ơn! Là lệnh của bạn cho UNIX, hay nó cũng hoạt động trên Windows? Tôi có cài đặt Cygwin, vì vậy nó không thành vấn đề, nhưng chỉ cần tự hỏi. Tôi sẽ thử nó khi tôi về nhà.
Andrew Cheong

Điều này thực sự hoạt động trên Linux (và Unix đã cài đặt Ruby) và nó cũng hoạt động trên Windows - bạn chỉ cần Ruby và FFmpeg, nhưng bạn sẽ không cần Cygwin cho điều đó. Cũng có Ruby InstallerFFmpeg thực thi cho Windows. Bây giờ, lệnh FFmpeg có thể được tự động hóa mà không cần Ruby, sử dụng các tệp bó Windows hoặc PowerShell, nhưng tôi không phải là người dùng Windows, vì vậy đó là lý do tôi lấy Ruby (vì nó đi kèm với Linux và OS X). Có lẽ ai đó có kinh nghiệm hàng loạt Windows có thể viết lại lệnh Ruby ở trên?
slhck

Tôi có Cygwin vì tôi không thể quen với dòng lệnh Windows. Tôi nghĩ rằng tôi đã cài đặt ruby ​​và ffmpeg ở đó, vì vậy tôi có thể sử dụng lệnh của bạn. Nhưng vâng, một phiên bản Windows có thể giúp người khác xem câu hỏi này. +1 cho bây giờ; sẽ chấp nhận khi tôi thử nó.
Andrew Cheong

2
Nếu, giống như tôi, tệp m4a của bạn bao gồm một luồng video (trong trường hợp của tôi là một hình ảnh duy nhất) thì bạn cần thêm công -vntắc để chỉ chọn luồng âm thanh. Nếu bạn muốn giữ luồng video, bạn cần xuất ra tệp có phần mở rộng .mp4.
Nhà thờ Rob

2

Tôi đã tìm kiếm một giải pháp cho điều này bản thân mình. Cách dễ nhất tôi tìm thấy để làm điều này là thông qua MP4Box :

mp4box -split 300 infile.m4a

Trong đó "300" là thời gian tính bằng giây. MP4Box sẽ tự động ghi các tập tin đầu ra được đánh số.

(Bạn không cần phải cài đặt toàn bộ ứng dụng GPAC lớn. Đây là các tệp bạn có thể trích xuất từ ​​kho lưu trữ để nó hoạt động: js.dll; libeay32.dll; libgpac.dll; MP4Box.exe; ssleay32.dll)


2

Đã được một thời gian kể từ khi câu hỏi này được hỏi, nhưng sau khi tìm hiểu về Ruby và ffmpeg, tôi quyết định phải có một cách dễ dàng hơn để làm điều này trong Windows, và tôi thấy có.

Tải xuống và cài đặt Audacity

Tạo một tệp văn bản ở đâu đó bạn có thể tìm thấy nó và dán chuỗi sau vào đó: (khoảng thời gian 300 giây, tức là 5 phút, 10 phút sẽ là 600 khoảng, v.v ...)

0       300  
300     600  
600     900  
900     1200  
1200    1500  
1500    1800  
1800    2100  
2100    2400  
2400    2700  
2700    3000  
3000    3300  
3300    3600  
3600    3900  
3900    4200  
4200    4500  
4500    4800  
4800    5100  
5100    5400  
5400    5700  
5700    6000  
6000    6300  
6300    6600  
6600    6900  
6900    7200  
7200    7500  
7500    7800  
7800    8100  
8100    8400  
8400    8700  
8700    9000  
9000    9300  
9300    9600  
9600    9900  
9900    10200  
10200   10500  
10500   10800  
10800   11100  
11100   11400  
11400   11700  
11700   12000  
12000   12300  
12300   12600  
12600   12900  
12900   13200  
13200   13500  
13500   13800  
13800   14100  
14100   14400  
14400   14700  
14700   15000  

Chỉ cần đảm bảo rằng số lượng khoảng thời gian lớn hơn tổng độ dài của tệp âm thanh của bạn, tôi đã tạo cái này kéo dài hơn ba giờ, rất lâu cho nhu cầu của tôi, thêm vào đó cho phù hợp với nhu cầu của bạn.

Nhập tệp âm thanh vào Audacity và thực hiện bất kỳ cân bằng nào và bất kỳ chỉnh sửa nào bạn muốn, sau đó nhấp vào tệp> nhãn> nhập nhãn

Chọn tệp văn bản của bạn, sau đó chọn bản nhạc nhãn và bản âm thanh cùng một lúc và nhấp vào tệp> Xuất nhiều.

Thay đổi kiểu tệp bạn muốn xuất sang và điều chỉnh cài đặt, sau đó chọn thư mục đích.

Tôi luôn thay đổi kiểu đánh số thành Đánh số sau Tiền tố tên tệp và nhập tên tệp tôi muốn trong hộp và chương trình sẽ thêm số, nhấn Xuất và viola!


-1

Tải xuống Audacity - Đây là một công cụ âm thanh miễn phí có thể làm chính xác những gì bạn cần và hoàn toàn miễn phí và dễ sử dụng. http://audacity.sourceforge.net/


2
Có cách nào để Audacity tự động làm việc này không? Tôi sẽ không muốn tự cắt nhiều tệp thành 16 mảnh bằng cách chọn các mảnh 5 phút bằng chuột, cắt chúng, vào menu, lưu tệp, et cetera.
slhck

Tôi đã có Audacity, vì vậy nếu có cách tự động, vui lòng cho tôi biết!
Andrew Cheong
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.