Search
Write a publication
Pull to refresh
15
0
Алексей Розман @alexyr

Python developer

Send message

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

Reading time3 min
Views583K
От переводчика:
Многие знают, что 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)
Читать дальше →

Использование домашнего интернета на работе, обходим ограничения контента

Reading time3 min
Views41K

Введение


Здравствуйте, товарищи!
Сразу оговорюсь, что статья не рассчитана на профессионалов, но и на блондинок она не рассчитана, а скорее предназначена для людей нуждающихся в полноценном доступе к интернету с прямыми руками и энтузиазмом.
Началось все с того, что у меня на работе ввели ограничения по ресурсам, на которые можно заходить. А посещать всякого рода сайты естественно хочется, ну и не хочется палиться в логах.
Вариантов решения проблемы несколько:
  • Тор сети
  • Покупка VPN сервиса
  • Настройка домашнего OpenVPN сервера для обхода ограничений рабочей сети.

О последнем варианте и пойдет речь, кого заинтересовал прошу под кат.
Вперед к свободе!

Бездисковая загрузка с использованием PXE и iSCSI на примере Ubuntu

Reading time17 min
Views53K
Здравствуйте.

В этой статье будет рассказано, как запилить сервер, который будет при включении грузиться по PXE, потом монтировать корневую файловую систему по iSCSI и спокойно жить дальше.

Что необходимо?


Для загрузки системы нужны три компонента: ядро, initramfs и корневая файловая система.
Ядро и initramfs мы передадим по TFTP, а корневую файловую систему — по iSCSI.

iSCSI-таргеты


Небольшой ликбез по iSCSI
iSCSI — реализация протокола SCSI поверх TCP. Сам протокол SCSI весьма универсален, теоретически с его помощью можно подключить устройство любого типа. Тем не менее, в большинстве случаев SCSI используется для доступа к тем или иным устройствам хранения данных (жёсткие диски, приводы CD и DVD и т. п.). Для примера Mass Storage Device, использующийся в USB-устройствах, является реализацией SCSI поверх USB. Поэтому, кстати, флешки в Linux опознаются как /dev/sdX-устройства. Использующаяся на серверах шина SAS также является реализацией SCSI (собственно, это видно из названия — Serial Attached SCSI).
В iSCSI различаются понятия таргета (target, целевое устройство, осуществляет приём и выполнение запросов) и инициатора (initiator, порождает запросы). В более привычных терминах таргет — это сервер, а инициатор — клиент.
Таргеты и инициаторы бывают разных видов. iSCSI-таргетом может выступать обычный компьютер, сервер или система хранения данных. Инициаторами обычно выступают сетевые карты (в их ROM бывает прошит необходимый код) или software-реализации.

Для Ubuntu возможно использовать различные iSCSI-таргеты. Вот неполный их список:
  • ISCSI Enterprise Target — одна из самых старых реализаций iSCSI-таргета на Linux. Насколько мне известно, жива и здравствует, однако требует установки (в Ubuntu) через DKMS и совсем лёгкого дребезга бубнов. На opennet.ru есть рабочий HOWTO, применимый и к более поздним версиям ОС (Precise)
  • SCSI Target Framework (STGT/TGT) — реализация iSCSI-таргета, портированная из BSD-систем. В отличии от IET, позволяет использовать не только iSCSI, но и другие родственные технологии (такие, как, например, SRP). К сожалению, код STGT в части iSCSI в линуксе работает в userspace. Как следствие, производительность получается где-то в районе плинтуса.
  • SCST — новая реализация универсального таргета для Linux. По заявлениям разработчиков обладает массой преимуществ и фишек. В ядро не включена, для установки требует патчей исходников ядра и продолжительного зубодробительного секса. По слухам, мила, прекрасна и похожа на сакуру. Когда-то давно ее использовали, например, в Оверсан-Скалакси (их опыт вкратце описан на хабре). Пакеты для Ubuntu перестали поддерживаться около полутора лет назад, в SVN есть некоторая активность, то есть проект жив и здравствует. Кстати, разработчики — русские парни :)
  • LIO — Linux Unified Target, универсальная система, реализующая iSCSI, SRP, FCoE и несколько других вариантов экспорта устройств в сеть. Официально включена в ядро и является стандартным таргетом, начиная с версии 2.6.38. К ней есть определенные претензии в плане того, что на официальном сайте активно продвигается проприетарная сборка, обладающая большим функционалом, но оставим вопли RMS.

