ffmpeg loudnorm 2 satır tek satırda


1

TL; ffpmpeg kullanarak tek satırda 2 geçişli bir loudnorm örneği (ffmpeg-normalize, tek iş parçacığı / işlemdir ve diğer ffmpeg seçeneklerini birleştiremiyorum)

Yüksek sesle ilgili pek fazla örnek değil çünkü ffmpeg için nispeten yeni, 10 yıldır ffmpeg kullanıyorum. Ben loudnorm için yeni

Okudum:

http://k.ylo.ph/2016/04/04/loudnorm.html

Ffmpeg kullanarak sesi nasıl normalleştiririm?

Hangi faydalıdır. ancak, birden fazla ffmpeg girişini 1'de birleştirmeye çalışıyorum. ffmpeg-normalize (python) kütüphanesi kullanarak sizi de tek bir iş parçacığı / süreci ile sınırlandırıyor. hangisi yavaş

2 ffmpeg x264 geçişi için yapabilecekleriniz:

ffmpeg -y -i $FILE -c:v libx264 -b:v 4000k -pass 1 -c:a aac -b:a 256k -f mkv /dev/null && \
ffmpeg -i $FILE -c:v libx264 -b:v 4000k -pass 2 -c:a aac -b:a 256k $FILE.mkv

Gerçi yüksek sesle var gibi görünmüyor. Tek ve 2 geçiş ile bunu yapmanın bir yolunu görmüyorum?

şu anda videoyu kodluyorum, sonra sesi normalleştiriyorum ve nihayet varsa dosyalardan meta veri ve bölüm verilerini çıkartıyorum (varsa da olmasa da)

bu, 3 adet dosya atma dosyası yaratır (orijinali içeren)

tek bir hatta yüksek sesle konuşabilmek bana başka şeyler eklememe de yardımcı olacak, aynı zamanda 2 adet x264 ve aynı anda 2 adet loudnorm yapmak mümkün mü? olduğu gibi ikisini işliyor ve sonra ikinci geçişte birleştiriyorlar.

Mümkünse bunların örneklerini istiyorum ve şeylerle bağlantılarını değil. Google bağlantıları kendi başıma yapabilir ve birkaç hafta alabilirim. Teşekkürler


İlk gürültülü geçiş, ses verilerini araştırmak ve akış istatistiklerini yazdırmak içindir. Bu değerlerden bazılarının yakalanması ve 2. geçişte filtreye beslenmesi gerekir. Onları bir dosyadan okuyamaz (2 geçişli kodlamada olduğu gibi), bu nedenle kodlama komutlarınızın karşılığı yoktur. X264 ve loudnorm'ın ilk geçişini birleştirebilirsiniz. Ses yüksekliği normal değerlerini yakalayın, bunları 2.2x komutunu da veren 2. pass komutunda kullanın. İlk geçişte bir dosyaya yazmanıza gerek yoktur.
Gyan

Yanıtlar:


2

Sadece ffmpeg ile iki geçişli bir loudnorm filtresi otomatik olarak çalıştırmanın bir yolu yoktur, ancak ffmpeg-normalizeprogramı sizin için yapmak için kullanabilirsiniz. Bahsettiğinizi biliyorum, ancak aynı anda videoyu kodlamak istiyorsanız - özellikle iki geçişle - o zaman bir ara dosyayla çalışmak zorunda kalacaksınız, yani:

  • İlk çalıştırma: ffmpeg-normalizeorijinal videoda orijinal video akışının kopyalanması.
  • İkinci çalıştırma: normalleştirilmiş ses dosyasının veya orijinal dosyanın video akışının x264 kodlaması (çok iş parçacıklı).

Ulaşmak istediğiniz şey sadece ffmpeg tarafından yapılamaz. Kendi çözümünüzü programlamanız gerekir, özellikle de birkaç dosyayı paralel olarak işlemek istiyorsanız. Tek bir ffmpeg çalışması yalnızca bir iş parçacığı kullanıyor olsa bile, bu kesinlikle süreci hızlandırır.

Başlangıç ​​noktası olarak, FFmpeg deposunda daha basit bir Ruby betiği de vardır . İlk çalıştırmanın istatistiklerini okuyarak iki loudnorm geçişi gerçekleştirir. Ayrıca, çoklu okuma ile iki geçişli x264 kodlamasını çalıştırmak için, yani ilk çalıştırmada ilk x264 geçişini, ikinci çalıştırmada ikinciyi çalıştırmak için değiştirebilirsiniz:

İlk geçiş:

ffmpeg -y -i $FILE -c:v libx264 -b:v 4000k -pass 1 -filter:a loudnorm=print_format=json -f mkv /dev/null

Dan JSON istatistiklerini oku loudnorm(örneğin Python'un JSON ayrıştırıcı ya da benzeri herhangi bir başka araç kullanarak çıkışı grepya awk), sonra ikinci kere geçirilir:

ffmpeg -i $FILE -c:v libx264 -b:v 4000k -pass 2 -filter:a loudnorm=linear=true:measured_I=$input_i:measured_LRA=$input_lra:measured_tp=$input_tp:measured_thresh=$input_thresh -c:a aac -b:a 256k $FILE.mkv

Nerede $input_i, $input_lra, $input_tp, $input_threshdeğerler ilk aşamada elde okunur.

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.