LINUX.ORG.RU
ФорумJob

Разработка парсера выхлопа MediaInfo: «Encoding settings» для x264


1

5

Нужно из подобной простыни:

Encoding settings : cabac=1 / ref=11 / deblock=1:-3:-3 / analyse=0x3:0x113 / me=umh / subme=11 / psy=1 / psy_rd=1.00:0.05 / mixed_ref=1 / me_range=48 / chroma_me=1 / trellis=2 / 8x8dct=1 / cqm=0 / deadzone=21,11 / fast_pskip=0 / chroma_qp_offset=-3 / threads=6 / lookahead_threads=6 / sliced_threads=0 / nr=0 / decimate=1 / interlaced=0 / bluray_compat=0 / constrained_intra=0 / bframes=16 / b_pyramid=2 / b_adapt=2 / b_bias=0 / direct=3 / weightb=1 / open_gop=0 / weightp=2 / keyint=240 / keyint_min=23 / scenecut=40 / intra_refresh=0 / rc_lookahead=60 / rc=crf / mbtree=0 / crf=17.0 / qcomp=0.60 / qpmin=0 / qpmax=69 / qpstep=4 / vbv_maxrate=50000 / vbv_bufsize=62500 / crf_max=0.0 / nal_hrd=none / filler=0 / ip_ratio=1.40 / pb_ratio=1.30 / aq=3:0.90

получить данные для людей: CRF, точный/примерный пресет кодирования x264: http://dev.beandog.org/x264_preset_reference.html

Программа - окошко с полем для ввода текста. Копируешь туда эту простыню и в заголовке окна или лейбле отображается CRF и точный/примерный пресет

Тендер.

Ты же не указал кучу моментов: по каким формулам тебе расчет вести, на чем писать (ЯП, тулкит, может Qt, может тебе на чистом Gtk надо или на каком нибудь экзотическом еще..), критерии приемки работы, допустимые отклонения и тд. То бишь с тебя за доработку твоего «ТЗ» еще денег надо лупить. Ну и вилку не указал, чтоб люди знали твои возможности и не тратили время зря.

Pro100User
()
Ответ на: комментарий от Pro100User

Ты же не указал кучу моментов: по каким формулам тебе расчет вести

А зачем мне это указывать? Есть параметры, которые точно или примерно соответствую одному из пресетов, задача - выяснить какому

(ЯП, тулкит, может Qt, может тебе на чистом Gtk надо или на каком нибудь экзотическом еще..)

Это не важно. Хоть на Bash

критерии приемки работы

Программы с одной функцией? Которую она должна выполнять

допустимые отклонения и тд.

Какие еще «отклонения»?

«ТЗ»

Серьезно?

Ну и вилку не указал

Это не работает

Moderators ★★
() автор топика
Ответ на: комментарий от Pro100User

Серьезный заказчик. Но претендовать на заказ я, конечно же, не буду.

Да, это тебе не ядро пилить! Сравнить строчки с таблицей и выявить, с каким из столбцов (пресетов) больше/все совпадения!

Moderators ★★
() автор топика
Ответ на: комментарий от Moderators

ну так и приведи пример, чему соответствует указанная тобой входная строка. Ты даже банально пример выходных данных указать не можешь, ёкарный бабай )

Pro100User
()
Ответ на: комментарий от Pro100User

ну так и приведи пример, чему соответствует указанная тобой входная строка.

Программы еще нет. Все эти параметры разбираются и сопоставляются с пресетами: http://dev.beandog.org/x264_preset_reference.html Где больше/все совпадения - тот и пресет. Ну ничего сложного нет. Ты не можешь разобрать эту простыню на отдельные параметры? Не можешь полученные параметры сравнить с массивами пресетов? В чем проблема-то?

Moderators ★★
() автор топика
Ответ на: комментарий от Moderators

У меня нет проблем, это у тебя проблемы, и самая большая, что ты этого не понимаешь.. Я просто удивляюсь, что ты даже сам не знаешь что ты хочешь и не смог даже свой пример разобрать до того, что из него будет на выходе.

Pro100User
()
Ответ на: комментарий от Pro100User

У меня нет проблем, это у тебя проблемы, и самая большая, что ты этого не понимаешь.. Я просто удивляюсь, что ты даже сам не знаешь что ты хочешь и не смог даже свой пример разобрать до того, что из него будет на выходе.

и в заголовке окна или лейбле отображается CRF и точный/примерный пресет

Какие такие выпады?

Moderators ★★
() автор топика
Ответ на: комментарий от Moderators