Читать дальше →

Leap Motion. Распаковка и небольшой обзор

Reading time2 min
Views85K

Вместо предисловия


Наконец и я дождался устройства. Проблема была в том, что заказал на домашний адрес, а не на рабочий и курьер меня не поймал, когда был дома. Как некотрые из вас, возможно, догадались, речь пойдет о Leap Motion.



Для тех, кто хотел бы вспомнить или вообще узнать о возможностях Leap Motion могут по читать по ссылке или посмотреть небольшое видео.


Читать дальше →

Параллельное программирование в Python при помощи multiprocessing и shared array

Reading time6 min
Views102K

Введение.


Python замечательный язык. Связка Python + NumPy + Matplotlib, на мой взгляд, сейчас одна из лучших для научных расчётов и быстрого прототипирования алгоритмов. Но у каждого инструмента есть свои светлые и тёмные стороны. Одной из самых дискутируемых особенностей Python является GIL – Global Interpreter Lock. Я бы отнёс эту особенность к тёмной стороне инструмента. Хотя многие со мной не согласятся.

Если кратко, то GIL не позволяет в одном интерпретаторе Python эффективно использовать больше одного потока. Защитники GIL утверждают, что однопоточные программы при наличии GIL работают намного эффективнее. Но наличие GIL означает, что параллельные вычисления с использованием множества потоков и общей памяти невозможны. А это достаточно сильное ограничения в современном многоядерном мире.

Один из способов преодоления GIL при помощи потоков на C++ был недавно рассмотрен в статье: Использование Python в многопоточном приложении на C++. Я же хочу рассмотреть другой способ преодоления ограничений GIL, основанный на multiprocessing и shared array. На мой взгляд, этот способ позволяет достаточно просто и эффективно использовать процессы и разделяемую память для прозрачного параллельного программирования в стиле множества потоков и общей памяти.
Читать дальше →

Пишем свой плагин для XBMC. Пока без блекджека и всех остальных

Reading time13 min
Views43K

Всем привет. Речь в топике пойдёт о создании плагина (программного дополнения, аддона) к замечательной программе XBMC. Уровень сложности: для начинающих. Понадобятся знания HTML и общее представление о работе сайтов; не помешает знать как выглядит Python. Не ждите под катом уникальных алгоритмов и магического кода, это скорее отправная точка и общее объяснение механики работы плагинов. Код будет, надеюсь, наглядным.

Некоторые из вас могут спросить: «Ведь есть репозиторий seppius, который решает почти все проблемы с воспроизведением онлайн-контента в рунете (в контексте XBMC). Зачем велосипеды?». Я приведу свои доводы в небольшом предисловии.

Читать дальше →

Светодиодная лента в качестве освещения комнаты

Reading time15 min
Views1.3M
Изначально для основного освещения одной из комнат, где шёл капитальный ремонт, планировалась обычная люстра. Но недавно мне на глаза попалась суперяркая светодиодная лента Ultra 5000 со светодиодами smd 5630 торговой марки Arlight. Решение было принято быстро, окончательно и бесповоротно — хочу такую ленту в качестве основного света в комнате.



О реализации светодиодного периметра освещения далее

Не работает AVR USB Программатор? Настроим

Reading time4 min
Views96K
Не работает программатор

Данная статья написана для тех, кто только начинает учиться программировать микроконтроллеры.
Гуру микроконтроллинга здесь делать нечего, а вот новичкам, столкнувшихся с проблемами китайского производства. Или нелепой фасовкой готовых программаторов или людей делающих первый шаг в радиоэлектронику эта статья может быть весьма-весьма полезной. Я так же опишу методы поиска неисправностей, с которыми столкнулся сам. Не у всех людей есть выдержка, тем более Интернет для этого и создан, что бы делиться опытом, не так ли?
Не работает программатор AVR — тысячи запросов в Яндексе и Гугл. Не работает USB asp — еще больше. Сотни сайтов, на которые попадаешь и везде читаешь одно и тоже, как кто то собирает очередной программатор, но ни кто, повторюсь НИ КТО не пишет, почему не работает именно твой личный девайс.

