Консольная версия 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; |