Понимаю, что ты любишь больше писать, чем читать написанное, но может в третьего захода получится... Вот когда свой пример разберешь и укажешь что на выходе - тогда и будет видно, что ты понимаешь что ты хочешь. А сейчас это не более чем тыкание пальцем в небо. Ладно, не обижайся, я с добром к тебе)

Pro100User
()
Ответ на: комментарий от Pro100User

А сейчас это не более чем тыкание пальцем в небо

man --crf, man --preset

Moderators ★★
() автор топика
Lang: C;
GUI : GTK3;
Неделю на вникание в суть.
От двух недель до месяца на разработку.
+Предварительное согласование, нарисуй желаемый интерфейс на бумажке, он будет перенесён в glade.ui
От 20  до 40 тысяч рублей. Тысяч 5 предоплаты после согласования 
gui интерфейса.
Для связи skype/gmail/vk по нику blogdron
Dron ★★★★★
()
Последнее исправление: Dron (всего исправлений: 1)
Ответ на: комментарий от Moderators

Тоесть ты полностью доверяешь табличке с верху? И её можно считать эталонной и от неё прыгать не читая ничего более про параметры. Ну ок чё, так даже лучше.

Dron ★★★★★
()
Ответ на: комментарий от Dron

Тоесть ты полностью доверяешь табличке с верху? И её можно считать эталонной и от неё прыгать не читая ничего более про параметры. Ну ок чё, так даже лучше.

Не нужно «додумывать» ТЗ. Кому это будет нужно - будут колупаться в разных источниках, ибо FOSS

Moderators ★★
() автор топика
Ответ на: комментарий от Moderators

несомненно, мнение анонимного источника - это безусловный уровень доверия и экспертизы. Интересный ты цирк устроил, ТС! Красавчик!

Pro100User
()
Ответ на: комментарий от Pro100User

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

Ты еще ничего не написал

Moderators ★★
() автор топика
Ответ на: комментарий от Dron

Лады, я свои предложения/условия/контакты для тендера описал.

Скорее всего нам не подойдет программист неделю вкуривающий задачи сравнения одного массива с другим

Moderators ★★
() автор топика
Ответ на: комментарий от Dron

Ты даже оформить свой «тендер» не можешь. У тендера должны быть какие то условия, как то время начала и время окончания. Описание задачи должно быть внятным (чего не наблюдается, даже уточнения, которые были, ты не соизволил обновить в заголовке задачи), условия приемки должны быть описаны, а ты отправляешь читать маны (просто потому, что ты сам в задаче не разбираешься). Если, задача несложная, как ты говоришь, то почему ты не хочешь предоставить тестовый результат к описанной тобой выше строки?

Pro100User
()
Ответ на: комментарий от Pro100User

У тендера должны быть какие то условия, как то время начала и время окончания.

Не должны, это ЛОР

Описание задачи должно быть внятным

Если ты сразу ничего не понял - это только твои проблемы

условия приемки должны быть описаны

У меня нет каких-то особых условий, лишь бы программа выполняла свою ОДНУ ФУНКЦИЮ

ты отправляешь читать маны

Конечно, иди читай, и не задавай больше глупых вопросов

тестовый результат к описанной тобой выше строки?

в заголовке окна или лейбле отображается CRF и точный/примерный пресет

Q17, ~slower

Moderators ★★
() автор топика
Ответ на: комментарий от Moderators

Хороший, годный заказчик. И ответы прекрасны, хоть в цитатник записывай:

«это ЛОР» - хорошая, правильная отмазка на все случаи жизни

«Если ты сразу ничего не понял - это только твои проблемы» - идеальные слова, безусловно после этого за этим заказом будут ломиться толпы программистов

«У меня нет каких-то особых условий, лишь бы программа выполняла свою ОДНУ ФУНКЦИЮ» - божественно! То бишь, если у нас какая то функция, условия приемки описывать не надо, это ж очевидно!

«Конечно, иди читай, и не задавай больше глупых вопросов» - Хамишь, парниша!

«Q17, ~slower» - Просто изумительно! Спустя 12 часов этот гигант мысли понял, что можно взять и выдрать из свой простыни выражение «crf=17.0» и из несчастной таблички найти кое-какое совпадение!

Pro100User
()
Ответ на: комментарий от Pro100User

«это ЛОР» - хорошая, правильная отмазка на все случаи жизни

Это не отмазка, а суровая реальность. Кыш на фриланс или еще какую помойку

«Если ты сразу ничего не понял - это только твои проблемы» - идеальные слова, безусловно после этого за этим заказом будут ломиться толпы программистов

