Страницы

Поиск по вопросам

Показаны сообщения с ярлыком видео. Показать все сообщения
Показаны сообщения с ярлыком видео. Показать все сообщения

четверг, 13 февраля 2020 г.

С++ видеоуроки. Есть ли хорошие? Для чайника.

#java #cpp #видео


Доброго времени суток. Недавно начал изучать программирование, сейчас на этапе базового
ознакомления и выбора языка. Сейчас мой выбор пал на С++. Скажите, существуют ли хорошие
видеоуроки по данному языку? Хотим занятся с другом именно С++. Заодно, если не сложно,
опишите в чем его достоинства и что на нем можно вообще делать. В отличии от той же
Java. И что бы из этих двух вы посоветовали?    


Ответы

Ответ 1



Visual Studio Express 2010 - тут iso. С++ для начинающих - тут уроки (бесплатно).

Ответ 2



Могу только посоветовать аудиокнигу по с++ от Бьерна Страуструпа.

Ответ 3



Для обучения C++ могу посоветовать легковесный и достаточно простой компилятор - Dev C++ compiler. Сам набираю в нём учебные примеры программ. Скачать можно по этой ссылке

Ответ 4



Попробуйте wxDev C++ link text

Ответ 5



Если у вас склад ума программистская, то выбор единственно правильный. Что можно сделать/написать на С++? Все что мы видим на экранах ВСЕХ устройств, которые имеют ЭКРАН! ну там плюсминус... Если найдете "Керниган и Риччи. Язык программирования Си" для начала был бы идеальным вариантом!

Как сделать видеотрансляцию на своём сайте без использования сервисов-посредников [закрыт]

#веб_программирование #видео


        
             
                
                    
                        
                            Закрыт. Данный вопрос необходимо конкретизировать. Ответы
на него в данный момент не принимаются.
                            
                        
                    
                
                            
                                
                
                        
                            
                        
                    
                        
                            Хотите улучшить этот вопрос? Переформулируйте вопрос,
чтобы он был сосредоточен только на одной проблеме, отредактировав его.
                        
                        Закрыт 3 года назад.
                                                                                
           
                
        
Задача: организовать трансляцию с видео- или веб-камеры на своём сайте. При этом
должна быть возможность большого числа одновременных просмотров; чтобы не перегружать
компьютер, к которому подключена камера (и особенно - чтобы не перегружать интернет-канал
этого компьютера), система должна быть двухступенчатой: с камеры видео идёт в один
поток на хостинг, где лежит сайт; там его принимает программа-проигрыватель и оттуда
уже раздаёт зрителям. Словом, примерно то же, что делают многочисленные сервисы онлайн-телевещания
(yatv.ru и иже с ним), но не через сторонний сервис, а через программу на собственном
сайте.
Желательно, чтобы решение не требовало установки на хостинге дополнительных компонентов
(например, RTMP-сервера).
Я пробовал связку VLC media player (на компьютере с камерой) и Flowplayer (на сайте);
настройки делал по инструкции: http://tehnolux.com.ua/index.php?route=information/news&news_id=4.
Однако этот вариант не заработал. Всё ли верно в этой инструкции? Может быть, есть
какие-то моменты, которые там пропущены или указаны ошибочно?
Есть ли другие варианты кодировщика/плейера? Как их установить и настроить?    


Ответы

Ответ 1



Вариант есть разные. Например, на основе Darwin Streaming Server. Пример установки и настройки. Видео с примером использования

Ответ 2



Извините, если не совсем "профессиональный" ответ у меня, да и вопрос уже от 12 года, так что все наверное сильно изменилось. Но тем не менее для тех, кто как и я ищет ответ на аналогичные вопросы. Проще всего уже воспользоваться существующими платформами. Из моего исследования - это www.livestream.com, www.dacast.com]. Но там на английском и платно-дорого (достаточно дорого) Из русскоязычных - www.facecast.net, там трансляции от 990 р начинаются и настраиваются минут за 10 (тест бесплатно). Я (девушка, не профи) одну сама сделала без проблем для рекламы нашей настолки. И билеты можно продавать. Но там тоже есть свои нюансы... Поэтому если у кого есть еще рекомендации с русскоязычными сайтами для трансляций - буду благодарна за наводку на baritsa () mail ru (ютюб не рассматриваю, потому что хочу музыку использовать, а они блокируют трансляцию из-за авторских прав)

Ответ 3



Можно попробовать с помощью приложения на телефон (IP WebCam) можно вывести видео с камеры, а в некоторых программах даже и звук. Заходите по айпи который выдала программа, и через консоль с компа достаете код. Там ставите его на свой сайт

Как ограничить просмотр видеоролика по времени?

#php #javascript #jquery #видео


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

Люди, не имеющие абонемента, смогут просматривать видео только 20 секунд. Как лучше
всего решить? Т.е как обрезать видеоролики по времени?

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