Быстрое решение. Для тех, кто не желает читать весь пост, а на быструю руку пришел за поиском решения выкладываю эту картинку. Обвожу изменения сделанные мной и не описанные ни на одном сайте.
не работает usb avr программатор
Описание и подробности будут ниже.

Читать дальше →

theos: пишем твик для iOS SpringBoard

Reading time6 min
Views18K
Доброго скороновогоднего вечера уважаемым хабралюдям!

Сегодня я расскажу о создании твика для iOS SpringBoard с помощью theos. Зачем? В качестве интересного рисёрча и тренировки. В конце туториала мы получим примерно такую штуку прямо на экране блокрировки нашего i-девайса:


Читаем далее

Миникомпьютер из роутера с OpenWRT: разрабатываем USB-видеокарту

Reading time25 min
Views188K

Добрый день, уважаемые хабровчане. В этом цикле статей мы с вами пройдем достаточно длинный, но весьма интересный путь по превращению обычного роутера в мини-компьютер с LCD-дисплеем. Для этого мы разработаем сначала USB-видеокарту на базе микроконтроллера STM32F103, потом тестовый драйвер, который позволит нам выводить на него графику, и, наконец – полноценный драйвер фреймбуффера, благодаря которому можно будет запустить настоящие графические приложения, такие как x-сервер. Заодно мы научимся включать наш код в дерево исходников OpenWRT, допиливать его ядро и делать прочие полезные вещи.
Ну а в самом конце мы получим результат, который, я надеюсь, вызовет ностальгическую слезу у многих читателей. Я постараюсь излагать материал таким образом, чтобы в конце каждого этапа мы получали осязаемый результат, не дающий угаснуть энтузиазму. Итак, начнем.
Читать дальше →

Приемы написания скриптов на Bash. #2

Reading time11 min
Views28K
Моя прошлая статья Приемы написания скриптов на Bash вызвала жаркие дебаты в комментариях. Основной ее посыл был в использовании библиотеки функций. Кроме того я описал способ разбора параметров в Bash. Благодарю всех за конструктивные комментарии. Обращаю Ваше внимание, что статья предполагается для широкого круга читателей, а не адресована исключительно системным администраторам.

Продолжим начатое, и на реальном примере дополним подход к разбору параметров и унификации функционала скриптов.
Читать дальше →

Приемы написания скриптов в Bash

Reading time7 min
Views173K
Администраторам Linux писать скрипты на Bash приходится регулярно. Ниже я привожу советы, как можно ускорить эту работу, а также повысить надежность скриптов.

Совет 1

Не пишите скриптов, которые выполняют действия ничего не спрашивая. Такие скрипты нужны довольно редко. А вот всевозможного «добра» для копирования, синхронизации, запуска чего-либо, хоть отбавляй. И если в любимом Midnight Commander Вы вдруг нажали не на тот скрипт, то с системой может произойти все что угодно. Это как правила дорожного движения — «написано кровью».

Совет 2

Отталкиваясь от предыдущего, в начало каждого скрипта неплохо помещать что-то вроде:
read -n 1 -p "Ты уверен, что хочешь запустить это (y/[a]): " AMSURE 
[ "$AMSURE" = "y" ] || exit
echo "" 1>&2
Команда echo, кстати, здесь нужна потому, что после нажатия кнопки <y> у вас не будет перевода строки, следовательно, следующий любой вывод пойдет в эту же строку.

Совет 3

Это ключевой совет из всех. Для того, чтобы не писать каждый раз одно и то же — пользуйтесь библиотеками функций. Прочитав много статей по Bash, я вынужден констатировать, что этой теме уделяется мало внимания. Возможно в силу очевидности. Однако я считаю необходимым напомнить об этом. Итак.
Заведите свою библиотеку функций, например myfunc.sh и положите ее, например в /usr/bin. При написании скриптов она не только поможет сократить ваш труд, но и позволит одним махом доработать множество скриптов, если Вы улучшите какую-либо функцию.
Например, в свете совета 2 можно написать такую функцию:
Читать дальше →

Продуктивная работа с MySQL в командной строке

