Еще больше ограничиваем вывод консоли ffmpeg

Еще больше ограничиваем вывод консоли ffmpeg

ОБНОВЛЕНИЕ: см. раздел РЕДАКТИРОВАНИЕ внизу

Есть ли способ ограничить вывод консоли из ffmpeg либо путем установки параметров, либо путем обработки вывода? Я посмотрел документацию и установил доступные параметры, которые ограничивают вывод, но я надеюсь, что могут быть другие методы, которые могут ограничить его еще больше. Я также посмотрел те сообщения, которые я смог найти о подробностях ffmpeg, такие какэтотв которых обсуждается опция -loglevel, но она не обеспечивает достаточного контроля.

Вот наименее подробный вывод, который я могу получить, не отключая вывод полностью с помощью опции -loglevel error, а это не то, что мне нужно.

ffmpeg -hide_banner -i input.mkv -c:v libx265 -crf 26 -x265-params log-level=error -vtag hvc1 -c:a ac3 -c:s mov_text output.mp4 
Input #0, matroska,webm, from './input.mkv':
  Metadata:
    encoder         : no_variable_data
    creation_time   : 1970-01-01T00:00:00.000000Z
  Duration: 00:48:46.48, start: 0.000000, bitrate: 9619 kb/s
    Chapter #0:0: start 0.000000, end 326.409000
    Metadata:
      title           : 00:00:00.000
    Chapter #0:1: start 326.409000, end 1037.912000
    Metadata:
      title           : 00:05:26.409
    Chapter #0:2: start 1037.912000, end 1516.640000
    Metadata:
      title           : 00:17:17.912
    Chapter #0:3: start 1516.640000, end 2359.732000
    Metadata:
      title           : 00:25:16.640
    Chapter #0:4: start 2359.732000, end 2887.009000
    Metadata:
      title           : 00:39:19.732
    Chapter #0:5: start 2887.009000, end 2926.475000
    Metadata:
      title           : 00:48:07.009
    Stream #0:0: Video: h264 (High), yuv420p(progressive), 1920x1080 [SAR 1:1 DAR 16:9], 23.98 fps, 23.98 tbr, 1k tbn, 47.95 tbc (default)
    Metadata:
      BPS             : 8107717
      BPS-eng         : 8107717
      DURATION        : 00:48:46.466000000
      DURATION-eng    : 00:48:46.466000000
      NUMBER_OF_FRAMES: 70165
      NUMBER_OF_FRAMES-eng: 70165
      NUMBER_OF_BYTES : 2965869890
      NUMBER_OF_BYTES-eng: 2965869890
      _STATISTICS_WRITING_APP: no_variable_data
      _STATISTICS_WRITING_APP-eng: no_variable_data
      _STATISTICS_WRITING_DATE_UTC: 1970-01-01 00:00:00
      _STATISTICS_WRITING_DATE_UTC-eng: 1970-01-01 00:00:00
      _STATISTICS_TAGS: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
      _STATISTICS_TAGS-eng: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
    Stream #0:1(eng): Audio: dts (DTS), 48000 Hz, 5.1(side), fltp, 1536 kb/s (default)
    Metadata:
      BPS             : 1508999
      BPS-eng         : 1508999
      DURATION        : 00:48:46.475000000
      DURATION-eng    : 00:48:46.475000000
      NUMBER_OF_FRAMES: 274357
      NUMBER_OF_FRAMES-eng: 274357
      NUMBER_OF_BYTES : 552006284
      NUMBER_OF_BYTES-eng: 552006284
      _STATISTICS_WRITING_APP: no_variable_data
      _STATISTICS_WRITING_APP-eng: no_variable_data
      _STATISTICS_WRITING_DATE_UTC: 1970-01-01 00:00:00
      _STATISTICS_WRITING_DATE_UTC-eng: 1970-01-01 00:00:00
      _STATISTICS_TAGS: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
      _STATISTICS_TAGS-eng: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
    Stream #0:2(eng): Subtitle: subrip (default) (forced)
    Metadata:
      title           : Forced
      BPS             : 105
      BPS-eng         : 105
      DURATION        : 00:00:18.518000000
      DURATION-eng    : 00:00:18.518000000
      NUMBER_OF_FRAMES: 6
      NUMBER_OF_FRAMES-eng: 6
      NUMBER_OF_BYTES : 245
      NUMBER_OF_BYTES-eng: 245
      _STATISTICS_WRITING_APP: no_variable_data
      _STATISTICS_WRITING_APP-eng: no_variable_data
      _STATISTICS_WRITING_DATE_UTC: 1970-01-01 00:00:00
      _STATISTICS_WRITING_DATE_UTC-eng: 1970-01-01 00:00:00
      _STATISTICS_TAGS: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
      _STATISTICS_TAGS-eng: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
    Stream #0:3(eng): Subtitle: subrip
    Metadata:
      BPS             : 61
      BPS-eng         : 61
      DURATION        : 00:47:20.754000000
      DURATION-eng    : 00:47:20.754000000
      NUMBER_OF_FRAMES: 584
      NUMBER_OF_FRAMES-eng: 584
      NUMBER_OF_BYTES : 21796
      NUMBER_OF_BYTES-eng: 21796
      _STATISTICS_WRITING_APP: no_variable_data
      _STATISTICS_WRITING_APP-eng: no_variable_data
      _STATISTICS_WRITING_DATE_UTC: 1970-01-01 00:00:00
      _STATISTICS_WRITING_DATE_UTC-eng: 1970-01-01 00:00:00
      _STATISTICS_TAGS: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
      _STATISTICS_TAGS-eng: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
    Stream #0:4(eng): Subtitle: subrip
    Metadata:
      title           : SDH
      BPS             : 62
      BPS-eng         : 62
      DURATION        : 00:48:07.176000000
      DURATION-eng    : 00:48:07.176000000
      NUMBER_OF_FRAMES: 619
      NUMBER_OF_FRAMES-eng: 619
      NUMBER_OF_BYTES : 22653
      NUMBER_OF_BYTES-eng: 22653
      _STATISTICS_WRITING_APP: no_variable_data
      _STATISTICS_WRITING_APP-eng: no_variable_data
      _STATISTICS_WRITING_DATE_UTC: 1970-01-01 00:00:00
      _STATISTICS_WRITING_DATE_UTC-eng: 1970-01-01 00:00:00
      _STATISTICS_TAGS: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
      _STATISTICS_TAGS-eng: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
