Mac'te bir ses dosyasını tanımlanmış aralıklarla bölmenin kolay bir yolu var mı?


7

45 dakikalık bir ses (.m4a) dosyasına sahibim.

Her 2 dakikada bir bu ses dosyasını ayrı bir ses dosyasına bölmek istiyorum.

Böylece:

AudioFile1.m4a, orijinalAudioFile.m4a'nın [00:00] ile [02:00] arasında oluşturulur.

AudioFile2.m4a, orijinalAudioFile.m4a'nın [02:00] ile [04:00] arasında oluşturulur.

AudioFile3.m4a orijinalAudioFile.m4a'nın [04:00] ile [06:00] arasında oluşturulur.

...

ve bu kadar devam

AudioFile23.m4a, orijinalAudioFile.m4a'nın [44:00] ila [45:00] arasında oluşturulur.

İşte ek detaylar:

  • Elde edilen dosyaların dosya isimleri konusunda özel değilim.

  • Sonuçta ortaya çıkan dosyaların dosya türlerine özgü değilim (örneğin, .mp3 dosyaları olup olmadıkları ya da .m4a dosyaları olsunlar).

  • Bu, ortaya çıkan ses dosyalarının bir CD veya başka bir şeyde ustalaşacağı bir durum değildir. Sadece bir ses dosyasını belirli bir aralığa göre ayırmanın hızlı ve kullanışlı bir yolunu arıyorum. Ses kalitesindeki küçük bir kayıp çok fazla bir şey değil (ancak bu açıkça tercih edilmez).

  • OriginalAudioFile.m4a'nın işlem sırasında değiştirilmesini istemiyorum.

En önemli koşul, yöntemin kullanıcı için minimum zaman ve çaba gerektirmesidir.

Microsoft Windows'ta istediğimi elde etmek için çeşitli yöntemler var , ancak bu Mac'te yapılabilir mi?

Yanıtlar:


2

Ffmpeg kullanın . Homebrew ve MacPorts aracılığıyla edinilebilir, ancak önceden oluşturulmuş ikili dosyaları kullanmayı tercih ederim.

Sadece kafamın üstünden, basit bir şey yapabilirsin:

$ ffmpeg -i source_audio_file.mp3 -ss 0 -t 120 segment_1.mp3
$ ffmpeg -i source_audio_file.mp3 -ss 120 -t 240 segment_2.mp3
$ ffmpeg -i source_audio_file.mp3 -ss 240 -t 360 segment_3.mp3
.
.
.

Bunu bir komut dosyasına koymak çok zor olmaz


0

Orijinal yazımda tam olarak anlattığımı gerçekleştirecek bir AppleScript yazdım. ffmpegBir önceki cevabında Allan tarafından önerildiği gibi faydalanır .


Not: ffmpegBilgisayarınıza henüz yüklemediyseniz, komut dosyam değersizdir.

ffmpegHomebrew aracılığıyla yükledim . Homebrew kurulumu çok kolaydır; yol tariflerini bu sayfanın en üstünde bulabilirsiniz (resmi Web sitesi web sitesi).

Homebrew'u yükledikten sonra, sisteminize kurmak için bu satırları Terminal'de ayrı ayrı çalıştırın ffmpeg:

brew install ffmpeg
brew link ffmpeg

Artık senaryomu kullanabileceksiniz.


