Как стать автором
Обновить
3
0

Пользователь

Отправить сообщение

19 команд ffmpeg для любых нужд

Время на прочтение3 мин
Количество просмотров570K
От переводчика:
Многие знают, что ffmpeg — это сила, но не все знают, какая именно. Он многогранен и безграничен, а его man объёмен и местами малопонятен, лишь немногие постигли дао профессиональной работы с ним. И тем не менее, этот инструмент может быть полезен почти всем, кто хоть иногда работает с видео и звуком, даже на бытовом уровне. О некоторых полезных консольных командах ffmpeg и пойдёт речь в статье. В некоторых местах я взял на себя смелость вставить ссылки на поясняющие статьи.


ffmpeg — это кроссплатформенная open-source библиотека для обработки видео- и аудиофайлов. Я собрал 19 полезных и удивительных команд, покрывающих почти все нужды: конвертация видео, извлечение звуковой дорожки, конвертирование для iPod или PSP, и многое другое.

1. Получение информации о видеофайле

ffmpeg -i video.avi

2. Превратить набор картинок в видео

ffmpeg -f image2 -i image%d.jpg video.mpg

Эта команда преобразует все картинки из текущей директории (названные image1.jpg, image2.jpg и т.д.) в видеофайл video.mpg

(примечание переводчика: мне больше нравится такой формат:
ffmpeg -r 12 -y -i "image_%010d.png" output.mpg

здесь задаётся frame rate (12) для видео, формат «image_%010d.png» означает, что картинки будут искаться в виде image_0000000001.png, image_0000000002.png и тд, то есть, в формате printf)
Читать дальше →
Всего голосов 222: ↑214 и ↓8+206
Комментарии107

Учим язык, смотря сериалы: vlc + lua + stardict + wordnet + anki = l'amour

Время на прочтение3 мин
Количество просмотров129K
Очень уж мне нравится смотреть сериалы, а еще я учу с их помощью языки. И если раньше я прилежно останавливал видео на непонятном месте, перематывал назад, включал субтитры и забивал незнакомые слова в Анки, то сейчас я делаю то же самое. Разве что лень заставила этот процесс автоматизировать, что привело к созданию расширения Say It Again для проигрывателя VLC со следующими особенностями:

  • Навигация по субтитрам (переход к предыдущей, следующей фразе) — клавиши y, u;
  • Сохранение слова, его транскрипции и перевода вместе с контекстом (см. скриншот) — клавиша i;
  • Функция «Еще раз»: переход к предыдущей фразе, показ субтитра и пауза — клавиша backspace;
  • Подключение любых словарей в формате Stardict (в сети лежат словари из Lingvo x3);
  • Экспорт в Anki или другую программу, понимающую файлы в формате csv;


Say It Again screenshot


Зачем все это нужно и как это работает?
Всего голосов 118: ↑113 и ↓5+108
Комментарии55

Пример — часы на СSS3 без изображений и JavaScript

Время на прочтение9 мин
Количество просмотров91K


Это статья о том, как был сделан демонстрационный пример Wall Clock in Pure CSS3. Изначально, я предполагал написать данную статью в виде пошагового учебного пособия, но в процессе я понял, что такой пример мало для этого подходит. Потому я решил остановиться только на деталях, которые, на мой взгляд, наиболее интересны, а реализацию остального можно посмотреть и в коде.

Для начала собственно сам пример — на codepen.io или на cssdesk.сom

Читать дальше →
Всего голосов 222: ↑215 и ↓7+208
Комментарии73

Введение в Байесовские методы

Время на прочтение6 мин
Количество просмотров177K

В качестве введения


В настоящее время Байесовские методы получили достаточно широкое распространение и активно используются в самых различных областях знаний. Однако, к сожалению, не так много людей имеют представление о том, что же это такое и зачем это нужно. Одной из причин является отсутствие большого количества литературы на русском языке. Поэтому здесь попытаюсь изложить их принципы настолько просто, насколько смогу, начав с самых азов (прошу прощения, если кому-то это покажется слишком простым).
Подробности
Всего голосов 78: ↑70 и ↓8+62
Комментарии37