Stream mapping:
  Stream #0:0 -> #0:0 (h264 (native) -> hevc (libx265))
  Stream #0:1 -> #0:1 (dts (dca) -> ac3 (native))
  Stream #0:2 -> #0:2 (subrip (srt) -> mov_text (native))
Press [q] to stop, [?] for help
Output #0, mp4, to './output.mp4':
    Chapter #0:0: start 0.000000, end 326.409000
    Metadata:
      title           : 00:00:00.000
    Chapter #0:1: start 326.409000, end 1037.912000
    Metadata:
      title           : 00:05:26.409
    Chapter #0:2: start 1037.912000, end 1516.640000
    Metadata:
      title           : 00:17:17.912
    Chapter #0:3: start 1516.640000, end 2359.732000
    Metadata:
      title           : 00:25:16.640
    Chapter #0:4: start 2359.732000, end 2887.009000
    Metadata:
      title           : 00:39:19.732
    Chapter #0:5: start 2887.009000, end 2926.475000
    Metadata:
      title           : 00:48:07.009
    Stream #0:0: Video: hevc (libx265) (hvc1 / 0x31637668), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], q=-1--1, 23.98 fps, 24k tbn, 23.98 tbc (default)
    Metadata:
      BPS             : 8107717
      BPS-eng         : 8107717
      DURATION        : 00:48:46.466000000
      DURATION-eng    : 00:48:46.466000000
      NUMBER_OF_FRAMES: 70165
      NUMBER_OF_FRAMES-eng: 70165
      NUMBER_OF_BYTES : 2965869890
      NUMBER_OF_BYTES-eng: 2965869890
      _STATISTICS_WRITING_APP: no_variable_data
      _STATISTICS_WRITING_APP-eng: no_variable_data
      _STATISTICS_WRITING_DATE_UTC: 1970-01-01 00:00:00
      _STATISTICS_WRITING_DATE_UTC-eng: 1970-01-01 00:00:00
      _STATISTICS_TAGS: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
      _STATISTICS_TAGS-eng: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
      encoder         : Lavc libx265
    Side data:
      cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: N/A
    Stream #0:1(eng): Audio: ac3 (ac-3 / 0x332D6361), 48000 Hz, 5.1(side), fltp, 448 kb/s (default)
    Metadata:
      BPS             : 1508999
      BPS-eng         : 1508999
      DURATION        : 00:48:46.475000000
      DURATION-eng    : 00:48:46.475000000
      NUMBER_OF_FRAMES: 274357
      NUMBER_OF_FRAMES-eng: 274357
      NUMBER_OF_BYTES : 552006284
      NUMBER_OF_BYTES-eng: 552006284
      _STATISTICS_WRITING_APP: no_variable_data
      _STATISTICS_WRITING_APP-eng: no_variable_data
      _STATISTICS_WRITING_DATE_UTC: 1970-01-01 00:00:00
      _STATISTICS_WRITING_DATE_UTC-eng: 1970-01-01 00:00:00
      _STATISTICS_TAGS: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
      _STATISTICS_TAGS-eng: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
      encoder         : Lavc ac3
    Stream #0:2(eng): Subtitle: mov_text (tx3g / 0x67337874) (default) (forced)
    Metadata:
      title           : Forced
      BPS             : 105
      BPS-eng         : 105
      DURATION        : 00:00:18.518000000
      DURATION-eng    : 00:00:18.518000000
      NUMBER_OF_FRAMES: 6
      NUMBER_OF_FRAMES-eng: 6
      NUMBER_OF_BYTES : 245
      NUMBER_OF_BYTES-eng: 245
      _STATISTICS_WRITING_APP: no_variable_data
      _STATISTICS_WRITING_APP-eng: no_variable_data
      _STATISTICS_WRITING_DATE_UTC: 1970-01-01 00:00:00
      _STATISTICS_WRITING_DATE_UTC-eng: 1970-01-01 00:00:00
      _STATISTICS_TAGS: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
      _STATISTICS_TAGS-eng: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
      encoder         : Lavc mov_text
