Çalma listesi önerilerinde geçiş süresini klibin son 2 saniyesinden ölçmek

这篇内容暂时只有 Türkçe 版本,以下是原文。

Kütüphanemde 2.400 civarı parça var, çoğu 128–320 kbps MP3 ve bir kısmı FLAC. Geçen ay öneri listelerini yeniden düzenlerken şunu fark ettim: parçaların büyük bölümünde son 2 saniye zaten sessizlik ya da fade-out kuyruğu. Yani “geçiş süresi” diye ölçtüğüm şey aslında kuyruğun kendisiydi; iki parça arasında gerçek bir kesme noktası hiç yoktu. 300 parçalık bir test listesinde bunu elle dinleyerek doğruladım, sadece 40 kadarında gerçek bir sert bitiş vardı.

Ölçümü şu şekilde yapıyorum: klibin son 2 saniyesini ffmpeg ile ayrı bir WAV’a alıp RMS’e bakıyorum, sonra eşiğin altında kalan kısmı kırpıyorum. Kullandığım iki komut:

ffmpeg -sseof -2 -i "$f" -af "astats=metadata=1:reset=1" -f null - 2>&1 | grep -i "rms level"
ffmpeg -sseof -2 -i "$f" -c:a pcm_s16le "${f%.*}_kuyruk.wav"

Sonra kuyruk WAV’ında silencedetect ile sessizliğin başladığı noktayı alıp geçiş süresini o noktaya kadar sayıyorum, dosyanın tamamını değil:

ffmpeg -i "${f%.*}_kuyruk.wav" -af silencedetect=noise=-45dB:d=0.3 -f null - 2>&1 | grep silence_start

Bunu yapmamın sebebi şu: öneri sırası, parçanın gerçek bitişine değil, duyulan bitişine göre kurulmalı. Fade-out’un ortasında geçiş yaparsanız kulakta kopukluk oluyor; kuyruğu tamamen atarsanız da sert biten parçalarda geçiş fazla ani kalıyor. Kırpma işlemi hesap maliyeti getiriyor: her parça için iki ffmpeg çağrısı ve bir WAV yazımı, 2.400 parçada tek seferlik bir tarama birkaç dakika sürüyor. Bunu kabul ediyorum çünkü sonuç dosyaya bağlı kalıyor, her öneri üretiminde yeniden hesaplamıyorum.

Nerede bozuluyor: canlı kayıtlarda ve uzun ambient parçalarda son 2 saniye gerçekten müziğin parçası; orada kırpma yanlış. -45 dB eşiği sessiz kayıtlarda kuyruğun tamamını yutuyor, gürültülü kayıtlarda ise hiç sessizlik bulamıyor. Kendi kütüphanemde bu yüzden FLAC’leri ayrı tutuyorum; aynı parçanın MP3 ve FLAC sürümü farklı kuyruk uzunluğu veriyor, ikisini aynı kimlikle işaretleyip tekrar saymıyorum. Bir de sseof bazı dosyalarda son 2 saniyeyi tam kesmiyor; süre çok kısaysa elle kontrol ediyorum.

Sizin kütüphanenizde son 2 saniye gerçekten müzik mi, yoksa benim gibi çoğunlukla kuyruk mu? Hangi eşikte kırpmayı bırakıyorsunuz?

0
赞同度 100% · 0 条评论 · 1 阅读

0 条评论

支持 Markdown · 回复会实时推送给对方

还没有评论,写下第一条。