Reading time3 min
Views40K
Даже если Вы используете GUI-инструменты для работы с MySQL, однажды Вам предстоит столкнуться с командной строкой. Поэтому полезно знать некоторые трюки, которые облегчают работу.

Примечание: эти команды работают только для Unix/Linux.
Читать дальше →

iOS Console App — пишем программу для iOS без GUI

Reading time7 min
Views18K
Доброго дня всем хабравчанам!

Сегодня я расскажу вам о том, как можно легко, быстро и просто написать консольную программку для запуска на iOS-девайсе. Разумеется, нам потребуется для этого jailbreak-нутый девайс, без него, увы, никак: iOS AppStore (он же iTunesStore) не позволяет распространять консольные утилиты.



Писать HelloWorld — дело не особо интересное. Поэтому, мы будем писать полезную утилиту, позволяющую просмотреть некоторую информацию о системе, полученную через приватные API.

К примеру, информацию об установленных программах и их версиях.

В принципе, можно ещё поворовать пароли и прочие персональные данные, но это оставлю как факультативное задание.

Итак, под катом — описание процесса создания консольной программки прямо в Xcode.
Поехали

Программируемый микроконтроллер STM32 — с места в карьер

Reading time30 min
Views101K
Ниже описан мой первый опыт общения с программируемым микроконтроллером в лице STM32VLDiscovery, результатом которого явилась машинка из LEGO, управляемая с телефона, и ещё кое-что. Я постарался изложить свой путь в виде пошагового руководства к действию, но, предупреждаю сразу, не руководства «как делать правильно». Первые два раздела являются предисловием и не относятся непосредственно к данному микроконтроллеру.

image

Содержание:


  1. Первый контакт с микроэлектроникой.
  2. Строительство машинки на непрограммируемых логических элементах.
  3. Начало работы с STM32. Среда разработки. Подключение микроконтроллера к машинке.
  4. Определяем угол поворота передних колёс — обратная связь через АЦП.
  5. Использование ЦАП для воспроизведения звуков.


Погрузиться

7 бубей iOS разработчика игр

Reading time4 min
Views19K
Долгих лет жизни читающему эти строчки.
В статье обобщен трехлетний опыт создания iOS игр для личного пользования.
Примеров программного кода не будет. За примерами программного Вы идите на stackoverflow.com.

В статье разбирается создание приложения на примере неопубликованной игры Five Diamonds.
Строгих редакторов предупреждаю, что приложение не выложено ни в какие магазины, просьба не перемещать меня в ненужные разделы.

Лентяям предлагаю посмотреть видео-ролик.


Остальных приглашаю в мир букв и забавных событий.
Читать дальше →

Знакомьтесь, filestream.me

Reading time3 min
Views35K
image

Смотрите какой хабар


Хочу поделиться с хабра-сообществом невероятно полезным сервисом, случайно найденном мною на просторах интернета.

Просто удивительно, что одно из самых прогрессивных облачных файлохранилищ не только не попало в обзор "Файлы уходят в облака. Выбираем облако", но и вообще никак не упомянут на Хабре. Итак filestream.me — это то, что получиться, если скрестить все сервисы из вышеупомянутого обзора и добавить им часть функционала из файлов-почтой, а именно:

UPD, мне передали следующую копипасту от разработчиков сервиса.

в чем профит?

Возможность тестировать steam for linux beta без инвайта от valve

Reading time1 min
Views29K


Сегодня стартовало бета тестирование игрового сервиса от Valve для ОС линукс. Есть бинарные пакеты под Ubuntu (должно работать 12.04 и 12.10) и AUR пакеты под Archlinux.
Читать дальше →

Производительность в Python. Легкий путь

Reading time2 min
Views76K
Всегда знал, что одно из достоинств Python — возможность переписать самые тормозные куски кода на Си и увеличить быстродействие программы до недостижимых интерпретируемым языкам высот. Но сам ни разу не пробовал, т.к. считал что это слишком сложно. После прочтения этой статьи больше так не считаю.

Программисты знакомые с ctypes врядли найдут тут что-то интересное, новичков же прошу под кат.
Читать дальше →

Information

Rating
Does not participate
Location
Иерусалим, Иерусалим, Израиль
Date of birth
Registered
Activity

Specialization

Embedded Software Engineer
Senior
Python
C#
Docker
Git
Linux