Думаю, есть какие-то более оптимальные решения, чтобы не резать видео, а просто останавливать
возможность просмотра после 20 сек.
    


Ответы

Ответ 1



Сервер должен ограничить длительность. Варианты: Загружать 2 файла - надёжно, не создаёт сложностей и не увеличивает загрузку сервера. Требует больше места на сервере. Загружать полный файл, обрезать на сервере при скачивании. Удобно, не надо грузить 2 файла, не надо обрезать файл самому. Для большинства форматов это может вызвать существенную нагрузку на сервер. Нужен эффективный код для обрезки. Загружать полный файл, обрезать на сервере при загрузке. Удобно, не надо грузить 2 файла, не надо обрезать файл самому. Нужен код для обрезки. Загружать полный файл, но в формате, позволяющем резать файл в произвольных местах. Запоминать позицию лимита (номер байта) и для простых пользователей отдавать префикс файла. Вроде все хорошо, кроме того, что такой формат надо подобрать и всё в него сконвертировать. Плюс, остаётся вопрос о способе определения байта в файле. Использовать специальные steaming-протоколы. Этот вариант оставлю без комментариев. Любые попытки реализовать ограничение на клиенте позволят достать с сервера весь файл и просмотреть видео оффлайново.

Ответ 2



Не пробовал, и это не php решение. nginx умеет раздавать пседво-потоковое видео, а используемый для этого h264 streaming module, в частности, позволяет создавать виртуальные под-клипы из длинного исходного файла.

понедельник, 3 февраля 2020 г.

Получить видео VKontakte Api

#вконтакте #ios #vkontakte_api #видео


Привет всем) такая проблемка - не могу получить ссылку на видео.  Есть access_key,
vid, owner_id. Все это я получаю из newsfeed. Причем, на странице документации ВК,
если в поле для проверки запроса вписать просто owner_id, то без проблем выдает весь
список видеозаписей данного пользователя/группы, но если установить videos, то приходит
ответ типа

response: {
count: 1,
items: []
}

т.е., items - пустой. Причем я пробовал и с access_key и без него. 
Кто такое уже делал, подскажите, что у меня не так?    


Ответы

Ответ 1



Все, разобрался. В русской версии документации API неполное описание. Пользуйтесь английской версией!

Ответ 2



Обычно ВК не отдает прямой ссылки на видео Это потому-что используете заголовок запроса "User-Agent", если он пуст то тогда и будут прямые ссылки в files. Сделайте запрос типа: https://api.vk.com/method/video.get?videos=-53956136_169543800&access_token=%access_token% с пустым заголовком "User-Agent", выйдет: { 'response' : [1, { 'duration' : 1452, 'vid' : 169543800, 'views' : 4790, 'owner_id' : -53956136, 'player' : 'https://vk.com/video_ext.php?oid=-53956136&id=169543800&hash=06da65ec2f1a6d00', 'date' : 1408830421, 'link' : 'video-53956136_169543800', 'files' : { 'mp4_240' : 'https://cs543208.vk.me/u222975331/videos/fd8d6c3d4d.240.mp4?extra=d1xg726trlMQIwAZ4X8NTUJRI2kk-uw9TJ66bWZtq_odwiDxYverCALb8PNb_z-zjbPhvX07ftxnZRXZ-li8XiFKJZ_oEJnbrPVPqLrKUiFM9J1FfYFEEm3c5SfRXRDSSU29k7QTkS_7uTxg', 'mp4_720' : 'https://cs543208.vk.me/u222975331/videos/fd8d6c3d4d.720.mp4?extra=d1xg726trlMQIwAZ4X8NTUJRI2kk-uw9TJ66bWZtq_odwiDxYverCALb8PNb_z-zjbPhvX07ftxnZRXZ-li8XiFKJZ_oEJnbrPVPqLrKUiFM9J1FfYFEEm3c5SfRXRDSSU29k7QTkS_7uTxg', 'mp4_360' : 'https://cs543208.vk.me/u222975331/videos/fd8d6c3d4d.360.mp4?extra=d1xg726trlMQIwAZ4X8NTUJRI2kk-uw9TJ66bWZtq_odwiDxYverCALb8PNb_z-zjbPhvX07ftxnZRXZ-li8XiFKJZ_oEJnbrPVPqLrKUiFM9J1FfYFEEm3c5SfRXRDSSU29k7QTkS_7uTxg', 'mp4_480' : 'https://cs543208.vk.me/u222975331/videos/fd8d6c3d4d.480.mp4?extra=d1xg726trlMQIwAZ4X8NTUJRI2kk-uw9TJ66bWZtq_odwiDxYverCALb8PNb_z-zjbPhvX07ftxnZRXZ-li8XiFKJZ_oEJnbrPVPqLrKUiFM9J1FfYFEEm3c5SfRXRDSSU29k7QTkS_7uTxg' }, 'description' : 'Видео предоставлено группой [club53956136|AniZUR Аниме на любой вкус]

