Orijinal yazımda tam olarak anlattığımı gerçekleştirecek bir AppleScript yazdım. ffmpeg
Bir önceki cevabında Allan tarafından önerildiği gibi faydalanır .
Not: ffmpeg
Bilgisayarınıza henüz yüklemediyseniz, komut dosyam değersizdir.
ffmpeg
Homebrew 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 ffmpeg
da, 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 ffmpeg
yeniden 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.
-t
Son 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 ffmpeg
belgelerden 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 .