Впихиваем данные в видео, быстрее чем раньше (или творчество программиста)
Продолжаю делать отчеты о проделанной работе над моей программой для хранения данных внутри видео, с возможностью использовать сайты типа Youtube.
Решил посмотреть какое место в моей программе самое тормозное. Запустил профайлер и долго пытался понять почему указанное место вообще может тормозить.
Подробности, если хотите, будут в комментариях, если кратко - класс BlockingCollection (решение для передачи данных между потоками) кушает немного ЦПУ если нужно подождать действие другого потока, а в моей реализации данная ситуация возникала очень часто.
После внесенных изменений программа заработала в среднем в 2 раза быстрее (по субъективным тестам).
Также кодирование через DCT заменено с вещественного (дробные числа) на целочисленную реализацию из семейства кодеков AVC/H264. Данное изменение позволило уменьшить количество ошибок, что в свою очередь позволяет увеличить плотность кодирования (для случая Youtube - с 5 до 7 бит на блок), что также дает прирост скорости работы.
Обновление программы пока не делал - хочу сначала попробовать добавить стеганографию через DCT+LSB (еще бы сначала разобраться как лучше это сделать).
Репозиторий где можно скачать программу и посмотреть исходники https://bitbucket.org/Filarius/videofy
Предыдущие отчеты можно посмотреть в моей профиле http://pikabu.ru/profile/wingblack
Приветствую ваши пожелания по улучшению программы.
Привет, ты программу еще не забросил? Она у меня по какой-то причине не работает. Точнее, работает только под отладчиком и если повезет. Застывает на каком-нибудь проценте, использование процессора 0. Ffmpeg запущен, но ему ничего не передается. Судя по всему, застревание где-то в Pipe.cs.
Проц Intel Core 2 Duo E8200, винда 7 x64.
Привет. Очень нужная программа получилась, правда подружился только с версией 0.1.0.1. В чёрно-белом режиме минимально "ожиряет" исходный файл, хоть и проигрывает в длине. Вопрос вот в чём: можно попросить добавить кодирование видео в 60 фпс для этой версии (0.1.0.1)? Если конечно это не сильно сложно и есть время. :)