Ffmpeg'in daha sessiz / daha az ayrıntılı olmasını nasıl sağlayabilirim?


117

Varsayılan olarak ffmpeg stderr'e tüm lotta mesajlar gönderir: ne zaman, nasıl yapılır, kodekler, vb.

Bunu nasıl daha sessiz yapabilirim?

Ben denedim -v 0(ve -v 10belgeler sadece utanç verici bir şekilde Set the logging verbosity level.girdilerin aralığının ne olduğuna dair bir gösterge olmadan söylediği için) - hala sessiz değil.

Denedim -loglevel quiet- hala sessiz değil.

Söylemeliyim ki, "hiç çıktı" değil "sessiz" i arıyorum. Bir hata varsa onu görmek istiyorum, ancak ffmpeg'in yapılandırmasını duymama gerek yok. tek. saati.


14
ffmpeg kesinlikle geliştiricilerin program türlerinin geliştiricilerinden biridir.
digitxp

1
Kullanın -loglevel quiet -stats.
fredsbend

Alternatif olarak -loglevel error -stats"kurtarılabilir olanlar dahil" hatalarını gösterecek ve kullanma -statskodlama ilerlemesinin ve istatistik satırının yazdırılmasını sağlar. 'Dan -loglevel' ye errorgeçmek warningbiraz daha ayrıntılı ama bir terminal sayfasına rahatça uyuyor.
matt

Yanıtlar:



117

Test etmedim, ancak man sayfasında yapmam gereken bir seçenek görüyorum:

ffmpeg -loglevel panic [rest of your ffmpeg stuff]

Bunu yapmalı, teoride sadece ciddi hatalar kaydedildi


5
Yine de -loglevel panic, benim için sadece çıktıyı biraz düşürüyor - hala sürüm bilgilerini, akış haritalandırmayı, yapılandırma seçeneklerini (ve hatta ilerleme bilgilerini!) Yazdırıyor… herhangi bir fikriniz var mı? Bunun en yeni svn bagajından derlenmiş bir sürüm olduğunu söylemem gerekebilir.
12'de codeling

7
bit kovasına yerleştirin:> / dev / null 2> & 1
rogerdpack

2
Çoğu program için işe yarayan @rogerdpack, ancak ffmpeg tüm metin çıktısını stdout yerine stderr komutuna koyar (bunu yapar, kodlayıcı çıktısını diğer programlara yönlendirebilmenizi sağlar), böylece stdout komutunu / dev / null olur ' yararlı bir şey yapmayın.
kötülük

20
-hide_bannerKısaltılmış ayrıntı seviyesine ek olarak kullanılması iyi bir uzlaşma olabilir.
Makaveli84

5
Söylenen her şeye ek olarak, -nostats ilerleme çıktısını devre dışı bırakacaktır.
Ely

56

Burada kaynak kodundan loglevels var (FFmpeg sürüm 0.10.2.git)

const struct { const char *name; int level; } log_levels[] = {
        { "quiet"  , AV_LOG_QUIET   },
        { "panic"  , AV_LOG_PANIC   },
        { "fatal"  , AV_LOG_FATAL   },
        { "error"  , AV_LOG_ERROR   },
        { "warning", AV_LOG_WARNING },
        { "info"   , AV_LOG_INFO    },
        { "verbose", AV_LOG_VERBOSE },
        { "debug"  , AV_LOG_DEBUG   },
    };

5
URL'ler zaman içinde değişme eğiliminde olsalar da, onları yanıtınızın kaynağı olarak dahil etmek de iyidir. Örneğin, şu anda bu ffmpeg.org/ffmpeg.html#toc-Generic-options adresinde belgelenmiştir ve okuyucu bu URL değişse bile belgelerde nereye bakılacağını bilecektir.
Fr0zenFyr

19

Aşağıdakileri başarı ile kullandım (yazı sırasındaki en yeni FFMPEG Sürümü):

-nostats -loglevel 0

O zaman kullanım senaryomda kesinlikle sessiz.


ffmpeg 3.2'deki bu çözümden memnun oldu
Bernhard Döbler

-nostatsaradığım şey buydu. İlerleme çıktısını bastırır (örneğin terminal olmayan bir bağlamda faydalıdır).
jox,

Ne yazık ki -nostatspankartı da gizler. ffmpeg bir -show_bannerseçeneğe ihtiyaç duyuyor ;)
mgutt

18
ffmpeg -loglevel error [other commands]

