Консольная версия Elecard StreamEye
Консольная версия Elecard StreamEye позволяет выполнять комплексный анализ быстро и легко, используя несколько командных строк.
Возможности консольной версии:
- Автоматизация и ускоренное выполнение повседневных задач;
- Анализ большого количества видео файлов из списка;
- Выполнение специфичных и сложных задач с помощью нескольких командных строк;
- Сохранение результатов анализа в текстовом формате CSV для более удобного просмотра в Excel;
- Возможность доступа к функциям и ресурсам StreamEye с помощью консоли.
- Как использовать StreamEye Command line tool
- Примечания
- Пример конфигурационного файла Config.xml
- Список команд
- Примеры
Как использовать StreamEye Command line tool:
Для автоматического анализа нескольких файлов используются следующие синтаксичские правила. С их помощью настраиваются входные и выходные параметры конфигурационного файла.
Перейдите в командную строку, нажав Start->Run и введите 'cmd'. Для запуска приложения необходимо ввести соответствующую команду и далее продолжать работу с опциями командной строки. В целом, синтаксическая конструкция должна выглядеть следующим образом:
SEyeConsole.exe <config path> <options>Примечание. Не перемещайте консоль <product> без остальных приложений продукта, которые содержатся в установочном пакете, иначе консольное приложение не запустится.
1. Параметры с дефолтным значением не являются обязательными и могут быть опущены;
2. Правила наименования входных и выходных файлов:
- параметр /in:<file path> в командной строке перезаписывает значение тэга <input/> в конфигурационном файле;
- параметр /out:<file prefix> в командной строке перезаписывает значение тэга <output/> в конфигурационном файле;
- если тэг <output/> отсутствует (или не задан), имена выходных файлов формируются на основе имен входных файлов с добавлением суффикса (если последний указан);
- если выходной файл не указан для тэга/секции, имя выходного файла для тэга/секции формируется на основе имени, указанного в тэге <output/> с добавлением суффикса, в зависимости от имени тэга/секции. Например, ".message.csv", ".picture.csv" и т.д.
Пример конфигурационного файла Config.xml:
<?xml version="1.0"?>
<stream version="1">
<input HEVCDecoder="Elecard(default)/Reference" SkipIncomplete="true(default)/false" file="…"/>
<output separator=".(default)/," delimiter=";(default)/," file="…"/>
<reference type="IYUV(default)/[*Upsampler Type]" filter="None(default)/FieldGen/Median/Sobel" offset="0(default)" increment="1(default)" file="…"/>
<range span="all(default)/start - stop" order="display(default)" indexmode="base/extended(default)"/>
<userdefs framerate="25(default)" timeperiod="1(default)"/>
<info>
<stream distribution="on(default)/off" file="…"/>
<picture distribution="on(default)/off" file="…">
<condition … />
</picture>
<data type="decoded(default)/predicted/unfiltered/residual/reference/difference" file="…"/>
<coefficients type="transform/dequantized" file="…"/>
<message level="all(default)/message/warning/error" file="…"/>
<header level="struct(default)/parameter" file="…">
<condition parameter="name" comparison="full/substring(default)">
<range value="min-max"/>
<equal value="value"/>
<less value="min"/>
<more value="max"/>
<not value="value"/>
</condition>
</header>
<index distribution="on(default)/off" order="display(default)/stream" file="…"/>
<metrics type="psnr(default)/[*Metric Type]" source="decoded(default)/predicted/unfiltered/residual/reference/difference" file="…"/>
<difference type="compare/psnr/psnr clip/subtraction/temperature" source0="decoded(default)/predicted/unfiltered/residual/reference" source1="reference(default)/decoded/predicted/unfiltered/residual" format="IYUV(default)/YV12" file="…"/>
<buffer file="…"/>
<block compact="false(default)/true" disable="block|subblock|prediction|transform" file="…"/>
<dpb description="on(default)/off" file="…"/>
<statistics mode="all(default)/stream/picture" type="all(default)/[*Statistic Type]" prediction="all(default)/sizes/mpe" component="all(default)/luma/chroma" by="all(default)/count/area" file="…"/>
</info>
</stream>
<stream>
<input file="…"/>
<output separator=";(default)/," delimiter=".(default)/," file="…"/>
<info>
<stream distribution="on(default)/off" file="…"/>
</info>
</stream>
| <input/> | Используется для конфигурации входного файла |
| file | Указывает путь входного файла |
| <output/> | Используется для конфигурации выходного файла |
| separator | Позволяет выбирать десятичную точку или запятую, чтобы отделить целую часть действительного числа от дробной |
| delimiter | Позволяет выбирать запятую или точку с запятой, чтобы указать границы в потоке данных |
| file | Указывает путь выходного файла |
| <reference/> | Используется для конфигурации референсного файла |
| type | Определяет формат исходных данных. (YV12 — по умолчанию/Теперь используется upsampler type. Следующие обновления будут поддерживать больше форматов) |
| filter | Позволяет фильтровать данные по кадру (None — по умолчанию/Field Generation/Median/Sobel) |
| offset | Сдвигает позицию первого анализируемого кадра на заданное количество кадров (0 — по умолчанию) |
| increment | Коэффициент, который используется, чтобы вычислить следующий номер кадра для дальнейшего анализа (1 — по умолчанию) |
| file | Указывает путь к референсному файлу |
| <range/> | Определяет диапазон анализируемых кадров |
| span | Определяет диапазон кадров (all — по умолчанию/start–stop; start и stop — номера первого и последнего анализируемых кадров соответственно) |
| order | Указывает порядок кадров. Отображается по умолчанию |
| index mode | Запускает режим индексирования (extended — по умолчанию/base) |
| <info/> | Определяет тип информации для вывода |
| <stream/> | Используется для вывода общей информации об анализируемом потоке |
| distribution | Содержит информацию о распределении данных по типу блоков кодирования (on — по умолчанию/off) |
| file | Указывает путь к выводимой информации о потоке |
| <picture/> | Используется для вывода информации об изображении |
| distribution | Содержит информацию о распределении данных по типу блоков кодирования (on — по умолчанию/off) |
| file | Указывает путь к выводимой информации об изображении |
| <data/> | Используется для сохранения выводимой информации декодера на любом этапе декодирования |
| type | Указывает тип данных для сохранения (decoded — по умолчанию/predicted/unfiltered/residual/raw data/difference) |
| format | Определяет формат сохраняемых данных (IYUV — по умолчанию) |
| file | Указывает путь к выходному файлу, в котором будут сохранены данные |
| <message/> | Используется для вывода сообщений, появляющихся во время анализа |
| level | Определяет уровень сохраненных сообщений (all — по умолчанию/message/warning/error) |
| file | Указывает путь к выходному файлу, в котором будут сохранены сообщения |
| <header/> | Определяет, какую информацию о заголовках выводить |
| level | Определяет тип выводимой информации о заголовках (struct — по умолчанию/ parameter; struct — сохраняется полная информация о заголовке, parameter — сохраняется информация только об одном или нескольких определенных параметрах из заголовков) |
| file | Указывает путь к выходному файлу, который содержит информацию о заголовках |
| <condition/> | Используется для указания необходимых параметров заголовков. Если этот тег отсутствует, будут сдамплены все заголовки |
| parameter | Указывает название параметра заголовка |
| comparison | Указывает тип сравнительной проверки для названия параметра (full/substring — по умолчанию) |
| <range/> | Используется для определения диапазона искомых значений параметров |
| value | Определяет диапазон искомых значений параметров в формате min-max&rdquo |
| <equal/> | Используется для поиска значений параметра, равных указанному |
| value | Задает значение параметра для сравнения |
| <less/> | Используется для поиска значений параметра меньше указанного |
| value | Задает значение параметра для сравнения |
| <more/> | Используется для поиска значений параметра больше указанного |
| value | Задает значение параметра для сравнения |
| <not/> | Используется для поиска значений параметра, не равных указанному значению |
| value | Задает значение параметра для сравнения |
| <index/> | Используется для вывода информации о кадрах (офсет, тип кадров, размер кадров, средний квантайзер и т. д.) |
| distribution | Содержит информацию о распределении данных по типу блоков кодирования (on — по умолчанию/off) |
| order | Показывает порядок сохраненных индексных данных (stream/display) |
| file | Указывает путь к выходному файлу, в котором будет сохранена информация о кадрах |
| <metrics/> | Используется для вывода информации о метриках качества |
| type | Указывает тип метрики (PSNR — по умолчанию)/SSIM/DELTA/MSAD/MSE/VQM/NQI/APSNR/VMAF phone) |
| source | Определяет источник для вычисления метрики (decoded — по умолчанию/predicted/unfiltered/residual) |
| file | Указывает путь к выходному файлу, в котором будет сохранена информация о метриках |
| <difference/> | Используется для вывода информации о метриках сравнения |
| type | Определяет тип сравнения (compare/subtraction/temperature). Это обязательный параметр для данного тега. Должно быть установлено его значение по умолчанию. Если значение не задано, тег будет пропущен |
| source0 | Определяет источник для вычисления разности (decoded — по умолчанию/predicted/unfiltered/residual/reference) |
| source1 | Определяет источник для вычисления разности (reference — по умолчанию/decoded/predicted/unfiltered/residual) |
| file | Указывает путь к выходному файлу, в котором будет сохранена информация о разности |
| <buffer/> | Используется для сохранения параметров буфера декодирования (Decoder Video Buffer) |
| file | Указывает путь к выходному файлу, который содержит информацию о буфере |
| <block/> | Используется для определения информации о каждом блоке кодирования |
| compact | Вид данных (false — по умолчанию/true; false — каждый параметр блока отображается в одной строке, true — комбинирует данные блока и отображает их в виде столбца) |
| disable | Исключает данные из отчета (block и/или subblock и/или prediction и/или transform) |
| file | Указывает путь к выходному файлу, в котором будет сохранена информация о разности |
| <dpb/> | Используется для сохранения информации о буфере декодированных изображений для каждого кадра (description on — по умолчанию/off используется для отображения дополнительной информации о кадре) |
| description | Добавляет и убирает описание кадра на панели DPB |
| file | Указывает путь к выходному файлу, в котором будет сохранена информация о разности |
| <statistics/> | Используется для получения статистики по потокам и кадрам (подробнее в Руководстве пользователя в разделе Statistics panel) |
| mode | Позволяет выбрать режим для получения статистики (stream/pictures) |
| type | Показывает статистику всего потока по структуре или предсказанию |
| prediction | Подсчитывает тип предсказания в зависимости от формата файла и компонентов |
| component | Позволяет выбирать компоненты для расчета предсказаний |
| by | Позволяет выбрать способ отображения статистики (by count/by area) |
| file | Указывает путь к выходному файлу, в котором будет сохранена информация о разности |
Примеры ниже показывают выполнение некоторых типичных задач из командной строки:
- Сохранение общей информации о потоке и о каждом кадре;
- Поиск нужного параметра из основных заголовков потока на примере IDR_W_RADL;
- Поиск по всем слайсам и вывод слайсов со значением slice_type, равным "2";
- Сохранение в формате YUV предсказанной картинки;
- Сохранение информации о закодированных блоках по каждому кадру потока;
- Вывод основной информации о потоке с подсчетом метрики PSNR для выбранного участка.
1. Сохранение общей информации о потоке и о каждом кадре
config.xml:
<?xml version="1.0"?>
<stream version="1">
<input file="C:\Media\hevc\test_12_0_sei.h265"/>
<output file="C:\Media\hevc\out\"/>
<info>
<stream/>
<picture/>
</info>
</stream>Выходные файлы:
test_12_0_sei.stream.csv:
| name; | value; |
| stream type; | HEVC/H.265; |
| profile; | Main; |
| compatibility; | Main; Main 10; |
| level / tier; | Undefined / Main; |
| chroma format; | 4:2:0; |
| resolution; | 832 x 480; |
| frame rate; | 50.00; |
| bitrate; | 1 024 000 000; |
...
test_12_0_sei.stream.csv:
| Picture #0; | |
| name; | value; |
| resolution; | 416 x 240; |
| size (bytes); | |
| cu; | 21 476; |
| prediction; | 520; |
| transform; | 19 264; |
| qp; | |
| min / max; | 23 / 23; |
| pixels; | |
| count; | 99 840; |
| intra; | 99 840 (100.00%); |
| distribution (bits); | |
| total; | 174 352 (100.00%); |
| split_cu_flag; | 297 (0.17%); |
| cu_skip_flag; | 0 (0.00%); |
| prediction; | |
| intra_prediction; | 16 653 (9.55%); |
| ... | |
| Picture #1: | |
| name; | value; |
| resolution; | 416 x 240; |
| size (bytes); | |
| cu; | 978; |
| prediction; | 352; |
| transform; | 511; |
| ... |
2. Поиск нужного параметра из основных заголовков потока на примере IDR_W_RADL
config.xml:
<?xml version="1.0"?>
<stream version="1">
<input file="C:\Media\hevc\test_12_0_sei.h265"/>
<output file="C:\Media\hevc\out\"/>
<info>
<header level="parameter">
<condition parameter="IDR_W_RADL" comparison="substring"/>
</header>
</info>
</stream> Выходной файл:
test_12_0_sei.header.csv:
| offset; | name; |
| 0x000000AA; | slice_segment_layer() { IDR_W_RADL }; |
| 0x00025F47; | slice_segment_layer() { IDR_W_RADL }; |
3. Поиск по всем слайсам и вывод слайсов со значением slice_type, равным "2"
config.xml:
<?xml version="1.0"?>
<stream version="1">
<input file="C:\Media\hevc\test_12_0_sei.h265"/>
<output file="C:\Media\hevc\test_12_0_sei"/>
<info>
<header>
<condition parameter="slice_type">
<equal value="2"/>
</condition>
</header>
</info>
</stream>Выходной файл:
test_12_0_sei.header.csv:
| offset; | name; | value; |
| 0x0000009C; | slice_segment_layer() { IDR_W_RADL }; | |
| first_slice_segment_in_pic_flag; | 1; | |
| no_output_of_prior_pics_flag; | 0; | |
| slice_pic_parameter_set_id; | 0; | |
| slice_type; | 2; | |
| slice_sao_luma_flag; | 1; | |
| slice_sao_chroma_flag; | 1; | |
| slice_qp_delta; | 6; | |
| slice_loop_filter_across_slices_enabled_flag; | 1; | |
| 0x0000D21A; | slice_segment_layer() { CRA_NUT }; | |
| first_slice_segment_in_pic_flag; | 1; | |
| no_output_of_prior_pics_flag; | 0; | |
| slice_pic_parameter_set_id; | 0; | |
| slice_type; | 2; | |
| slice_pic_order_cnt_lsb; | 32; | |
| short_term_ref_pic_set_sps_flag; | 0; | |
| short_term_ref_pic_set(12); | ||
| if(stRpsIdx != 0); | ||
| ... |
4. Сохранение в формате YUV предсказанной картинки
config.xml:
<?xml version="1.0"?>
<stream version="1">
<input file="C:\Media\hevc\test_12_0_sei.h265"/>
<output file="C:\Media\hevc\out\"/>
<info>
<data type="predicted"/>
</info>
</stream>Выходной файл:
test_12_0_sei.data.416x240.yuv
5. Сохранение информации о закодированных блоках по каждому кадру потока
config.xml:
<?xml version="1.0"?>
<stream version="1">
<input file="C:\Media\hevc\test_12_0_sei.h265"/>
<output file="C:\Media\hevc\out\"/>
<info>
<block/>
</info>
</stream>Выходной файл:
test_12_0_sei.block10.csv
| name; | value; |
| lcu location; | 0x0; |
| lcu slice\tile idx; | 0\0; |
| lcu size total\prediction\transform; | 17\17\0; |
| cu type\location\dimension\depth; | PART_2Nx2N\0x0\64x64\0; |
| cu size total\prediction\transform; | 17\17\0; |
| tu dimensions\qp; | 64x64\35; |
| pu inter dimension\merge_flag\mvp_l0_flag\mvp_l1_flag; | 64x64\0\0\0; |
| pu inter type\dimension; | 2 (Pred_BI)\64x64; |
| pu L0 mv\mvd; | -1, 0, 1 / -1, 0; |
| pu L1 mv\mvd; | -1, 1, 0 / -1, 1; |
| pu mv candidates; | *[0]\mvL0(0,0)\[1]\mvL0(0,0)\*0]\mvL1(0,0)\1]\mvL1(0,0); |
| lcu location; | 64x0; |
| lcu slice\tile idx; | 0\0; |
| ... |
6. Вывод основной информации о потоке с подсчетом метрики PSNR для выбранного участка
config.xml:
<?xml version="1.0"?>
<stream version="1">
<input file="C:\Media\hevc\test_12_0_sei.h265"/>
<output file="C:\Media\hevc\out\"/>
<reference file="C:\Media\raw\BasketballDrill_832x480_50.yuv"/>
<range span="0-10"/>
<info>
<metrics type="psnr"/>
<index distribution="off" order="display"/>
</info>
</stream>Выходной файл:
test_12_0_sei.index.csv:
| stream; | display; | offset; | poc; | type; | time; | quant; | psnr y; |
| 0; | 0; | 0x00000000; | 0; | I; | 00:00:00:000; | 32; | 36.065069; |
| 1; | 8; | 0x000042B3; | 8; | B; | 00:00:00:160; | 33; | 36.065069; |
| 2; | 4; | 0x00005790; | 4; | B; | 00:00:00:160; | 34; | 36.065069; |
| ... | |||||||
| 10; | 12; | 0x00008343; | 12; | B; | 00:00:00:240; | 34; | 34.808986; |