Следующая серия: http://vk.com/video-53956136_169543833', 'comments' : 5, 'title' : 'Hunter x Hunter Remake / Хантер x Хантер - 2 сезон 66 серия [Озвучка: Ancord]', 'image' : 'http://cs543208.vk.me/u222975331/video/m_1a4f8d0d.jpg', 'image_medium' : 'http://cs543208.vk.me/u222975331/video/l_7bbad3fc.jpg' } ] } Если нужен постоянный access_token(может быть опасно) вот: https://oauth.vk.com/authorize?client_id=3087106&scope=wall,offline&redirect_uri=http://api.vk.com/blank.html&display=page&response_type=token !Обновлено Новый ВК API теперь требует новый обязательный параметр: версию API: v=5.73(Актуальная на данный момент). И полная ссылка будет выглядеть примерно так: https://api.vk.com/method/video.get?videos=-53956136_169543800&access_token=%access_token%&v=5.73

Ответ 3



смотри, вот такой запрос: https://api.vk.com/method/video.get?v=5.12&videos=71057340_167884774_6e2f5cee5c04b2b898&access_token=myaccesstoken получаю такой ответ: { response = { count = 1; items = ( { comments = 4; date = 1395082963; description = "::::::\U0418\U041d\U0424\U041e\U0420\U041c\U0410\U0426\U0418\U041e\U041d\U041d\U0410\U042f \U0412\U041e\U0419\U041d\U0410:::::::\n:::::http://vkontakte.ru/club4121067:::::"; duration = 64; id = 167884774; "owner_id" = 71057340; "photo_130" = "http://cs540303.vk.me/u12911501/video/s_f1c9b9d6.jpg"; "photo_320" = "http://cs540303.vk.me/u12911501/video/l_074712cb.jpg"; player = "http://vk.com/video_ext.php?oid=71057340&id=167884774&hash=32fa35ec6b845a99"; title = "\U041e\U0442\U0434\U044b\U0445 \U0432 \U041a\U0440\U044b\U043c\U0443 - 2014 \U0423\U043a\U0440\U0430\U0438\U043d\U0430. "; views = 707; } ); }; } Обычно ВК не отдает прямой ссылки на видео, хотя иногда есть исключения (они в словаре files должны быть). В таком случае приходиться пользоваться ссылкой на плеер и открывать ее в браузере.

Ответ 4



Это потому-что используете заголовок запроса "User-Agent", если он пуст то тогда и будут прямые ссылки в files. На данный момент не работает. Доступ к секции "files" возможен лишь при авторизации как доверенное приложение, либо парсингом страницы https://vk.com/dev/video.get

Ответ 5



Возможно дело в owner_id видео. Параметр owner_id можно взять из данных newsfeed.get. То есть owner_id видео может отличаться от source_id поста, которому принадлежит видео, так как может быть перепост видео другой группой или пользователем.

воскресенье, 26 января 2020 г.

Java объединение видеофайлов в один FFmpeg

#java #видео #ffmpeg #javacv


Код:

for (File f : files) {
            FrameGrabber grabber = new FFmpegFrameGrabber(f.getPath());
            grabber.start();
            while ((frame = grabber.grab()) != null) {
                recorder.record(frame);
            }
            grabber.stop();
        }


И вроде работает нормально, но если файлов много, то долго очень. Есть какой-нибудь
метод у этой библиотеки, чтобы просто склеить файлы, а не "грабить" каждый? 
    


Ответы

Ответ 1



Посмотрите в сторону FfmpegController.concatAndTrimFilesMP4Stream(): package org.ffmpeg.android.test; import java.io.File; import java.util.ArrayList; import java.util.Locale; import net.sourceforge.sox.SoxController; import org.ffmpeg.android.Clip; import org.ffmpeg.android.FfmpegController; import org.ffmpeg.android.ShellUtils; public class ConcatTest { public static void test (String videoRoot, String fileTmpPath, String fileOut, double fadeLen) throws Exception { File fileTmp = new File(fileTmpPath); File fileAppRoot = new File(""); File fileVideoRoot = new File(videoRoot); FfmpegController fc = new FfmpegController(null, fileTmp); SoxController sxCon = new SoxController(null, fileAppRoot, null); ArrayList listVideos = new ArrayList(); String[] fileList = fileVideoRoot.list(); for (String fileVideo : fileList) { if (fileVideo.endsWith("mp4")) { Clip clip = new Clip(); clip.path = new File(fileVideoRoot,fileVideo).getCanonicalPath(); fc.getInfo(clip); clip.duration = clip.duration-fadeLen; listVideos.add(clip); } } Clip clipOut = new Clip (); clipOut.path = new File(fileOut).getCanonicalPath(); fc.concatAndTrimFilesMP4Stream(listVideos, clipOut, false, false, new ShellUtils.ShellCallback() { @Override public void shellOut(String shellLine) { System.out.println("fc>" + shellLine); } @Override public void processComplete(int exitValue) { if (exitValue < 0) System.err.println("concat non-zero exit: " + exitValue); } }); } } Взято отсюда