Поиск часто встречающихся элементов в массиве

Время на прочтение5 мин
Количество просмотров120K
Задача: в массиве длиной N найти элемент, который повторяется больше N/2 раз.

Казалось бы, чего тут думать? Возьмём Dictionary<значение элемента, число появлений>, за один проход по массиву сосчитаем появления каждого элемента, потом выберем из словаря искомый элемент. Решение за O(N), куда может быть ещё быстрее?

Есть один нюанс: для словаря нам потребуется O(N) дополнительной памяти — в несколько раз больше размера исходного массива, и это при реализации словаря хоть хэш-таблицей, хоть деревом. Что будем делать, если наша цель — обработка сигнала неким устройством с маленькой памятью? Массив — замеры уровня сигнала, из которых один — «настоящий» передаваемый уровень, а остальные — шум и помехи. Неужели придётся для определения «настоящего» уровня возиться с хэш-таблицами и деревьями?

К счастью, нет: достаточно O(1) дополнительной памяти, и по-прежнему одного прохода по массиву.
Читать дальше →
Всего голосов 105: ↑98 и ↓7+91
Комментарии38

Простая программа на ассемблере x86: Решето Эратосфена

Время на прочтение9 мин
Количество просмотров124K

Вступительное слово


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

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

До ее написания я сформулировал такие требования к будущей программе:
  • Моя программа не должна быть программой под DOS. Слишком много примеров ориентировано на нее в связи с простым API. Моя программа обязательно должна была запускаться на современных ОС.
  • Программа должна использовать кучу – получать в свое распоряжение динамически распределяемую память.
  • Чтобы не быть слишком сложной, программа должна работать с целыми беззнаковыми числами без использования переносов.

Задачей для своей программы я выбрал поиск простых чисел с помощью Решета Эратосфена. В качестве ассемблера я выбрал nasm.

Код я писал с упором больше на стиль и понятность, чем на скорость его выполнения. К примеру, обнуление регистра я проводил не с помощью xor eax, eax, а с помощью mov eax, 0 в связи с более подходящей семантикой инструкции. Я решил, что поскольку программа преследует исключительно учебные цели, можно распоясаться и заниматься погоней за стилем кода в ассемблере.

Итак, посмотрим, что получилось.
Читать дальше →
Всего голосов 47: ↑40 и ↓7+33
Комментарии25

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

Время на прочтение5 мин
Количество просмотров53K
Начал изучать NodeJS. Нигде не нашел актуальный стек мейнстримных библиотек (технологий) применяемых в node. Поэтому решил сам составить список.
Читать дальше →
Всего голосов 93: ↑83 и ↓10+73
Комментарии45

Топ-10 результатов в области алгоритмов за 2012 год

Время на прочтение4 мин
Количество просмотров49K
Каждый год 31 декабря David Eppstein публикует обзор препринтов за прошедший год, посвященных структурам данных и алгоритмам, опубликованным на arxiv.org. По ссылкам можно познакомиться с материалами за 2010 и 2011 (мой перевод) годы.

Раздел cs.DS развивается хорошими темпами: в этом году появилось 935 препринтов по алгоритмам и структурам данных, в то время как за 2011 их было 798. Раздел пока не дотягивает до сотни в месяц, хотя в июле (98 препринтов) этот порог был очень близок.

Это мой личный список из десятка препринтов, которые кажутся мне особенно интересными. Как обычно, я не вношу в него мои собственные работы и некоторые другие, о которых я писал раньше. Кроме того, здесь нет результатов (например, более быстрый алгоритм нахождения максимального потока), не появлявшихся на arxiv.org.

Вот они, в хронологическом порядке:
Читать дальше →
Всего голосов 114: ↑114 и ↓0+114
Комментарии8

Простая проверка безопасности на ваших серверах

Время на прочтение1 мин
Количество просмотров30K
Всем привет!