frame= 1047 fps= 58 q=33.7 size=    2560kB time=00:00:44.37 bitrate= 472.6kbits/s speed=2.48x    

И вот что я хотел бы иметь в идеале:

ffmpeg -hide_banner -i input.mkv -c:v libx265 -crf 26 -x265-params log-level=error -vtag hvc1 -c:a ac3 -c:s mov_text output.mp4 
Input #0, matroska,webm, from './input.mkv':
    Stream #0:0: Video: h264 (High), yuv420p(progressive), 1920x1080 [SAR 1:1 DAR 16:9], 23.98 fps, 23.98 tbr, 1k tbn, 47.95 tbc (default)
    Stream #0:1(eng): Audio: dts (DTS), 48000 Hz, 5.1(side), fltp, 1536 kb/s (default)
    Stream #0:2(eng): Subtitle: subrip (default) (forced)
    Stream #0:3(eng): Subtitle: subrip
    Stream #0:4(eng): Subtitle: subrip
Stream mapping:
  Stream #0:0 -> #0:0 (h264 (native) -> hevc (libx265))
  Stream #0:1 -> #0:1 (dts (dca) -> ac3 (native))
  Stream #0:2 -> #0:2 (subrip (srt) -> mov_text (native))
Press [q] to stop, [?] for help
Output #0, mp4, to './output.mp4':
    Stream #0:0: Video: hevc (libx265) (hvc1 / 0x31637668), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], q=-1--1, 23.98 fps, 24k tbn, 23.98 tbc (default)
    Stream #0:1(eng): Audio: ac3 (ac-3 / 0x332D6361), 48000 Hz, 5.1(side), fltp, 448 kb/s (default)
    Stream #0:2(eng): Subtitle: mov_text (tx3g / 0x67337874) (default) (forced)
frame= 1047 fps= 58 q=33.7 size=    2560kB time=00:00:44.37 bitrate= 472.6kbits/s speed=2.48x   

Если нет возможности сделать это с помощью ffmpeg, было бы здорово, если бы кто-нибудь привел пример того, как отфильтровать весь ненужный текст из вывода.

EDIT: Следуя предложению использовать grep, я придумал это, что почти привело меня туда. Единственная оставшаяся проблема в том, что grep заставляет прогресс отображаться на непрерывных новых строках, и я не смог отфильтровать это.

ffmpeg -progress pipe:1 -i input.mkv -c:v libx265 -vtag hvc1 -c:a copy -c:s mov_text output.mp4 2>&1 | egrep "Input.*|Duration.*|Stream.*|Output.*|frame=.*"

Дает такой вывод:

Input #0, matroska,webm, from './input.mkv':
  Duration: 00:43:04.59, start: 0.000000, bitrate: 7253 kb/s
    Stream #0:0(eng): Video: h264 (High), yuv420p(progressive), 1280x720 [SAR 1:1 DAR 16:9], 23.98 fps, 23.98 tbr, 1k tbn, 47.95 tbc (default)
    Stream #0:1(eng): Audio: dts (DTS), 48000 Hz, 5.1(side), fltp, 1536 kb/s (default)
    Stream #0:2(eng): Subtitle: subrip (default) (forced)
Stream mapping:
  Stream #0:0 -> #0:0 (h264 (native) -> hevc (libx265))
  Stream #0:1 -> #0:1 (copy)
  Stream #0:2 -> #0:2 (subrip (srt) -> mov_text (native))
Output #0, mp4, to '/output.mp4':
    Stream #0:0(eng): Video: hevc (libx265) (hvc1 / 0x31637668), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], q=-1--1, 23.98 fps, 13978 tbn, 23.98 tbc (default)
    Stream #0:1(eng): Audio: dts (DTS) (mp4a / 0x6134706D), 48000 Hz, 5.1(side), fltp, 1536 kb/s (default)
    Stream #0:2(eng): Subtitle: mov_text (tx3g / 0x67337874) (default) (forced)
frame=92 92 fps=0.0 q=29.8 size=       0kB time=00:00:04.52 bitrate=   0.4kbits/s speed=9.01x    
frame=17676 fps=174 q=31.2 size=       0kB time=00:00:08.04 bitrate=   0.3kbits/s speed=7.94x    
frame=25555 fps=168 q=35.8 size=     256kB time=00:00:11.38 bitrate= 184.4kbits/s speed=7.48x    
frame=29191 fps=143 q=34.4 size=     512kB time=00:00:12.88 bitrate= 325.7kbits/s speed=6.34x  

решение1

Поскольку вы хотите создать свой собственный уровень ведения журнала, вам придется сделать это самостоятельно.

Например, вы можете использовать что-то вроде:

unbuffer ffmpeg … | unbuffer grep PATTERN

где ШАБЛОН — это регулярное выражение, определяющее выходные строки, которые вы хотите передать.

Связанный контент