Ответ 2



Возможно это вам поможет: cmd="( " h264options="-vcodec libx264 -b 512k -flags +loop+mv4 -cmp 256 \ -partitions +parti4x4+parti8x8+partp4x4+partp8x8+partb8x8 \ -me_method hex -subq 7 -trellis 1 -refs 5 -bf 3 \ -flags2 +bpyramid+wpred+mixed_refs+dct8x8 -coder 1 -me_range 16 \ -g 250 -keyint_min 25 -sc_threshold 40 -i_qfactor 0.71 -qmin 10\ -qmax 51 -qdiff 4" outfile="out-`date +%F-%H%M.%S`.mp4" for i; do cmd="${cmd}ffmpeg -i $i -ab 256000 -vb 10000000 -mbd rd -trellis 2 -cmp 2 -subcmp 2 -g 100 -f mpeg -; " done cmd="${cmd} ) | ffmpeg -y -i - -threads 8 ${h264options} -vb 10000000 -acodec libfaac -ar 44100 -ab 128k -s 1280x720 ${outfile}" echo "${cmd}" eval ${cmd}

четверг, 23 января 2020 г.

Распознавание дубликатов видео

#алгоритм #видео #распознавание


Ищу open-source проект для решения следующей задачи:
Дано множество видеофайлов, среди которых нужно найти одинаковые. При этом одинаковые
видеозаписи в разном качестве и под разными кодеками тоже должны детектиться. То есть
сравнение по хэшу или по длине не подойдет, нужен глубокий анализ.
Лучшее, что я сейчас нашел -- это SOTU, но его исходники закрыты.
Так же буду благодарен за ссылки на хорошую теорию по этой теме.    


Ответы

Ответ 1



Как вариант от себя: если транскодер ничего не делает с видео, а только ужимает его (т.е. таймлайн остается равный), то можно сделать так (ну чисто теоретически): разделить видео на несколько кадров (сколько душе угодно) сравнить эти кадры Методы сравнения изображений можно подчерпнуть тут: http://compsciclub.ru/node/2003

вторник, 31 декабря 2019 г.

Python и FFmpeg: создать видео с аудио за один проход или иначе ускорить процесс

#python #windows #ffmpeg #видео


пытаюсь подружить Python и FFmpeg под Windows.

Необходимо из набора изображений и звуковых дорожек (хранятся в памяти программы
как numpy array) сделать одно длинное видео. 

Смог сделать это в 2 прохода: 


сначала создаю видео файл без аудио дорожки, 
потом прибавляю к нему аудио, но хотелось бы оптимальнее и быстрее:


 

ffmpeg -y -f rawvideo -vcodec rawvideo -s 1920x1080 -pix_fmt bgr24 -r 5.00 ^
       -i pipe:0 -an -vcodec libx264 -preset medium -pix_fmt yuv420p video.avi


- создаю видео

ffmpeg -y -f s16le -acodec pcm_s16le -ar 44100 -ac 1 ^
       -i pipe:0 -i video.avi -c:v h264 -c:a ac3 videoANDaudio.avi


- добавляю аудио.

Можно ли сделать это в 1 проход? Т.е. как то надо передавать видео и аудио одновременно,
в 2 потока. Думал о NamedPipe, но не нашел в интернете информацию о том, как его создать
в Windows.

PS. Предложите технологию, лучше FFmpeg, для решения задачи, если такая имеется.
    


Ответы

Ответ 1