А что ты делаешь? Хочешь вырвать заказ?!

То бишь, если у нас какая то функция, условия приемки описывать не надо

Ты ничего не понял

«Конечно, иди читай, и не задавай больше глупых вопросов» - Хамишь, парниша!

Учение - свет

Просто изумительно! Спустя 12 часов этот гигант мысли понял, что можно взять и выдрать из свой простыни выражение «crf=17.0» и из несчастной таблички найти кое-какое совпадение!

Я уже понял, что это сверх твоего понимания

в заголовке окна или лейбле отображается CRF и точный/примерный пресет

Moderators ★★
() автор топика
Ответ на: комментарий от Moderators

Нужны примеры с прямым соответствием: какие настройки в какой пресет мапятся. Это и тебе поможет для проверки корректности работы программы.

staseg ★★★★★
()
Ответ на: комментарий от staseg

В заголовке ссылка есть с табличкой. Я тут подумал мне для себя тоже така парсилка пригодиться, начал писать, пришол к тому что либо вникать в «значимость» значения каждого ключа и их зависимости друг от друга или просто сравнить и выявить «особенные» значения ключей для каждого уровня пресета по табличке и по нижним примерам по ссылке в шапке. Взял последнее, так как все настройки могут соотвецтвовать например ultrafast кроме трёх которые будут подходить только для veryslow и чё куда тогда? В итоге нужно выявлять предрасположенность к тому или иному пресету, который ожидается при общих ключах наиболее всего.

Dron ★★★★★
()
Ответ на: комментарий от Dron

Я видел табличку, но надо много примеров, особенно когда данные чуть-чуть в разные стороны, к каким пресетам их относить.

staseg ★★★★★
()
Ответ на: комментарий от staseg

Ну для себя я решил сделать так, вбить всё жёстко и оценивать значения в зависимости от смещения от «контрольных» точек.

    {.name="subme",             .type=        "int",
                                .fast.i=      4,
                                .medium.i=    7,
                                .slow.i=      8,

                                .ultrafast.i= 0,
                                .superfast.i= 1,
                                .veryfast.i=  2,
                                .faster.i=    3,
                                .slower.i=    9,
                                .veryslow.i=  10,
                                .placebo.i=   11,
                                .result=      "undefined"
    },
    {.name="me",                .type=        "str",
                                .fast.s=      "dia",
                                .medium.s=    "hex",
                                .slow.s=      "umh",
                                .ultrafast.s= NULL,
                                .superfast.s= NULL,
                                .veryfast.s=  NULL,
                                .faster.s=    NULL,
                                .slower.s=    NULL,
                                .veryslow.s=  NULL,
                                .placebo=     "tesa",
                                .result=      "undefined"
    },
    {.name="deadzone",          .type=        "str",
                                .fast.s=      NULL,
                                .medium.s=    "21,11",
                                .slow.s=      NULL,
                                .ultrafast.s= NULL,
                                .superfast.s= NULL,
                                .veryfast.s=  NULL,
                                .faster.s=    NULL,
                                .slower.s=    NULL,
                                .veryslow.s=  NULL,
                                .placebo.s=   NULL,
                                .result=      "undefined"
    },



Тобиш есть опция и у неё есть значение если оно может быть и в ultrafast и в slowly значит любое значение может быть везде значит это medium значение (наиболее частое) остальные значения не важны если они не определены, опия не найдена вообще то на это смотрится отдельно это важно например для определения ultrafast. В сумме собирается некий рейтинг в котром каждой опции присваивается предрасположенность с тому или иному пресету где она и её значение были бы уместны. Если все настройки соотвецтвуют примерно допустим ~slowly то так и выводим, если есть расхождения то выводим дополнительную инфу мол настройки все для fast, а вот эта одна для placebo и всё, тут ничего по моему больше не сделаешь.

Dron ★★★★★
()
Последнее исправление: Dron (всего исправлений: 1)
Ответ на: комментарий от thesame

могу сделать за полдня

Вы не разделяете скепсиса предыдущих ораторов относительно сложности проекта? Или что это вообще за разработчики такие?


Разработка парсера выхлопа MediaInfo: «Encoding settings» для x264 (комментарий)

Неделю на вникание в суть.
От двух недель до месяца на разработку.

Мнение независимого эксперта Программа для определения качества настроек энкодера видео (комментарий)

Там той «программы» всего несколько строк будет.

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

Разработка парсера выхлопа MediaInfo: «Encoding settings» для x264 (комментарий)

Moderators ★★
() автор топика
Ответ на: комментарий от Moderators

