ฉันจะทำให้ ffmpeg เป็นเงียบ / verbose น้อยลงได้อย่างไร


117

โดยค่าเริ่มต้น ffmpeg ส่งข้อความ lotta ทั้งหมดไปยัง stderr: เมื่อสร้างวิธีสร้างตัวแปลงสัญญาณ ฯลฯ ฯลฯ ฯลฯ

ฉันจะทำให้มันเงียบขึ้นได้อย่างไร

ฉันได้ลอง-v 0(และ-v 10เนื่องจากเอกสารเพียงแค่พูดอย่างอาย ๆSet the logging verbosity level.โดยไม่มีข้อบ่งชี้ว่าช่วงของอินพุตคืออะไร) - ยังไม่เงียบ

ฉันลองแล้ว-loglevel quiet- ยังไม่เงียบ

ฉันควรพูดถึงฉันกำลังมองหา "เงียบกว่า" ไม่ "ไม่เคยส่งออก" หากมีข้อผิดพลาดที่ฉันต้องการเห็น แต่ฉันไม่ต้องการรับฟังการกำหนดค่าของ ffmpeg ทุกครั้ง เดียว เวลา.


14
ffmpeg เป็นหนึ่งใน 'สำหรับนักพัฒนาโดยโปรแกรมประเภท' ของนักพัฒนา
digitxp

1
-loglevel quiet -statsใช้
fredsbend

อีกวิธีหนึ่ง-loglevel error -statsจะแสดงข้อผิดพลาด "รวมถึงสิ่งที่สามารถกู้คืนได้จาก" และการใช้-statsเพื่อให้แน่ใจว่าการพิมพ์ของความคืบหน้าการเข้ารหัสและสายสถิติ การเปลี่ยน-loglevelจากerrorการwarningเป็นเพียงเล็กน้อยอย่างละเอียดมากขึ้น แต่ความสะดวกสบายเหมาะกับหน้าสถานีหนึ่ง
mattst

คำตอบ:


66

ffmpeg -hide_banner -loglevel panic

นี่เป็นการพูดถึงในความคิดเห็นด้านล่างคำตอบปัจจุบัน

ตัวเลือก-hide_bannerนี้ถูกนำมาใช้ในช่วงปลายปี 2013 - https://lists.ffmpeg.org/pipermail/ffmpeg-devel/2013-December/152349.html )


7
นี่ควรเป็นคำตอบที่ยอมรับ
NineCattoRules

4
คำตอบที่ดีที่สุด แต่ตัวเลือก -show แบนเนอร์จะ nicer กว่าที่จะซ่อนมัน
hetepeperfan

1
อาจจะเพิ่ม-nostatsด้วย
Mikko Rantalainen

117

ฉันยังไม่ได้ทดสอบ แต่ฉันเห็นตัวเลือกใน man page ที่ต้องทำ:

ffmpeg -loglevel panic [rest of your ffmpeg stuff]

ควรทำให้มีการบันทึกข้อผิดพลาดร้ายแรงเท่านั้นตามทฤษฎี


5
แม้-loglevel panicสำหรับฉันแล้วมันลดการส่งออกเพียงเล็กน้อย - มันยังพิมพ์ข้อมูลรุ่นการแมปสตรีมตัวเลือกการกำหนดค่า (และแม้แต่ข้อมูลความคืบหน้า!) .... แนวคิดใด ๆ ? ฉันอาจจะต้องพูดถึงว่ามันเป็นรุ่นที่รวบรวมด้วยตนเองจากลำตัว svn ล่าสุด
codeling


2
@rogerdpack ที่ใช้งานได้กับโปรแกรมส่วนใหญ่ แต่ ffmpeg จะใส่เอาท์พุทข้อความทั้งหมดไปที่ stderr แทนที่จะเป็น stdout (ทำเช่นนี้เพื่อให้คุณสามารถไพพ์เอาท์พุทเอนโค้ดเดอร์ไปยังโปรแกรมอื่น ๆ ) ดังนั้นเปลี่ยนเส้นทาง stdout ไปยัง / dev / null ไม่ทำสิ่งใดมีประโยชน์
evilsoup

20
การใช้-hide_bannerนอกจากระดับการใช้คำฟุ่มเฟือยที่ลดลงจะเป็นการประนีประนอมที่ดี
Makaveli84

5
นอกเหนือจากทุกสิ่งที่กล่าวมาแล้ว -nostats จะปิดใช้งานเอาต์พุตความคืบหน้า
Ely

56

ที่นี่คุณมี loglevels จากซอร์สโค้ด (FFmpeg เวอร์ชั่น 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 นั้นมีแนวโน้มที่จะเปลี่ยนแปลงอยู่ตลอดเวลา แต่ก็ควรรวมไว้เป็นแหล่งที่มาของคำตอบของคุณ ตัวอย่างเช่นในปัจจุบันนี้มีการบันทึกไว้ที่ffmpeg.org/ffmpeg.html#toc-Generic-optionsและผู้อ่านจะทราบว่าจะค้นหาเอกสารที่ใดแม้ว่า URL นี้จะเปลี่ยนไป
Fr0zenFyr

19

ฉันใช้กับความสำเร็จดังต่อไปนี้ (เวอร์ชั่น FFMPEG ใหม่ล่าสุด ณ เวลาที่เขียน):

-nostats -loglevel 0

ถ้าอย่างนั้นมันก็เงียบในสถานการณ์การใช้งานของฉัน


พอใจกับการแก้ปัญหานี้ใน ffmpeg 3.2
Bernhard Döbler

-nostatsเป็นสิ่งที่ฉันกำลังมองหา มันจะระงับการส่งออกความคืบหน้า (เช่นมีประโยชน์ในบริบทที่ไม่ใช่ขั้ว)
jox

น่าเศร้า-nostatsซ่อนแบนเนอร์เช่นกัน ffmpeg ต้องการ-show_bannerตัวเลือก;)
mgutt