Про обработку видео в Python PS. Предложите технологию, лучше FFMpeg для решения задачи, если такая имеется. PyAV Есть такой замечаетельный проект: PyAV. Это питонячие биндинги к libav. Для работы с видео в Python я использую его. АPI PyAV сильно не совпадает с аргументами ffmpeg и ванильного libav, но при этом оно кажется весьма понятным и логичным в контексте Python. PyAV: Пример https://gist.github.com/w495/7d843bd5d42fc35e15486ec60a87d9bf import av from av.video.frame import VideoFrame from av.video.stream import VideoStream # В этом списке будем хранить кадры в виде numpy-векторов. array_list = [] # Откроем контейнер на чтение input_container = av.open('input.mp4') # Применим «инверсное мультиплексирование» =) # Получим пакеты из потока. input_packets = input_container.demux() # Получии все кадры видео и положим их в `array_list`. for packet in input_packets: if isinstance(packet.stream, VideoStream): # Получим все кадры пакета frames = packet.decode() for raw_frame in frames: # Переформатируем кадры, к нужному размеру и виду. # Это лучше делать средствами pyav (libav) # потому что быстрее. frame = raw_frame.reformat(32, 32, 'rgb24') # Превратить каждый кадр в numpy-вектор (dtype=int). array = frame.to_nd_array() # Положим в список numpy-векторов. array_list += [array] # Откроем контейнер на запись. output_container = av.open('out.mp4', mode='w', format='mp4') # Добавим к контейнеру поток c кодеком h264. output_stream = output_container.add_stream('h264', rate=25) # В этом списке будем хранить пакеты выходного потока. output_packets = [] # Пройдем по списку векторов и упакуем их в пакеты выходного протока. for array in array_list: # Построим видео-кадр по вектору. frame = VideoFrame.from_ndarray(array, format='rgb24') # Запакуем полученный кадр. packet = output_stream.encode(frame) # Положим в список пакетов. output_packets += [packet] # Применим «прямое мультиплексирование» =) # Для каждого пакета вызовем мультиплексор. for packet in output_packets: if packet: output_container.mux(packet) output_container.close() Еще примеры: encode_frames.py — создает видео из последовательности переданных изображений; для работы с изображениями использует OpenCV. На самом деле, тут можно обойтись и без OpenCV. gen_rgb_rotate.py — создает видео, в котором цвет кадра меняется в последовательности цветов радуги. encode.py — записывает кадры исходного видео, до тех пор пока, их количество видео-кадров не превысит 100. Сам я активно использую PyAV в этом проекте: Video Shot Detector. Возможно, в его коде будет что-то полезное для Вас. https://github.com/w495/python-video-shot-detector PyAV: Установка Есть маленькая проблема в том, что PyAV достаточно тяжело собрать. Тем более под Windows. Для сборки из исходников требуются конкретные версии зависимостей (ffmpeg, h264 и пр.) Но есть уже готовые сборки для питонячьего пакетного менеджера conda. Я не пробовал, но кажется достаточно просто поставить conda на Windows: Выбираете нужный вам инсталлятор тут: Miniconda. Я предполагаю что это будет Python 2.7 64-bit (exe installer) Дальше запускаете и следуете его инструкциям. Далее как описано в Windows Miniconda Install в командной строке Windows conda list . После этого вам потребуется поставить нужные пакеты. conda install numpy conda install -c danielballan pyav # или conda install -c soft-matter pyav Я не уверен, что это все заведется под Windows — я не пробовал. Если нет, то на официальном сайте есть инcтрукция как собрать самостоятельно: PyAV Installation On Windows; + еще есть вот такая заметка PyAV for Windows. Авторы библиотеки весьма отзывчивы, и им можно смело задавать вопросы и писать о проблемах тут: PyAV Issues. Альтернативы Из альтернатив, еще наталкивался на Avpy — просто биндинг к ffmpeg и libav; pyffmpeg — тоже биндинг к ffmpeg; ffmpeg-cffi-py — еще один биндинг, работает только на Windows; pyVideoInput — используют свой обработчик видео без ffmpeg, выглядит он слишком заморочено; Python GStreamer — используют свой обработчик видео, пока не осилил, но при беглом осмотре, выглядит удобным; Python OpenCV — обработка видео через OpenCV изначально похожа на забивание гвоздей микроскопом; MoviePy — библиотека для не линейного монтажа видео, но кодировать ей тоже можно. Отчасти тоже забивание гвоздей микроскопом. Про Python GStreamer: Using GStreamer with Python; Getting started with GStreamer with Python; Python GStreamer Tutorial. Качество альтернатив Avpy у меня почему-то так и не завелся. pyffmpeg тоже сходу не собирается, а перед началом установки приходится править код. ffmpeg-cffi-py не смог найти путей до нужных библиотек. Остальные пока не пробовал.

Ответ 2