Kodumla ilgili notlar:

  • Bu benim amaçlarım için tamamen gerekli olmasa ffmpegda, kullanıcıya dosya isimleri, dosya türleri, bit hızı, çıktı dizini vb. Üzerinde tam kontrol sağlar.

  • Komut dosyamın belirli yönleri kişisel tercihlerime göre uyarlanmıştır (örneğin, çıkış dizini adındaki geçerli tarih dahil), bu nedenle kodu uygun gördüğünüz şekilde değiştirin.

  • Bazı potansiyel hataları yakalamak için bazı hata işlemelerini dahil etmek için elimden geleni yaptım, ama bu kesinlikle her şey dahil olmaktan uzak.

  • Bu ses bölme görevini sık sık yapmak zorunda olduğumu düşünmüyorum, bu yüzden Kod Düzenleyicide oluşturulan basit bir .scpt dosyası benim için sorun değil.

    • Bu betiği başlatılabilir, bağımsız bir uygulamaya dönüştürmeyi tercih ederseniz, Automator'da kolayca yapabilirsiniz ( "AppleScript Çalıştır" eylemini iş akışınıza ekleyerek ve tüm kodu yapıştırarak).

      • Bu durumda, uygulamayı uygulamayı başlatmak için kullanıcı basit bir şekilde kaynak ses dosyasını uygulama simgesine sürükleyebilecek şekilde ayarlamak isteyebilirsiniz (bu dosyanın dosya yolunu bir iletişim kutusunda vermek yerine).
  • İstenirse, sonuçta elde edilen dosyalar için bir VBR (değişken bit hızı) kodlama seçeneği programlamak tamamen mümkündür. Bunu yapmamayı seçtim çünkü amaçlarım için bu yeteneğe özellikle ihtiyaç duyulmuyor. Tüm ses formatları VBR'de kodlanamadığından (sadece Opus, Vorbis, MP3, WMA ve AAC ses dosyaları olabilir) yazmak biraz karmaşık olurdu.

  • Son olarak, kodun en az bazı eksiklikler, kör noktalar ve / veya hatalar içerdiğinden% 100 eminim, bu yüzden şimdiden özür dilerim.


Komut dosyasının tamamını doğrudan bu cevaba yapıştıramıyorum. Kod uzunluğu, Stack Exchange cevapları için maksimum karakter sınırını aşıyor.

Kodun tamamını bu Pastebin sayfasından görüntüleyebilir ve indirebilirsiniz .

Bağlantılı betiği kullanarak kullanıcı, herhangi bir ses dosyasını tanımlanmış bir aralığa dayalı olarak sayısız dosyaya sezgisel olarak bölerek kullanıcıdan minimum zaman ve çaba harcayabilir.

Kullanıcı kaynak bit hızını sonuçta ortaya çıkan dosyalar için bit oranı olarak seçmediğinde, komut dosyasının biraz zaman alabileceğini unutmayın. Bunun nedeni ffmpegyeniden kodlamada yavaş olmasıdır. Ancak, neyse ki, kullanıcı basitçe ayarlayabilir ve dikkatlerini tamamlandıkça başka bir şeye yönlendirebilir.


Allan'ın cevaplarında sağladığı iki satırın biçiminin yanlış olduğunu unutmayın.

AppleScript dosyamdaki birkaç saat sorun giderme sonrasında, AppleScript dosyamın sorun olmadığını anladım.

-tSon ses damgasını değil, sonuçta ortaya çıkan ses dosyasının süresini yansıtır .

Allan'ın örnek kodu şunları okumalıdır:

$ ffmpeg -i source_audio_file.mp3 -ss 0 -t 120 segment_1.mp3
$ ffmpeg -i source_audio_file.mp3 -ss 120 -t 120 segment_2.mp3
$ ffmpeg -i source_audio_file.mp3 -ss 240 -t 120 segment_3.mp3

İşte ffmpegbelgelerden ilgili bölüm :

-t süresi (giriş / çıkış)

(Bir çıkış url öncesi) bir çıkış seçeneği olarak kullanıldığında, süresi ulaştıktan sonra çıktısını yazma durdurmak süresi .


-2
find ./ -type f -exec ffmpeg -i {} -f segment -segment_time 300 -c copy {}%03d.mp3 \; -exec rm {} \;

3
Burada, ffmpeg bağımlılığı (çoğu insanın henüz yüklemeyeceği bir şey) dahil olmak üzere pek çok farklı şey var. Bu komutun ne yaptığını ve nasıl yapılacağını açıklayabilir misiniz?
JMY1000,

2
Ayrıca, bu nasıl bir ses dosyasını 23 parçaya böler? Ve neden findbu bir dosyayı bölmek için gerekli?
yokuş yukarı
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.