18
ffmpeg -loglevel error [other commands]

สิ่งนี้ซ่อนแบนเนอร์และแสดงข้อผิดพลาดเท่านั้น ใช้-loglevel warningหากคุณต้องการดูคำเตือน

ทดสอบใน Ffmpeg 3.0.2

จากเอกสาร :

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

ตั้งค่าระดับการบันทึกที่ใช้โดยไลบรารี การเพิ่ม "repeat +" บ่งชี้ว่าไม่ควรบีบอัดเอาท์พุทบันทึกซ้ำไปยังบรรทัดแรกและบรรทัด "ข้อความซ้ำล่าสุด n ครั้ง" จะถูกตัดออก "ซ้ำ" ยังสามารถใช้เพียงอย่างเดียว หากใช้ "ซ้ำ" เพียงอย่างเดียวและไม่มีการตั้งค่า loglevel ก่อนหน้านี้จะใช้ loglevel เริ่มต้น หากมีการระบุพารามิเตอร์ loglevel หลายรายการการใช้ 'ซ้ำ' จะไม่เปลี่ยน loglevel loglevel เป็นสตริงหรือตัวเลขที่มีค่าใดค่าหนึ่งต่อไปนี้:

'เงียบ -8'

ไม่ต้องแสดงอะไรเลย เงียบ.

'ตื่นตระหนก 0'

แสดงเฉพาะข้อผิดพลาดร้ายแรงซึ่งอาจทำให้กระบวนการล้มเหลวเช่นและยืนยันความล้มเหลว ปัจจุบันนี้ไม่ได้ใช้เพื่ออะไร

'ร้ายแรง 8'

แสดงข้อผิดพลาดร้ายแรงเท่านั้น เหล่านี้เป็นข้อผิดพลาดหลังจากที่กระบวนการไม่สามารถดำเนินการต่อไปได้

'ข้อผิดพลาด 16'

แสดงข้อผิดพลาดทั้งหมดรวมถึงข้อผิดพลาดที่สามารถกู้คืนได้

'คำเตือน 24'

แสดงคำเตือนและข้อผิดพลาดทั้งหมด ข้อความใด ๆ ที่เกี่ยวข้องกับเหตุการณ์ที่อาจไม่ถูกต้องหรือไม่คาดคิดจะปรากฏขึ้น

'ข้อมูล 32'

แสดงข้อความที่ให้ข้อมูลระหว่างการประมวลผล นี่คือนอกเหนือจากคำเตือนและข้อผิดพลาด นี่เป็นค่าเริ่มต้น

'verbose, 40'

เหมือนกับinfoยกเว้น verbose มากขึ้น

'debug, 48'

แสดงทุกอย่างรวมถึงข้อมูลการดีบัก

'ร่องรอย 56'

ตามค่าเริ่มต้นโปรแกรมบันทึกไปยัง stderr หากเทอร์มินัลได้รับการสนับสนุนสีจะถูกใช้เพื่อทำเครื่องหมายข้อผิดพลาดและคำเตือน สีเข้าสู่ระบบสามารถปิดใช้งานการตั้งค่าตัวแปรสภาพแวดล้อม AV_LOG_FORCE_NOCOLORหรือหรือสามารถบังคับตั้งค่าตัวแปรสภาพแวดล้อมNO_COLOR AV_LOG_FORCE_COLORการใช้ตัวแปรสภาพแวดล้อมNO_COLORเลิกใช้แล้วและจะลดลงในรุ่น FFmpeg ต่อไปนี้


5

การทำงานต่อไปนี้สำหรับฉันใน macOS:

ffmpeg -v quiet

หรือเพื่อดูความคืบหน้าเท่านั้น:

ffmpeg -v quiet -stats

นั่นคือสิ่งที่ฉันกำลังมองหา ฉันใช้ ffmpeg ในสคริปต์และต้องการดูว่ามันใช้งานได้ แต่ไม่ต้องการข้อมูลทั้งหมดเกี่ยวกับอินพุตและเอาต์พุตสตรีม ฯลฯ
stib

3

คุณสามารถไปป์ stderr ผ่าน grep ตัวอย่างเช่นหากคุณต้องการลบข้อมูลการกำหนดค่าคุณสามารถทำได้เช่นนี้:

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

ffmpeg … 2>&1 >/dev/null | grep …ผมเชื่อว่าอาจจะต้องมี
สกอตต์

0

นี่มันราคาถูกนิดหน่อย แต่การต่อเติม>/dev/null 2>&1เป็นวิธีที่แน่นอนที่จะทำให้ ffmpeg เงียบในเชลล์

ตัวอย่าง

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 output


14
ยกเว้นว่า ffmpeg เป็นหนึ่งขั้นตอนของคุณและส่งออกข้อมูลการกำหนดค่าและข้อผิดพลาดที่เกิดขึ้นจริงเพื่อ stderr
blahdiblah

0

ffmpeg -loglevel error -hide_banner -nostats

เพียงข้อผิดพลาดไม่มีอะไรอื่น

ฉันชอบสิ่งนี้ที่สุด

ffmpeg -loglevel warning -hide_banner -stats

มันให้คำเตือนและข้อผิดพลาดเท่านั้น แต่ยังแสดงความคืบหน้าของการทำงาน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.