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.

blahdiblah
sumber
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:

66

ffmpeg -hide_banner -loglevel panic

Ini disinggung dalam komentar di bawah jawaban saat ini.

Opsi -hide_bannerini diperkenalkan pada akhir 2013 - https://lists.ffmpeg.org/pipermail/ffmpeg-devel/2013-December/152349.html )

Peluk
sumber
7
ini seharusnya jawaban yang diterima
NineCattoRules
4
Jawaban terbaik, namun opsi -show-banner akan lebih baik daripada menyembunyikannya
hetepeperfan
1
Mungkin menambahkan -nostatsjuga?
Mikko Rantalainen
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

Alec
sumber
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   },
    };
surco
sumber
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.

Michael
sumber
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.

qubodup
sumber
5

Berikut ini berfungsi untuk saya di macOS:

ffmpeg -v quiet

atau hanya untuk melihat perkembangannya:

ffmpeg -v quiet -stats
morja
sumber
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:
LittleRed
sumber
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

Koodough
sumber
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.

Roel Van de Paar
sumber