Про FFMpeg Кратко Можно ли сделать это в 1 проход Можно. Для этого нужно ffmpeg в одной команде передать и звук и видео. Это легко делается, если просто исходной команде передать еще один входной поток ffmpeg -f rawvideo -codec:v rawvideo -s 1920x1080 -pix_fmt bgr24 -r 5.00 -i pipe:0 # video -f s16le -codec:a pcm_s16le -ar 44100 -ac 1 -i pipe:0 # audio -codec:v libx264 -preset medium -pix_fmt yuv420p -codec:a ac3 Но проблема в том, что вы посылаете ему изображения и семплы через stdin (pipe:0). Самым простым решением было бы: Записать изображения из Вашей программы в один файл. Семплы записать в другой файл. причем эти действия можно совершать параллельно (multiprocessing); Оба файла скормить как -i filename. Предполагаю, что это будет работать быстрее. но хотелось бы оптимальнее и быстрее. Для FFmpeg ключ -threads со значением 0 позволяет работаеть многопоточно, и распределять вычисления по всем процессорам. Много букв У ffmpeg есть некоторая особенность — можно передавать много одноименных аргументов. Причем порядок этих аргументов имеет значение. Во многих случаях эта особенность не очень заментна. Но в какой-то момент сильно выстреливает. Порядок аргументов подчиняется следуюшей логике. Параметры входных потоков сначала общие: формат, смещение по времени и пр, что-то типа: -ss '00:05:00' — кодировать с пятой минуты. потом раздельные: видео, аудио, субтитры: -f rawvideo -codec:v rawvideo ...; -f s16le -codec:a pcm_s16le ...; Параметры выходных потоков сначала раздельные: видео, аудио, субтитры: -codec:v 'libx264' -profile:v 'main' -b:v '1000k' -filter:v "yadif=1:-1:0,scale=0:576"; -strict 'experimental' -codec:a 'aac' -b:a '196k' -ac '6'. потом общие: смещение по времени, формат контейнера и пр, что-то типа: * -ss '00:05:01' -to '00:05:30' * -movflags '+faststart' -f 'mp4' -y file_name.mp4 При соблюдении этой логики можно будет в одной команде собирать, видео более чем из одного потока. И даже больше чем в один поток: Creating Multiple Outputs. У меня под рукой есть несколько примеров (из Bulk Video Converter). Кажется, что запись видео с экрана и аудио с микрофона очень похожа на вашу ситуацию. /usr/bin/ffmpeg \ -threads '0' \ -f x11grab \ -s wxga \ -i ':0.0' \ -f alsa \ -i hw:0 \ -codec:v 'libx264' \ -profile:v 'main' \ -b:v '1000k' \ -filter:v "yadif=1:-1:0,scale=0:576" \ -codec:a 'libmp3lame' \ -b:a '196k' \ -f 'mp4' -y 'video_pal_sd.mp4' \ На *nix это работает. Предполагаю, что на Windows будет работать с точностью до имен кодеров. Я не до конца понимаю, вашу задачу, потому тут сейчас распишу, что означает каждый из аргументов. Настройки входных потоков: Входное видео: -f x11grab — формат аудио, в моем случае — название драйвера; -s wxga — размер входного видео-кадра, тут мы говорим ffmpeg как воспринимать, то что мы его передаем — в моем случае: размер моего монитора — -i ':0.0' — тут, номер дисплея, но возомжен любой иной источник; Входное аудио: -f 'alsa — формат аудио, в моем случае — название драйвера аудио-карты; -i 'hw:0' — тут, аудио-карты (входной поток — т.е. микрофон), но возможен любой иной источник; Настройки результирующих потоков: Результирующее видео: -codec:v 'libx264' — определяем кодек, которым будем кодировать видео (h264). -profile:v 'main' — профиль кодирования для h264. -b:v '1000k' — битрейт для видео-потока. -filter:v "yadif=1:-1:0,scale=0:576" — фильтры для видео-потока: yadif=1:-1:0 — убирает чересстрочность; scale=0:576 — приводит выходной видео-поток к ножному размеру — этот размер никак не соотносится с размером входного потока. Результирующее аудио: -codec:a 'libmp3lame' — определяем кодек, которым будем кодировать аудио (mp3). -b:a '196k' — битрейт для аудио-потока. Настройки результирующего файла (контейнера): * -f 'mp4' — формат, можно не указывать, и тогда ffmpeg попробует «догадаться» сам; * -y 'video_pal_sd.mp4' — флаг перезаписи -y и имя выходного файла.

пятница, 27 декабря 2019 г.

Какой алгоритм выбрать для стабилизации видео?

#c_sharp #java #cpp #видео


Столкнулся с проблемой стабилизации видео изображения веб-камеры. Пишу на c#.
Кто подскажет какой лучше алгоритм использовать или библиотеку.
Можно даже на другом языке.
В какую сторону копать в крайнем случае.
Буду благодарен за любой совет.    


Ответы

Ответ 1



В общем самый простой вариант - opencv

четверг, 5 декабря 2019 г.

Как сделать минимальный пример с видео на nodejs?

#nodejs #html5 #видео


Как не подключая сторонних модулей сделать пример http-сервера с видео на странице?
    


Ответы

Ответ 1