Bu, pankartı gizler ve yalnızca hataları görüntüler. -loglevel warningUyarıları görmek istiyorsanız kullanın .

Ffmpeg 3.0.2'de test edilmiştir.

Gönderen belgeler :

-loglevel [tekrarla +] loglevel | -v [tekrar +] günlük düzeyi

Kütüphane tarafından kullanılan kayıt seviyesini ayarlayın. "Repeat +" eklemek, tekrarlanan log çıktısının ilk satıra sıkıştırılmaması gerektiğini ve "Son defa tekrarlanan n mesaj" satırının çıkarılacağını belirtir. "tekrar" tek başına da kullanılabilir. Eğer "tekrar" tek başına kullanılıyorsa ve önceden belirlenmiş bir loglevel ayarlanmamışsa, varsayılan loglevel kullanılacaktır. Birden fazla loglevel parametresi verilirse, 'repeat' kullanımı loglevel'i değiştirmez. loglevel, aşağıdaki değerlerden birini içeren bir dize veya sayıdır:

'sessiz, -8'

Hiçbir şey gösterme; sessiz ol.

'panik, 0'

Yalnızca sürecin çökmesine neden olabilecek ve başarısızlık iddiası gibi ölümcül hataları gösterin. Bu şu anda hiçbir şey için kullanılmamaktadır.

'ölümcül, 8'

Sadece ölümcül hataları göster. Bunlar, sonrasında işlemin kesinlikle devam edemediği hatalardır.

'hata, 16'

Kurtarılabilecekler de dahil olmak üzere tüm hataları göster.

'uyarı, 24'

Tüm uyarı ve hataları göster. Muhtemel yanlış veya beklenmeyen olaylarla ilgili herhangi bir mesaj gösterilecektir.

'bilgi, 32'

İşleme sırasında bilgilendirici mesajları göster. Bu uyarılara ve hatalara ek olarak. Bu varsayılan değerdir.

'ayrıntılı, 40'

infoDaha ayrıntılı olanlarla aynı .

'hata ayıklama, 48'

Hata ayıklama bilgileri dahil, her şeyi gösterin.

'iz, 56'

Program varsayılan olarak stderr'e giriş yapar, eğer renklendirme terminal tarafından destekleniyorsa, hataları ve uyarıları işaretlemek için renkler kullanılır. Log değişkeni, ortam değişkenini ayarlayarak devre dışı bırakılabilir AV_LOG_FORCE_NOCOLORveya ortam değişkenini NO_COLORayarlamaya zorlanabilir AV_LOG_FORCE_COLOR. Ortam değişkeninin NO_COLORkullanımı kullanımdan kaldırılmıştır ve aşağıdaki FFmpeg sürümüne bırakılacaktır.


5

Aşağıdaki macOS benim için çalıştı:

ffmpeg -v quiet

veya yalnızca ilerlemeyi görmek için:

ffmpeg -v quiet -stats

Tam olarak aradığım şey buydu. Bir komut dosyasında ffmpeg kullanıyorum ve çalıştığını görmem gerekiyor, ancak girdi ve çıktı akışları hakkındaki tüm bilgilere gerek yok
stib

3

Stderr'i grep üzerinden geçirebilirsiniz. Örneğin, yapılandırma bilgilerini kaldırmak istiyorsanız, bunu aşağıdaki gibi yapabilirsiniz:

% ffmpeg -i infile.avi -s 640x480 outfile.avi >/dev/null 2>&1 | grep -v configuration:

Olması gerekebileceğine inanıyorum ffmpeg … 2>&1 >/dev/null | grep ….
Scott

0

Bu biraz daha ucuz, ancak ekleme >/dev/null 2>&1yapmak ffmpeg'i kabuğun içinde sessiz tutmanın kesin bir yoludur.

Örnek

ffmpeg -f x11grab -y -r 24 -s 800x600 -i :0.0+1366,100 -f oss -i /dev/dsp3 -sameq ./out.avi >/dev/null 2>&1

Bash çıkışı hakkında daha fazla bilgi


14
Bunun dışında ffmpeg sizden bir adım öndedir ve hem yapılandırma bilgisini hem de gerçek hataları stderr'e verir.
blahdiblah

0

ffmpeg -loglevel error -hide_banner -nostats

Sadece hatalar, başka bir şey yok.

Ben şahsen bunu en çok sevdim;

ffmpeg -loglevel warning -hide_banner -stats

Yalnızca uyarılar ve hatalar verir, aynı zamanda işin ilerlemesini gösterir.

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.