ну правда же несколько строк. даже не знаю сколько за такое просить, но надо же с чего-то начинать тендер

thesame ★★★★
()
Ответ на: комментарий от thesame

ну правда же несколько строк

Если просто сравнить набор опций 10 пресетов по ссылке в шапке и новый пресет то да на какомнибудь perl это действительно несколько строчек. Только вот во многих случаях результат будет белибердой.

Dron ★★★★★
()
Ответ на: комментарий от Moderators

Вы не разделяете скепсиса предыдущих ораторов относительно сложности проекта? Или что это вообще за разработчики такие?

Касаемо меня я подразумевал (предпологал) что нужно разобраться с каждым параметром и отталкиваясь в первую очередь от этого вычислять принадлежность пресета.

Dron ★★★★★
()
Ответ на: комментарий от Dron

Касаемо меня я подразумевал (предпологал) что нужно разобраться с каждым параметром и отталкиваясь в первую очередь от этого вычислять принадлежность пресета.

Программа для определения качества настроек энкодера видео (комментарий)

Ты уже пишешь эту программу? Если бы я реализовывал, то делал бы так: каждый параметр, свойственный для какого-либо пресета, добавлял бы +1 к перемененной с названием самого пресета. Тот пресет, который набрал больше всего «очков» и пишется в выводе программы, можно еще с процентным соотношением: 80% veryslow, 10% slow, 10% medium

Moderators ★★
() автор топика
Ответ на: комментарий от thesame

ну правда же несколько строк. даже не знаю сколько за такое просить, но надо же с чего-то начинать тендер

Если уже есть готовый код-«кирпичик», возвращающий % соответствия 2 текстовых переменных, то да, действительно. Потом просто сравнить возвращенный % для каждого пресета и показать наиболее релевантный, а CRF взять из готового значения <crf=>

Moderators ★★
() автор топика
Ответ на: комментарий от Moderators

Если бы ты написал внятное объяснение задачи, а не занимался бы клоунадой, этой простыни с обсуждением не было бы. А тебе просто выставляли бы цены. А поскольку ты сам только выезжаешь в тему и начинаешь понимать что тебе надо - результат закономерно уточняется. Выбить с тебя выходное значение для исходного примера потребовалось 12 часов, 2 суток уже идет обсуждение каким образом считать результат. И ты только сейчас начал давать показания, как должен идти расчет и от чего он должен зависеть. С тебя надо не сколько за программу деньги брать, а за то, что с тебя информацию клещами надо вытаскивать и допрашивать как дестапо.

Pro100User
()
Ответ на: комментарий от Moderators

Я примерно так для себя и делаю, тут наши мысли в които веки сошлись.

P.S. Тот тред не читал.

Dron ★★★★★
()

Я вот немного в догадках, набросал, считаю смотрю причастность каждого параметра к определённому пресету и начисляю баллы в итоге выхлоп такой, внизу баллы и примерное распределение между slow и fast в итоге. Но как более точно отнести к тому или иному пресету всё, пока не придумал. Ниже разбор для placebo

cabac=1 / ref=16 / deblock=1:0:0 / analyse=0x3:0x133 / me=tesa / subme=11 / psy=1 / psy_rd=1.00:0.00 / mixed_ref=1 / me_range=24 / chroma_me=1 / trellis=2 / 8x8dct=1 / cqm=0 / deadzone=21,11 / fast_pskip=0 / chroma_qp_offset=-2 / threads=3 / sliced_threads=0 / nr=0 / decimate=1 / interlaced=0 / bluray_compat=0 / constrained_intra=0 / bframes=16 / b_pyramid=2 / b_adapt=2 / b_bias=0 / direct=3 / weightb=1 / open_gop=0 / weightp=2 / keyint=250 / keyint_min=25 / scenecut=40 / intra_refresh=0 / rc_lookahead=60 / rc=crf / mbtree=1 / crf=23.0 / qcomp=0.60 / qpmin=0 / qpmax=69 / qpstep=4 / ip_ratio=1.40 / aq=1:1.00
dron@gnu:~/crfgen$ ./a.out 
[name][used][preset_family]
[aq][yes][fast]
[rc][yes][medium]
[deblock][yes][medium]
[analyse][yes][slower]
[me][yes][placebo]
[deadzone][yes][medium]
[psy_rd][yes][medium]
[subme][yes][placebo]
[psy][yes][medium]
[cabac][yes][medium]
[ref][yes][veryslow]
[mixed_ref][yes][medium]
[me_range][yes][slow]
[chroma_me][yes][medium]
[trellis][yes][slower]
[8x8dct][yes][medium]
[cqm][yes][medium]
[fast_pskip][yes][placebo]
[chroma_qp_offset][yes][medium]
[threads][yes][medium]
[sliced_threads][yes][medium]
[nr][yes][medium]
[decimate][yes][medium]
[interlaced][yes][medium]
[bluray_compat][yes][medium]
[constrained_intra][yes][medium]
[bframes][yes][placebo]
[b_pyramid][yes][medium]
[b_adapt][yes][slow]
[b_bias][yes][medium]
[direct][yes][slow]
[weightb][yes][medium]
[open_gop][yes][medium]
[weightp][yes][medium]
[keyint][yes][medium]
[keyint_min][yes][medium]
[scenecut][yes][medium]
[intra_refresh][yes][medium]
[rc_lookahead][yes][slower]
[mbtree][yes][medium]
[qpmin][yes][medium]
[qpmax][yes][medium]
[qpstep][yes][medium]
[crf][yes][medium]
[qcomp][yes][medium]
[ip_ratio][yes][medium]
ultrafast-[4]
superfast-[3]
veryfast--[1]
faster----[1]
fast------[1]
medium----[31]
slow------[3]
slower----[3]
veryslow--[1]
placebo---[4]
~fast [41] ~slow [42] 