Вот минимальный пример: Берём два видео со страницы w3c по тегу видео: http://www.w3schools.com/html/html5_video.asp Сами файлы: http://www.w3schools.com/html/mov_bbb.mp4 http://www.w3schools.com/html/mov_bbb.ogg Делаем минимальную html-страницу (video-test.html): Test with video Пишем серверный код ($server-video.js): var http = require('http'); var fs = require('fs'); http.createServer(function (request, response) { var file = decodeURIComponent(request.url.substr(1)); var headers = {}; console.log(file); switch(file) { case "": case "video-test.html": file = "video-test.html"; headers['Content-Type'] = 'text/html; charset=UTF-8'; break; case "mov_bbb.mp4": headers['Content-Type'] = 'video/mp4'; break; case "mov_bbb.ogg": headers['Content-Type'] = 'video/ogg'; break; default: response.writeHead(404, { 'Content-Type': 'text/plain' }); response.end('Not found!'); return; } fs.stat(file, function (error, data) { if (error) { console.log(error); response.writeHead(500, { 'Content-Type': 'text/plain' }); response.end('An error occured while loading file information :('); } else if (!data.isFile()) { response.writeHead(403, { 'Content-Type': 'text/plain' }); response.end('Not a file'); } else { headers['Content-length'] = data.size; response.writeHead(200, headers); fs.createReadStream(file).pipe(response); } }); }).listen(8081); Запускаем node $server-video.js Убеждаемся, что видео воспроизводится, не работает только перемотка. Пробуем убрать из разметки mp4-версию и видим тот же результат. Почему не работает перемотка? Вероятно это происходит из-за того, что хром в таком случае хочет видеть поддержку partial-ответов, которую мы не реализовали.

суббота, 30 ноября 2019 г.

Распознавание лиц на видео и поиск совпадений в базе данных

#изображения #видео #нейронные_сети #распознавание_образов #распознавание


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

На входе в магазин есть камера. Необходимо обрабатывать изображение с камеры в реальном
времени, находить лица на видео и сверять их с базой данных, в которой хранятся фотографии.
Выдавать оповещение при нахождении совпадения лица вошедшего в магазин человека с фотографией
из бд.

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


Ответы

Ответ 1



Советую использовать фреймворк компании Neurotechnology: SentiVeillance SDK Обнаружение лица в реальном времени Одновременное отслеживание нескольких лиц или объектов в на кадре Расширенное обнаружение и классификация людей и отслеживание транспортных средств Классификация по половому признаку, оценка возраста, распознование наличие очков и волос на лице Поддержка больших систем наблюдения за счет подключения до 10 камер на одном компьютере и быстрая синхронизация между сетевыми компьютерами Кроссплатфовренный SDK, поддерживающий несколько языков программирования Подробнее... Так же на сайте доступны для скачки 30-ти дневная триал версия и демо приложение. Цена лицензии

Ответ 2



Как я понял, вам требуется готовая система распознавания лиц. The MegaFace Benchmark Можете посмотреть качество существующих алгоритмов по международному конкурсу The MegaFace Benchmark: http://megaface.cs.washington.edu/results/fgnetresults.html http://megaface.cs.washington.edu/results/fgnetresults_challenge2.html Там же приводятся названия алгоритмов/компаний к которым вы можете обратиться, чтобы купить/получить доступ к API их алгоритмов (коммерческие решения) или получить исходный код (open source решения). Из российских компаний хорошие позиции по качеству распознавания занимает NTechLab. Использование готовых API Также хорошим решением будет использование готового API качественного сервиса для распознавания лиц, чем писать с нуля свою собственную систему и выводить ее на конкурентный уровень качества (на что уйдут годы работы, т.к. для нормального качества распознавания недостаточно библиотеки Open CV, там надо внедрять полноценную 3D реконструкцию лица). Например, вот хороший вариант: https://www.faceplusplus.com/ У них множество API на самые разные случаи распознавания лиц (Face Searching, Face Detection, Return Face Attributes, Return Face Details) с возможностью ведения собственной базы данных "подозрительных" лиц (Add Face, Remove Face, Create FaceSet). В базовом варианте система бесплатна, в расширенном функционале они берут 0.001$ за запрос, а также можно купить лицензию на месяц/год. У вас приложение ориентировано на коммерческий сектор, потенциальные клиенты поймут, если вы включите в стоимость количество распознаваемых лиц (даже при ежедневном трафике магазина в 1000 человек дополнительные расходы у вас будут всего 1$). Алгоритм работы Можете использовать такое решение: Направляем анализируемые видеопотоки на собственные сервера, где проводим их покадровый разбор и сжатие информации до получения набора различающихся между собой фотографий. При помощи библиотеки Open CV вытаскиваете из получившегося набора фотографии лиц, по которым требуется провести распознавание. Сверяем фотографии по схожести хэшей или базовым признакам (чтобы не отправлять на распознавание повторно фото одного и того же лица в разные моменты времени или с другого ракурса). Если фотография лица уникальная, то отправляем ее через API сервиса (тот же Face++ или любой другой), получаем результат. В случае нахождения совпадения по базе выводим предупреждение пользователям системы (через SMS, Push-уведомления или интерактивный web-интерфейс на WebSockets). Отдельным моментом будет формирование базы "подозрительных" лиц. Если вы планируете ее делать "на лету" по данным вашего приложения, то можете сделать интерфейс добавления на основе снимка из видеопотока.