Предлагаю сделать простую проверку безопасности на ваших серверах.

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

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

С Новым Годом!
А как проверить то?
Всего голосов 81: ↑61 и ↓20+41
Комментарии60

Задачка про саммит G50 и рукопожатия

Время на прочтение3 мин
Количество просмотров12K
Мой друг получил письмо от рекрутера, ведущее на сайт с такой задачкой:
На саммите большой пятидесятки собрались представители пятидесяти государств. От каждого государства присутствовал президент и премьер-министр. В перерыве между [дискуссиями] участники обменялись дипломатическими рукопожатиями, при этом, так как рукопожатия совершались в дипломатических целях, ни один президент не обменивался рукопожатиями с премьер-министром своей страны.

На званом обеде, посвящённом закрытию саммита, президент Анчурии опросил всех участников, кто сколько сделал рукопожатий, и не получил ни одного повторяющегося ответа. Сколько рукопожатий сделала премьер-министр Анчурии?

Как оказалось, задача имеет единственное решение.
Spoiler!!! Решение под катом
Всего голосов 59: ↑49 и ↓10+39
Комментарии33

Алгоритм поиска пути Jump Point Search

Время на прочтение6 мин
Количество просмотров124K
Этот алгоритм является улучшенным алгоритмом поиска пути A*. JPS ускоряет поиск пути, “перепрыгивая” многие места, которые должны быть просмотрены.  В отличие от подобных алгоритмов JPS не требует предварительной обработки и дополнительных затрат памяти. Данный алгоритм представлен в 2011 году, а в 2012 получил высокие отклики. Что из себя представляет данный алгоритм и его реализацию можно прочитать дальше в статье.


Читать дальше →
Всего голосов 110: ↑108 и ↓2+106
Комментарии37

Рендер Diablo3. Как это работает

Время на прочтение7 мин
Количество просмотров116K
Как устроены графические движки популярных игр с мировым именем? Какие технологии применяют разработчики в самых крупных игровых компаниях? Действительно ли, чтобы сделать красивую игровую графику необходимо применять самые передовые технологии современной 3D графики? На эти вопросы мы попробуем ответить на примере рендер части игры Diablo3, от компании Blizzard Entertainment.
Читать дальше →
Всего голосов 283: ↑276 и ↓7+269
Комментарии130

Векторная графика на рассеянных кривых

Время на прочтение2 мин
Количество просмотров35K

Векторное изображение на рассеянных кривых

Долгое время возможности векторной графики были ограничены только линейными и круговыми градиентами, в результате чего можно было создавать лишь «плоские» изображения с определённым набором фигур. Настоящим прорывом стали смешанные градиенты (gradient mesh), которые впервые сделали векторную графику фотореалистичной. Группа французских исследователей под руководством Александрины Орзан (Alexandrina Orzan) из Технологического института в Гренобле в 2008 году сделала следующий шаг на пути развития векторной графики. Они разработали инструменты для генерации векторной графики на рассеянных кривых (diffusion curves), в том числе программу для автоматической конвертации растровых изображений в векторные.
Читать дальше →
Всего голосов 87: ↑80 и ↓7+73
Комментарии40

Алгоритм обратного распространения ошибки с регуляризацией на c#

Время на прочтение14 мин
Количество просмотров85K
Привет. Я хочу продолжить тему реализации методов машинного обучения на c#, и в этой статье я расскажу про алгоритм обратного распространения ошибки для обучения нейронной сети прямого распространения, а также приведу его реализацию на языке C#. Особенность данной реализации в том, что реализация алгоритма абстрагирована от реализаций целевой функции (той, которую нейросеть пытается минимизировать) и функции активации нейронов. В итоге получится некий конструктор, с помощью которого можно поиграться с различными параметрами сети и алгоритма обучения, посмотреть и сравнить результат. Предполагается, что вы уже знакомы с тем, что такое искусственная нейросеть (если нет, то настоятельно рекомендую для начала изучить википедию или одну из подобных статей). Интересно? Лезем под кат.

