Làm thế nào tôi có thể làm cho ffmpeg yên tĩnh hơn / ít dài dòng hơn?


117

Theo mặc định, ffmpeg gửi toàn bộ tin nhắn lotta tới stderr: khi được xây dựng, cách xây dựng, codec, v.v., v.v.

Làm thế nào tôi có thể làm cho nó yên tĩnh hơn?

Tôi đã thử -v 0(và -v 10vì tài liệu chỉ nói một cách ngượng ngùng Set the logging verbosity level.mà không cho biết phạm vi đầu vào là gì) - vẫn không im lặng.

Tôi đã thử -loglevel quiet- vẫn không im lặng.

Tôi nên đề cập, tôi đang tìm kiếm "yên tĩnh hơn", chứ không phải "không có đầu ra bao giờ". Nếu có lỗi tôi muốn xem, nhưng tôi không cần nghe về cấu hình của ffmpeg. Độc thân. thời gian.


14
ffmpeg chắc chắn là một trong những 'dành cho nhà phát triển, bởi các loại chương trình của nhà phát triển.
chữ sốxp

1
Sử dụng -loglevel quiet -stats.
frbedbend

Ngoài ra, -loglevel error -statssẽ hiển thị các lỗi "bao gồm cả những lỗi có thể được phục hồi" và sử dụng -statsđảm bảo in tiến trình mã hóa và dòng thống kê. Thay đổi -logleveltừ errorthành warningdài hơn một chút nhưng thoải mái phù hợp trên một trang thiết bị đầu cuối.
mattst

Câu trả lời:


66

ffmpeg -hide_banner -loglevel panic

Điều này được ám chỉ trong một bình luận bên dưới câu trả lời hiện tại.

Tùy chọn -hide_bannerđã được giới thiệu vào cuối năm 2013 - https://lists.ffmpeg.org/pipermail/ffmpeg-devel/2013-December/152349.html )


7
đây phải là câu trả lời được chấp nhận
NineCattoRules

4
Tuy nhiên, câu trả lời hay nhất, tùy chọn -show-banner sẽ đẹp hơn là ẩn nó
hetepeperfan

1
Có thể thêm -nostats, quá?
Mikko Rantalainen

117

Tôi chưa thử nó, nhưng tôi thấy một tùy chọn trong trang man để làm:

ffmpeg -loglevel panic [rest of your ffmpeg stuff]

Theo lý thuyết, chỉ nên làm cho nó bị lỗi nghiêm trọng.


5
Ngay cả với -loglevel panictôi, nó chỉ giảm đầu ra một chút - nó vẫn in thông tin phiên bản, ánh xạ luồng, tùy chọn cấu hình, (và thậm chí cả thông tin tiến trình!) .... có ý tưởng nào không? Tôi có thể phải đề cập rằng đó là phiên bản tự biên dịch từ thân svn mới nhất.
mã hóa

7
dẫn nó vào thùng bit:> / dev / null 2> & 1
rogerdpack

2
@rogerdpack sẽ hoạt động cho hầu hết các chương trình, nhưng ffmpeg đặt tất cả đầu ra văn bản của nó thành stderr, thay vì stdout (nó làm điều này để bạn có thể chuyển đầu ra bộ mã hóa sang các chương trình khác), vì vậy chuyển hướng stdout sang / dev / null t làm bất cứ điều gì hữu ích.
evilsoup

20
Sử dụng -hide_bannercùng với mức độ chi tiết giảm sẽ là một sự thỏa hiệp tốt.
Makaveli84

5
Ngoài tất cả mọi thứ đã được nói, -nostats sẽ vô hiệu hóa đầu ra tiến độ.
Ely

56

Tại đây bạn có loglevels từ mã nguồn (phiên bản 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
Mặc dù các URL có xu hướng thay đổi theo thời gian, thật tốt khi đưa chúng vào làm câu trả lời của bạn. Ví dụ: hiện tại điều này được ghi lại tại ffmpeg.org/ffmpeg.html#toc-Generic-options và người đọc sẽ biết nơi để tìm tài liệu ngay cả khi URL này thay đổi.
Fr0zenFyr

19

Tôi đã sử dụng thành công như sau (Phiên bản FFMPEG mới nhất tại thời điểm viết):

-nostats -loglevel 0

Sau đó, nó là hoàn toàn yên tĩnh trong kịch bản sử dụng của tôi.


hài lòng với giải pháp này trong ffmpeg 3.2
Bernhard Döbler

-nostatslà những gì tôi đang tìm kiếm. Nó sẽ triệt tiêu đầu ra tiến độ (ví dụ hữu ích trong bối cảnh không đầu cuối).
Jox

Đáng buồn -nostatsgiấu biểu ngữ là tốt. ffmpeg cần một -show_bannertùy chọn;)
mgutt

