Bagaimana saya bisa membuat ffmpeg menjadi lebih tenang / kurang bertele-tele?


117

Secara default ffmpeg mengirimkan seluruh pesan lotta ke stderr: ketika dibangun, bagaimana dibangun, codec, dll, dll, dll.

Bagaimana saya bisa membuatnya lebih tenang?

Saya sudah mencoba -v 0(dan -v 10karena dokumentasi hanya dengan malu-malu mengatakan Set the logging verbosity level.tanpa indikasi apa kisaran input) - masih tidak sepi.

Saya sudah mencoba -loglevel quiet- masih belum tenang.

Saya harus menyebutkan, saya mencari "lebih tenang," bukan "tidak pernah keluaran". Jika ada kesalahan saya ingin melihatnya, tetapi saya tidak perlu mendengar tentang konfigurasi ffmpeg setiap. tunggal. waktu.


14
ffmpeg jelas merupakan salah satu dari mereka untuk pengembang, oleh jenis program pengembang.
digitxp

1
Gunakan -loglevel quiet -stats.
287352

Atau -loglevel error -statsakan menampilkan kesalahan "termasuk yang dapat dipulihkan dari" dan menggunakan -statsmemastikan pencetakan kemajuan pengkodean dan statistik. Mengubah -logleveldari errormenjadi warningsedikit lebih bertele-tele tetapi pas nyaman pada satu halaman terminal.
Mattst

Jawaban:



117

Saya belum mengujinya, tetapi saya melihat opsi di halaman manual untuk melakukan:

ffmpeg -loglevel panic [rest of your ffmpeg stuff]

Seharusnya membuatnya jadi hanya kesalahan serius yang dicatat, secara teori


5
Bahkan dengan -loglevel panic, bagi saya itu hanya mengurangi sedikit output - masih mencetak informasi versi, pemetaan aliran, opsi konfigurasi, (dan bahkan kemajuan informasi!) .... ada ide? Saya mungkin harus menyebutkan bahwa ini adalah versi yang dikompilasi sendiri dari svn trunk terbaru.
codeling

7
pipa itu ke ember bit:> / dev / null 2> & 1
rogerdpack

2
@rogerdpack yang akan berfungsi untuk sebagian besar program, tetapi ffmpeg menempatkan semua output teksnya ke stderr, bukan stdout (ini berfungsi agar Anda dapat menyalurkan output encoder ke program lain), jadi mengarahkan ulang stdout ke / dev / null wouldn ' t melakukan sesuatu yang bermanfaat.
evilsoup

20
Menggunakan -hide_bannerselain mengurangi tingkat verbositas akan menjadi kompromi yang baik.
Makaveli84

5
Selain semua yang telah dikatakan, -nostats akan menonaktifkan progres output.
Ely

56

Di sini Anda memiliki loglevels dari kode sumber (FFmpeg versi 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
Meskipun URL cenderung berubah dari waktu ke waktu, ada baiknya memasukkannya juga sebagai sumber jawaban Anda. Sebagai contoh, saat ini ini didokumentasikan di ffmpeg.org/ffmpeg.html#toc-Generic-options dan pembaca akan tahu ke mana harus mencari dalam dokumen bahkan jika URL ini berubah.
Fr0zenFyr

19

Saya telah menggunakan dengan sukses hal berikut (Versi FFMPEG terbaru saat penulisan):

-nostats -loglevel 0

Maka itu benar-benar tenang dalam skenario penggunaan saya.


puas dengan solusi ini di ffmpeg 3.2
Bernhard Döbler

-nostatsadalah apa yang saya cari. Ini akan menekan output progres (mis. Berguna dalam konteks non-terminal).
Jox

Sedihnya -nostatsmenyembunyikan spanduk juga. ffmpeg membutuhkan -show_banneropsi;)
mgutt

18
ffmpeg -loglevel error [other commands]