Читать дальше →
Всего голосов 38: ↑31 и ↓7+24
Комментарии46

Как vim затмение победил(ходим по функциям как в eclipse)

Время на прочтение2 мин
Количество просмотров13K
Все началось с того что eclipse+pdt стал много съедать моего рабочего времени доедая последние метры двугектарной оперативы моего ноута. Знай вы, уважаемые хабралюди, к этому моменту про какой ноут идет речь, вам бы так же показался мой выбор очевидным. Но к моему разочарованию TextMate оказался не стоящим тех полсотни баксов, которые за него просят. Не судите строго! Один из основных критериев для меня была возможность бегать от вызовов к объявлениям функций… в нашем проекте это очень полезная функция :) Так вот в книге по textmate на это я не нашел ни даже намеков, а ближайший соратник на утро сказал, что textmate это все же редактор, но хватит о textmate — о нем еще немного в конце. А поскольку я все же *nix-оид со стажем — первой бесплатной альтернативой стал ***VIM*** тада!!!

Читать дальше →
Всего голосов 49: ↑35 и ↓14+21
Комментарии38

Монады с точки зрения теории категорий

Время на прочтение9 мин
Количество просмотров35K

Введение

Кажется, монады в программировании стали загадкой века. И для этого есть две причины:
  • недостаточное знание теории категорий;
  • многие авторы стараюстся не упоминать категории вообще.
Это как говорить об электричестве не используя мат. анализ. Достаточно для замены предохранителя, не хватит, чтобы спроектировать усилитель.

Мы начнём с простого введения в категории и функторы, затем дадим определение монады, приведём простые примеры монад в категориях и в конце приведём монадическую терминологию используемую в языках программирования.

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

Содержание

  1. Категория
  2. Функтор
  3. Естественное преобразование
  4. Монада
  5. Монады исключения и состояния
  6. Монады в программировании
  7. Ссылки
Читать дальше →
Всего голосов 126: ↑105 и ↓21+84
Комментарии151

Быстрое индексное умножение по модулю

Время на прочтение4 мин
Количество просмотров37K

Введение


Обычно данный материал приводится с обилием формул и рассчитан больше на математиков. Я постараюсь расписать его наиболее доступно на простых численных примерах с точки зрения применения этого метода в микроэлектронике на аппаратном уровне. В численных примерах для наглядности будет использоваться значение p = 11.

Постановка задачи


Положим, что нам требуется выполнить умножение следующего вида: res = (a*b) mod p, где
0 <= a < p
0 <= b < p
p – простое число.
mod p – операция нахождения остатка по модулю.
И выполнить его надо на низком уровне, где нет как таковой операции умножения и операции взятия остатка от деления или же они реализуются достаточно сложно (например, в электронном устройстве).
Подробности
Всего голосов 42: ↑41 и ↓1+40
Комментарии23

Введение в модулярную арифметику

Время на прочтение6 мин
Количество просмотров76K
В обычной жизни мы обычно пользуемся позиционной системой счисления. В позиционной системе счисления значение каждого числового знака (цифры) в записи числа зависит от его позиции (разряда) [1]. Однако существуют и так называемые «непозиционные системы счисления», к одной из которых относится «система остаточных классов» (СОК) (или в оригинале Residue Number System (RNS)), являющаяся основой модулярной арифметики. Модулярная арифметика базируется на «Китайской теореме об остатках» [2], которая для нашего случая звучит следующим образом:
Для любой системы взаимно простых чисел p1, … pn, любое число X из диапазона [0; M), где M = p1*p2*…*pn взаимооднозначно представимо в виде вектора (a1, a2, …, an), где ai = X%pi (здесь и далее «%» — операция взятия остатка от целочисленного деления X на pi).
p1, … pn – модули системы
a1, a2, …, an – остатки (вычеты) числа по заданной системе модулей

Читать дальше →
Всего голосов 85: ↑80 и ↓5+75
Комментарии39
2

Информация

В рейтинге
Не участвует
Откуда
Россия
Дата рождения
Зарегистрирован
Активность