Здравствуйте, sergey2b, Вы писали:
S>подскажите пожалуйста идею для S>pet проекта что бы получить опыт с кодеками H.264/AVC, HEVC, and AV1.
О! И еще вспомнилось.
Есть куча ведеофайлов в разных форматах. Требуется написать утилиту, которая среди них найдет похожие. У похожих может быть немного вставлено/отрезано в начале/в конце. Кроме того, два одинаковых кина, записанных с разными разрешениями, тоже следует считать похожими.
Понятно, что прямолинейное решение — это задача распознавания и сличения образов.
Но у меня есть гипотеза, что если взять видеопоток, разбить его на фреймы, посчитать простые статистические характеристики каждого фрейма, типа размера по отношению к среднему, средней яркости, средней окрашенности и т.п., представить это в виде последовательности во времени, нормализовав точки отсчета и откоррелировать полученные последовательности, то степень корреляции будет неплохо показывать степень похожести фильмов, причем независимо от разрешающей способности и т.п. (но, возможно, зависимо от использованного кодека).
Здравствуйте, Pzz, Вы писали:
Pzz>Но у меня есть гипотеза, что если взять видеопоток, разбить его на фреймы, посчитать простые статистические характеристики каждого фрейма, типа размера по отношению к среднему, средней яркости, средней окрашенности и т.п., представить это в виде последовательности во времени, нормализовав точки отсчета и откоррелировать полученные последовательности, то степень корреляции будет неплохо показывать степень похожести фильмов, причем независимо от разрешающей способности и т.п. (но, возможно, зависимо от использованного кодека).
можно посчитать хеш фрейма
спасибо за идеи
мне нужна практика в внутренностях кодека а не использовать чужой кодек
S>pet проекта что бы получить опыт с кодеками H.264/AVC, HEVC, and AV1.
А что конкретно хочешь, какого плана опыт? Цель конечная какая? Можно получить опыт тюнинга кодеков, можно просто научиться их скармливать в ффмпег, можно узнать отличия, можно научиться реализовывать каждый из них и оптимизировать.
В качестве общих идей:
— написать анализатор/вьювер для хедеров: руками парсить по спекам и выводить значения полей
— сделать утилиту, которая в несколько потоков кодирует в три кодека, красиво это отображает в виде прогресс бара или еще как-то, считает скорость и битрейт (размер). В конце выводит статистику. Можно еще и качество посчитать и добавить к статистике. Можно даже заморочиться с RD-кривыми (гуглить)
Много чего можно. Тут еще важно, сможешь ли ты это применять (и хочешь ли) или же просто абстрактное что-то сделать.
Pzz>О! И еще вспомнилось. Pzz>Есть куча ведеофайлов в разных форматах. Требуется написать утилиту, которая среди них найдет похожие. У похожих может быть немного вставлено/отрезано в начале/в конце. Кроме того, два одинаковых кина, записанных с разными разрешениями, тоже следует считать похожими. Pzz>Понятно, что прямолинейное решение — это задача распознавания и сличения образов. Pzz>Но у меня есть гипотеза, что если взять видеопоток, разбить его на фреймы, посчитать простые статистические характеристики каждого фрейма, типа размера по отношению к среднему, средней яркости, средней окрашенности и т.п., представить это в виде последовательности во времени, нормализовав точки отсчета и откоррелировать полученные последовательности, то степень корреляции будет неплохо показывать степень похожести фильмов, причем независимо от разрешающей способности и т.п. (но, возможно, зависимо от использованного кодека).
Можно же ключевые кадры одного видео сравнивать с другим, обычная корреляция (сопоставление сигналов). Ну т.е. если они совпадают,
но могут быть сдвинуты.
S>Можно же ключевые кадры одного видео сравнивать с другим, обычная корреляция (сопоставление сигналов). Ну т.е. если они совпадают, S>но могут быть сдвинуты.
может быть разная освещенность или разрешение кадров
Здравствуйте, sergey2b, Вы писали:
S>>Можно же ключевые кадры одного видео сравнивать с другим, обычная корреляция (сопоставление сигналов). Ну т.е. если они совпадают, S>>но могут быть сдвинуты. S>может быть разная освещенность или разрешение кадров
Здравствуйте, sergey2b, Вы писали:
S>подскажите пожалуйста идею для S>pet проекта что бы получить опыт с кодеками H.264/AVC, HEVC, and AV1.
Не знаю, подходит ли или нет. Но вот мне например нужна просто библиотека, позволяющая банально создать видеофайл из набора кадров. Я хочу побаловаться с графикой, генерировать эти кадры и сохранять в видео.
Сохранять каждый кадр в файл картинки и затем утилитой создавать из них видео — не предлагать.
Здравствуйте, Pzz, Вы писали:
Pzz>Есть куча ведеофайлов в разных форматах. Требуется написать утилиту, которая среди них найдет похожие.
Да, тоже об этом думал: бардак в видеоархиве — страшная вещь. Притом я когда-то писал поиск дубликатов файлов, и глядя на эту задачу не знаю как к ней подступиться. Притом мне бы хватило возможности сравнивать видео, отличающееся только форматом и разрешением. Файлы сравнить просто, а с видео и картинками всё сложно.
Всё сказанное выше — личное мнение, если не указано обратное.
Здравствуйте, sergey2b, Вы писали:
S>подскажите пожалуйста идею для S>pet проекта что бы получить опыт с кодеками H.264/AVC, HEVC, and AV1.
Попробуй, для начала, написать утилиту, которая сравнивает 2 видеофайла. Они могут иметь разное разрешение и вразных контэйнерах.
Это уже полезным делом будет.
Всё сказанное выше — личное мнение, если не указано обратное.
Ф>Попробуй, для начала, написать утилиту, которая сравнивает 2 видеофайла. Они могут иметь разное разрешение и вразных контэйнерах. Ф>Это уже полезным делом будет.
мне надо подготовиться к собеседованию на программиста кодеков на verilog
книгу по кодекам я нашел и начал читать нужна задачка для практики именно по внутренниму устройству кодеков
то что вы пишите я могу написать используя avcodec
Ф>Да, тоже об этом думал: бардак в видеоархиве — страшная вещь. Притом я когда-то писал поиск дубликатов файлов, и глядя на эту задачу не знаю как к ней подступиться. Притом мне бы хватило возможности сравнивать видео, отличающееся только форматом и разрешением. Файлы сравнить просто, а с видео и картинками всё сложно.
я писал библиотеку которая детектирует движение в помоещении где свет постоянно мигает
Здравствуйте, Pzz, Вы писали:
Pzz>Есть куча ведеофайлов в разных форматах. Требуется написать утилиту, которая среди них найдет похожие. У похожих может быть немного вставлено/отрезано в начале/в конце. Кроме того, два одинаковых кина, записанных с разными разрешениями, тоже следует считать похожими.
Pzz>Понятно, что прямолинейное решение — это задача распознавания и сличения образов.
Pzz>Но у меня есть гипотеза, что если взять видеопоток, разбить его на фреймы, посчитать простые статистические характеристики каждого фрейма, типа размера по отношению к среднему, средней яркости, средней окрашенности и т.п., представить это в виде последовательности во времени, нормализовав точки отсчета и откоррелировать полученные последовательности, то степень корреляции будет неплохо показывать степень похожести фильмов, причем независимо от разрешающей способности и т.п. (но, возможно, зависимо от использованного кодека).
Во, это прямо моя мечта, хочу такое сделать, когда всё остальное переделаю и заняться будет категорически нечем
Еще добавлю, что хотелось бы детектить вариант, когда один видос является фрагментом другого.
Ещё — что бы умело детектить смену сцены/ракурса (когда изображение радикально меняется), выставлять тайминги, и выдавать описание сцены. И чтобы можно было помечать что вот это вот — реклама, или ещё какая-то лажа, и чтобы можно было это вырезать. Ну, или сделать нарезку сцен по размеченному списку.
Но это уже наверное пожелания к видеоредактору, альфа вроде делает тут? Чтобы прога нашла смены сцен, выдала скрипт к редактору, и бы потыкал по сценам, указал что удалить.
Ну и самое интересное — чтобы умело людей узнавать узнавать. Ну, и ещё, может, определяло автоматом жанр видоса
По поводу алгоритмов — видосы могут быть пересемпленными с разным фреймрейтом. Думал пережимать в один небольшой рейт, разбивать на картинки-кадры, даунсемплить их в один небольшой размер, и делать сравнение по таким кадрам. Тут и смену кадра можно наверное отслеживать — по слишком большой разнице между соседними кадрами. Оставался ещё вопрос, как определять, как сравнивать два одинаковых видоса, но на один был наложен светофильтр какой-нибудь, типа сепию наложили
S>мне надо подготовиться к собеседованию на программиста кодеков на verilog S>книгу по кодекам я нашел и начал читать нужна задачка для практики именно по внутренниму устройству кодеков
с этого и надо было начинать...
в таком случае я посоветую читать исходники референсных или просто опен-сорсных енкодеров/декодеров и разбираться, как оно устроено, сопоставляя со спеками на стандарты
ну далее и можно попробовать написать свой декодер с самым простым набором фичей и без оптимизаций