Dron ★★★★★
()
Ответ на: комментарий от Dron

Но как более точно отнести к тому или иному пресету всё, пока не придумал.

Это комплекс из смежных параметров. Брать в зачет нужно все характерные для пресета параметры. Один пресет не сможет набрать подавляющего количества баллов, даже если параметры имеет точное соответствие пресету, при подсчете только характерных исключительно для него параметров, так medium всегда будет вырываться вперед. Писать проверку надо в полном объеме для каждого пресета.

Moderators ★★
() автор топика
Ответ на: комментарий от Moderators

Так, разбор всех параметров я написал в итоге портянка на 1286 строк из if/else :D c гуем на gtk3
Видео https://www.youtube.com/watch?v=HEVkwi5A2pc&feature=youtu.be
Многое надо рихтовать, код можно ужать раза в 2-3 меньше, нужно полностью перепроверить все точки определения пресета для каждой опции, так как вбиты только те что в шапке.

Можешь накидать список опций которые тебе нужно проверить?

Dron ★★★★★
()
Ответ на: комментарий от Dron

Можешь накидать список опций которые тебе нужно проверить?

Решил хитрым образом обойти тендер и продать уже готовую программу? Интересно, мож кто купит и исходники выложит)) Ну что же, по-брейнштормим немножечко. Впрочем, кроме CRF там уже нечего выдергивать.

Но есть еще вот что: https://superuser.com/questions/564402/explanation-of-x264-tune

Если сделать проверку значений описанных параметров, и настройка подобает содержанию, качество/объем видео будет еще лучше, и наоборот, хуже, если для фильма выбрали настройку animation, что его перешарпит. Таки да, полезная вещь, для выявления васянокодеров, и соответственно, превентивное НЕскачивание продуктов их жизнедеятельности.

Ну а совсем для PRO-версии можно сделать проверку на совместимость с железными плеерами. В общем, как почти любую программу, еще можно улучшать и улучшать, хотя казалось бы, что в этом парсере еще можно улучшить... Там глядишь и плагин для браузера, который уже на самом трекере без копипасты парсить будет, и автоматический поиск самого качественного релиза на трекере... Говорю же: полет фантазии - космос

Moderators ★★
() автор топика
Ответ на: комментарий от Moderators

Решил хитрым образом обойти тендер и продать уже готовую программу? Интересно, мож кто купит и исходники выложит))

Ну вот допустим я снова заявляю заявку в тендер к примеру ::)

Впрочем, кроме CRF там уже нечего выдергивать.

Для crf я добавил вывод так как все опции просто переводятся в int/char/float что бы можно было сравнивать диапазоны причастности к тому или иному пресету ну и тд. Некоторые опции имеют параметры чем больше тем медленьнее или наоборот это тоже учитывается. Но к примеру 0x0:0x133 сравнивается в лоб как строка.

Внести определение --tune можно прямо сейчас, это уже не сложно будет, спасибо за наводку, сегодня/завтра дополню.

В общем, как почти любую программу, еще можно улучшать и улучшать

Для себя мне хватит определения preset и tune с хардварными определениями надо уже гораздо детальнее вникать, гуй тоже в принципе надо как опционал делать так как чаще удобнее такое в cli использовать.

Dron ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.