вторник, 9 октября 2018 г.

Как сделать минимальный пример с видео на nodejs?

Как не подключая сторонних модулей сделать пример http-сервера с видео на странице?


Ответ

Вот минимальный пример:
Берём два видео со страницы w3c по тегу видео: http://www.w3schools.com/html/html5_video.asp
Сами файлы: http://www.w3schools.com/html/mov_bbb.mp4 http://www.w3schools.com/html/mov_bbb.ogg Делаем минимальную html-страницу (video-test.html):

Test with video
Пишем серверный код ($server-video.js):
var http = require('http'); var fs = require('fs');
http.createServer(function (request, response) { var file = decodeURIComponent(request.url.substr(1)); var headers = {};
console.log(file);
switch(file) { case "": case "video-test.html": file = "video-test.html"; headers['Content-Type'] = 'text/html; charset=UTF-8'; break;
case "mov_bbb.mp4": headers['Content-Type'] = 'video/mp4'; break;
case "mov_bbb.ogg": headers['Content-Type'] = 'video/ogg'; break;
default: response.writeHead(404, { 'Content-Type': 'text/plain' }); response.end('Not found!'); return; }
fs.stat(file, function (error, data) { if (error) { console.log(error); response.writeHead(500, { 'Content-Type': 'text/plain' }); response.end('An error occured while loading file information :('); } else if (!data.isFile()) { response.writeHead(403, { 'Content-Type': 'text/plain' }); response.end('Not a file'); } else { headers['Content-length'] = data.size; response.writeHead(200, headers); fs.createReadStream(file).pipe(response); } }); }).listen(8081); Запускаем
node $server-video.js Убеждаемся, что видео воспроизводится, не работает только перемотка. Пробуем убрать из разметки mp4-версию и видим тот же результат.

Почему не работает перемотка?
Вероятно это происходит из-за того, что хром в таком случае хочет видеть поддержку partial-ответов, которую мы не реализовали.

четверг, 4 октября 2018 г.

Распознавание лиц на видео и поиск совпадений в базе данных

Стоит задача создать приложение, которое будет помогать охране супермаркета находить нечестных граждан.
На входе в магазин есть камера. Необходимо обрабатывать изображение с камеры в реальном времени, находить лица на видео и сверять их с базой данных, в которой хранятся фотографии. Выдавать оповещение при нахождении совпадения лица вошедшего в магазин человека с фотографией из бд.
Я никогда с подобными задачами не сталкивался и не знаю с чего начать. Может, есть какие-то готовые решения для распознавания лиц на видео и поиска совпадений? Вроде как в аэропортах и метро используют программы с необходимым мне функционалом.


Ответ

Советую использовать фреймворк компании Neurotechnology:
SentiVeillance SDK
Обнаружение лица в реальном времени Одновременное отслеживание нескольких лиц или объектов в на кадре Расширенное обнаружение и классификация людей и отслеживание транспортных средств Классификация по половому признаку, оценка возраста, распознование наличие очков и волос на лице Поддержка больших систем наблюдения за счет подключения до 10 камер на одном компьютере и быстрая синхронизация между сетевыми компьютерами Кроссплатфовренный SDK, поддерживающий несколько языков программирования
Подробнее...
Так же на сайте доступны для скачки 30-ти дневная триал версия и демо приложение
Цена лицензии

Распознавание лиц на видео и поиск совпадений в базе данных

Стоит задача создать приложение, которое будет помогать охране супермаркета находить нечестных граждан.
На входе в магазин есть камера. Необходимо обрабатывать изображение с камеры в реальном времени, находить лица на видео и сверять их с базой данных, в которой хранятся фотографии. Выдавать оповещение при нахождении совпадения лица вошедшего в магазин человека с фотографией из бд.
Я никогда с подобными задачами не сталкивался и не знаю с чего начать. Может, есть какие-то готовые решения для распознавания лиц на видео и поиска совпадений? Вроде как в аэропортах и метро используют программы с необходимым мне функционалом.


Ответ

Советую использовать фреймворк компании Neurotechnology:
SentiVeillance SDK
Обнаружение лица в реальном времени Одновременное отслеживание нескольких лиц или объектов в на кадре Расширенное обнаружение и классификация людей и отслеживание транспортных средств Классификация по половому признаку, оценка возраста, распознование наличие очков и волос на лице Поддержка больших систем наблюдения за счет подключения до 10 камер на одном компьютере и быстрая синхронизация между сетевыми компьютерами Кроссплатфовренный SDK, поддерживающий несколько языков программирования
Подробнее...
Так же на сайте доступны для скачки 30-ти дневная триал версия и демо приложение
Цена лицензии