Bir ses dosyasını belirtilen uzunlukta parçalara bölme


16

Birkaç uzun ses dosyam var (her biri 80 dakika; m4a) ve 5- veya 10 dakikalık parçalara bölünmesini istiyorum.

Bir ses dosyasını uzun duraklamalarda, tonlarda vb. Bölmek için birçok soru görüyorum, ancak bu basit işlemle ilgili bir tane bulamıyorum. Bunu yapmanın basit bir yolunu bilen var mı?

Elbette, otomatik bir şey ve komut satırı iyidir - hatta tercih edilir.

Şimdiden teşekkürler!

Yanıtlar:


20

Son ffmpeg ile ( buradan statik bir yapı indirin ):

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

Bu, segment muxer'ı kullanır ve bit akışlarını kopyalar. Dosyanızda ses ve video akışları varsa, video akışını ile devre dışı bırakabilirsiniz -vn.


İşte bir astar, sadece Ruby ve FFmpeg'e ihtiyacınız var :

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

Bunu aynı klasörde yürütün in.m4a. Ses bit akışını kopyalayacaktır, bu nedenle bu işlemin yürütülmesi muhtemelen birkaç saniyeden daha kısa sürer.

Açıklamak için:

  • 4800 saniye ses dosyasının uzunluğudur (80 dakika × 60 saniye), bu nedenle son bölümümüz 4500'dür (4800 - 300 saniye).
  • 0'dan 4500'e gidiyoruz ve her 300 saniyede bir bölünüyoruz (5dk × 60s).
  • FFmpeg tarafından belirtilen zamanda başlayacaktır -ss
  • Ve tarafından belirtilen süre boyunca kopyalanır -t
  • Bu adlandırılan çeşitli çıkış dosyaları yazacağım out-<x>.mp4, <x>saniye cinsinden başlangıç zamanıdır.

Teşekkürler! UNIX için komutunuz mu yoksa Windows'ta da çalışıyor mu? Bir Cygwin kurulumum var, bu yüzden önemli değil, sadece merak ediyorum. Eve geldiğimde deneyeceğim.
Andrew Cheong

Bu yerel olarak Linux'ta (ve Ruby'nin yüklü olduğu Unix'lerde) çalışır ve Windows'ta da çalışmalıdır - sadece Ruby ve FFmpeg'e ihtiyacınız vardır, ancak bunun için Cygwin'e ihtiyacınız yoktur. Orada Ruby Installer ve FFmpeg yürütülebilir Windows için de. Şimdi, FFmpeg komutu Windows toplu iş dosyaları veya PowerShell kullanılarak Ruby olmadan otomatikleştirilebilir, ancak Windows kullanıcısı değilim, bu yüzden Ruby'yi aldım (çünkü Linux ve OS X ile birlikte geliyor). Belki Windows toplu iş deneyimi olan biri yukarıdaki Ruby komutunu yeniden yazabilir?
slhck

Cygwin'im var çünkü Windows komut satırına alışamıyorum. Zaten orada yakut ve ffmpeg yüklü olduğunu düşünüyorum, bu yüzden komutunuzu kullanabilmeliyim. Ancak evet, bir Windows sürümü bu soruyu görüntüleyen başka birine yardımcı olabilir. Şimdilik +1; denediğimde kabul edecek.
Andrew Cheong

2
Benim gibi, m4a dosyanız bir video akışı içeriyorsa (benim durumumda, tek bir görüntü), o zaman -vnsadece ses akışını seçmek için anahtarı eklemeniz gerekir . Video akışını korumak istiyorsanız, .mp4 uzantılı bir dosyaya çıkış yapmanız gerekir.
Rob Church

2

Bunun için kendime bir çözüm arıyordum. Bunu yapmak için buldum en kolay yolu MP4Box üzerinden :

mp4box -split 300 infile.m4a

Burada "300", saniye cinsinden zamandır. MP4Box otomatik olarak numaralı çıktı dosyalarını yazacaktır.

(Tüm büyük GPAC uygulamasını yüklemenize gerek yoktur. Çalışması için arşivden çıkarabileceğiniz dosyalar şunlardır: js.dll; libeay32.dll; libgpac.dll; MP4Box.exe; ssleay32.dll)


2

Bu soru sorulduğundan beri bir süredir, ama Ruby ve ffmpeg ile dalga geçtikten sonra, bunu Windows içinde yapmanın daha kolay bir yolu olması gerektiğine karar verdim ve orada olduğunu buldum.

Audacity'i indirin ve yükleyin

Bulabileceğiniz bir yerde bir metin dosyası oluşturun ve şu dizeyi yapıştırın: (300 saniye aralıklarla, yani 5 dakika, 10 dakika 600 aralık vb.)

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  

Sadece aralıkların sayısının ses dosyalarınızın toplam uzunluğundan daha büyük olduğundan emin olun, üç saatten fazla süren, ihtiyaçlarım için bolca uzun süren, ihtiyaçlarınızı karşılamak için daha fazla ekleyin.

Ses dosyasını Audacity'ye aktarın ve dengelemeyi ve istediğiniz diğer düzenlemeleri yapın, ardından dosya> etiketler> etiketleri içe aktar'a tıklayın

Metin dosyanızı seçin, ardından etiket parçasını ve ses parçasını aynı anda seçin ve dosya> Birden Çok Dışa Aktar'ı tıklayın.

Dışa aktarmak istediğiniz dosya türünü değiştirin ve ayarları değiştirin, ardından hedef klasörü seçin.

Numaralandırma desenini her zaman Dosya Adı Önekinden Sonra Numaralandırma olarak değiştiriyorum ve kutuya istediğim dosya adını yazıyorum ve program sayıları ekleyecek, Ver ve viyola!


-1

Audacity'yi indirin - Tam olarak ihtiyacınız olanı yapabileceğiniz ücretsiz bir ses aracıdır ve tamamen ücretsiz ve kullanımı kolaydır. http://audacity.sourceforge.net/


2
Audacity'nin bunu otomatik olarak yapmasının bir yolu var mı? Faremle 5 dakikalık parçaları seçerek, kesip menüye gitmek, dosyaları kaydetmek vb. İle her biri 16 parçaya birden fazla dosya elle kesmek istemezdim.
14'te slhck

Audacity zaten var, bu yüzden otomatik bir yol varsa, lütfen bana bildirin!
Andrew Cheong
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.