Ini menyembunyikan spanduk dan hanya menampilkan kesalahan. Gunakan -loglevel warningjika Anda ingin melihat peringatan.

Diuji dalam Ffmpeg 3.0.2.

Dari dokumentasi :

-loglevel [repeat +] loglevel | -v [repeat +] loglevel

Atur level logging yang digunakan oleh perpustakaan. Menambahkan "repeat +" menunjukkan bahwa output log yang diulang tidak boleh dikompres ke baris pertama dan baris "Pesan terakhir diulang n kali" akan dihilangkan. "repeat" juga bisa digunakan sendiri. Jika "repeat" digunakan sendiri, dan tanpa set loglevel sebelumnya, loglevel default akan digunakan. Jika beberapa parameter loglevel diberikan, menggunakan 'repeat' tidak akan mengubah loglevel. loglevel adalah string atau angka yang mengandung salah satu dari nilai berikut:

'tenang, -8'

Tunjukkan apa-apa sama sekali; diam.

'panik, 0'

Hanya tampilkan kesalahan fatal yang dapat menyebabkan proses macet, seperti dan menyatakan kegagalan. Saat ini tidak digunakan untuk apa pun.

'fatal, 8'

Hanya tampilkan kesalahan fatal. Ini adalah kesalahan setelah mana proses sama sekali tidak dapat dilanjutkan setelah.

'kesalahan, 16'

Tampilkan semua kesalahan, termasuk yang dapat dipulihkan.

'peringatan, 24'

Tampilkan semua peringatan dan kesalahan. Pesan apa pun yang terkait dengan peristiwa yang mungkin salah atau tidak terduga akan ditampilkan.

'info, 32'

Tampilkan pesan informatif selama pemrosesan. Ini di samping peringatan dan kesalahan. Ini adalah nilai default.

'verbose, 40'

Sama seperti info, kecuali lebih banyak verbose.

'debug, 48'

Tampilkan semuanya, termasuk informasi debug.

'jejak, 56'

Secara default program log ke stderr, jika pewarnaan didukung oleh terminal, warna digunakan untuk menandai kesalahan dan peringatan. Pewarnaan log dapat dinonaktifkan pengaturan variabel lingkungan AV_LOG_FORCE_NOCOLORatau NO_COLOR, atau dapat dipaksa pengaturan variabel lingkungan AV_LOG_FORCE_COLOR. Penggunaan variabel lingkungan NO_COLORsudah tidak digunakan lagi dan akan dibuang dalam versi FFmpeg berikut.


5

Berikut ini berfungsi untuk saya di macOS:

ffmpeg -v quiet

atau hanya untuk melihat perkembangannya:

ffmpeg -v quiet -stats

Itulah tepatnya yang saya cari. Saya menggunakan ffmpeg dalam sebuah skrip dan perlu melihat bahwa ini berfungsi, tetapi tidak memerlukan semua info tentang input dan output stream dll.
stib

3

Anda dapat menyalurkan stderr melalui grep. Misalnya, jika Anda ingin menghapus informasi konfigurasi, Anda dapat melakukannya seperti ini:

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

Saya percaya itu mungkin perlu ffmpeg … 2>&1 >/dev/null | grep ….
Scott

0

Ini sedikit murah untuk melakukannya, tetapi menambahkan >/dev/null 2>&1adalah cara yang pasti untuk menjaga ffmpeg diam di shell.

Contoh

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

Info lebih lanjut tentang output bash


14
Kecuali bahwa ffmpeg selangkah lebih maju dari Anda, dan menampilkan informasi konfigurasi dan kesalahan aktual ke stderr.
blahdiblah

0

ffmpeg -loglevel error -hide_banner -nostats

Hanya kesalahannya, tidak ada yang lain.

Saya pribadi suka yang terbaik ini;

ffmpeg -loglevel warning -hide_banner -stats

Ini hanya memberikan peringatan dan kesalahan, tetapi juga menunjukkan kemajuan pekerjaan.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.