18
ffmpeg -loglevel error [other commands]

Điều này ẩn banner và chỉ hiển thị lỗi. Sử dụng -loglevel warningnếu bạn muốn xem cảnh báo.

Đã thử nghiệm trong Ffmpeg 3.0.2.

Từ tài liệu :

-loglevel [lặp lại +] loglevel | -v [lặp lại +] loglevel

Đặt mức ghi nhật ký được sử dụng bởi thư viện. Thêm "repeat +" chỉ ra rằng đầu ra nhật ký lặp lại không nên được nén vào dòng đầu tiên và dòng "Tin nhắn cuối cùng được lặp lại n lần" sẽ bị bỏ qua. "Lặp lại" cũng có thể được sử dụng một mình. Nếu "lặp lại" được sử dụng một mình và không có bộ loglevel trước, loglevel mặc định sẽ được sử dụng. Nếu nhiều tham số loglevel được đưa ra, sử dụng 'repeat' sẽ không thay đổi loglevel. loglevel là một chuỗi hoặc một số chứa một trong các giá trị sau:

'yên lặng, -8'

Không hiển thị gì cả; im lặng.

'hoảng loạn, 0'

Chỉ hiển thị các lỗi nghiêm trọng có thể dẫn đến quá trình sụp đổ, chẳng hạn như và khẳng định thất bại. Điều này hiện không được sử dụng cho bất cứ điều gì.

'gây tử vong, 8'

Chỉ hiển thị lỗi nghiêm trọng. Đây là những lỗi mà sau đó quá trình hoàn toàn không thể tiếp tục sau đó.

'lỗi, 16'

Hiển thị tất cả các lỗi, bao gồm cả những lỗi có thể được phục hồi.

'cảnh báo, 24'

Hiển thị tất cả các cảnh báo và lỗi. Bất kỳ thông báo liên quan đến các sự kiện có thể không chính xác hoặc bất ngờ sẽ được hiển thị.

'thông tin, 32'

Hiển thị thông báo thông tin trong quá trình xử lý. Đây là ngoài cảnh báo và lỗi. Đây là giá trị mặc định.

'dài dòng, 40'

Tương tự như info, ngoại trừ dài dòng hơn.

'gỡ lỗi, 48'

Hiển thị mọi thứ, bao gồm thông tin gỡ lỗi.

'dấu vết, 56'

Theo mặc định, chương trình ghi vào stderr, nếu màu được hỗ trợ bởi thiết bị đầu cuối, màu sắc được sử dụng để đánh dấu lỗi và cảnh báo. Màu sắc nhật ký có thể bị vô hiệu hóa thiết lập biến môi trường AV_LOG_FORCE_NOCOLORhoặc NO_COLOR, hoặc có thể bị buộc thiết lập biến môi trường AV_LOG_FORCE_COLOR. Việc sử dụng biến môi trường NO_COLORkhông được chấp nhận và sẽ bị loại bỏ trong phiên bản FFmpeg sau.


5

Sau đây làm việc cho tôi trên macOS:

ffmpeg -v quiet

hoặc chỉ để xem tiến trình:

ffmpeg -v quiet -stats

Đó chính xác là những gì tôi đang tìm kiếm. Tôi đang sử dụng ffmpeg trong một tập lệnh và cần phải xem nó đang hoạt động, nhưng không cần tất cả thông tin về các luồng đầu vào và đầu ra, v.v.
stib

3

Bạn có thể ống stderr thông qua grep. Ví dụ: nếu bạn muốn xóa thông tin cấu hình, bạn có thể làm như thế này:

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

Tôi tin rằng có thể cần phải được ffmpeg … 2>&1 >/dev/null | grep ….
Scott

0

Đây là một chút rẻ để đi về nó, nhưng nối thêm >/dev/null 2>&1là một cách chắc chắn để giữ ffmpeg im lặng trong vỏ.

Thí dụ

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

Thông tin thêm về đầu ra bash


14
Ngoại trừ ffmpeg đi trước bạn một bước và đưa ra cả thông tin cấu hình và lỗi thực tế cho thiết bị lỗi chuẩn.
blahdibmus

0

ffmpeg -loglevel error -hide_banner -nostats

Chỉ là lỗi, không có gì khác.

Cá nhân tôi thích điều này nhất;

ffmpeg -loglevel warning -hide_banner -stats

Nó chỉ đưa ra các cảnh báo và lỗi, nhưng cũng cho thấy tiến độ công việc.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.