Skip to content

Instantly share code, notes, and snippets.

@w495
w495 / motion_vector.c
Created May 10, 2014 20:20
Пример построения векторов движения с помощью libav. Выводит координаты точек и векторов на stdout. Проверялось на коротких mp4 (h264 / aac). Начальный вариант был взят тут: http://www.princeton.edu/~jiasic/cos435/motion_vector.c и переписан под современный ffmpeg.
/**
* MOTION_VECTOR
*
* Calculates motion vector using ffmpeg and libavcodec.
*
* @authors First modifications by Victor Hsieh.
* Second modifications by Jiasi Chen.
* Third modifications by Ilya Nikitin <w@w-495.ru>.
*
* @date: 2014.05.10 23:30:13
@w495
w495 / simple-console-video-player.py
Created May 17, 2015 22:21
Простой символьный консольный видео-плеер. Написан с помощью библиотеки PyAV http://mikeboers.github.io/PyAV/
#!/usr/bin/env python
# -*- coding: utf-8 -*-
'''
Простой текстовый консольный видео-плеер.
Выводит кадры в символьном представлении на стандартный вывод.
Поддержки звука нет.
Как пользоваться:
@w495
w495 / sliding_window.py
Last active January 20, 2021 18:19
Sliding window as deque. Yet another implementation of sliding (rolling) window iterator in Python. This is based on answers of http://stackoverflow.com/questions/6822725/rolling-or-sliding-window-iterator-in-python. It is improved with "overlapping" and two window types: soft and strict.
# -*- coding: utf8 -*-
from __future__ import absolute_import, division, print_function, unicode_literals
import collections
import types
import itertools
class SlidingWindow(collections.deque):
@w495
w495 / manjaro-dolphin-shortcut.shortcuts
Last active November 15, 2020 02:54
Manjaro KDE shortcuts for Dolphin that is compatible with Konsole shortcuts. The problem was described here: https://unix.stackexchange.com/questions/605671/key-sequence-ambiguous-in-konsole
[Shortcuts]
activate_last_tab=Alt+0
activate_next_tab=Ctrl+PgDown; Ctrl+]; Ctrl+Tab
activate_prev_tab=Ctrl+PgUp; Ctrl+[; Ctrl+Shift+Tab
activate_tab_0=Alt+1
activate_tab_1=Alt+2
activate_tab_2=Alt+3
activate_tab_3=Alt+4
activate_tab_4=Alt+5
activate_tab_5=Alt+6
@w495
w495 / test.erl
Created June 5, 2012 14:13
Реализация генератора чисел Фиббоначи
%%% @file test.erl Реализация генератора чисел Фиббоначи.
%%% Результатом работы генератора должна
%%% быть пара {очередное_число, генератор_следующего_числа}.
%%%
%%% Для ускорения счета используется классическая рекурсивная мемоизация.
%%% Она Реализована через оператор неподвижной точки.
%%% Крайне эффективна для рекурсивных функций.
%%%
%%% Можно реализовать и простую мемоизацию для данного примера.
%%% Будем запоминать только последний вариант чисел фиббоначи,
@w495
w495 / base_function.py
Last active March 5, 2020 19:17
Простой пример добавление атрибута через метакласс
# coding: utf-8
import logging
class AddLoggerMeta(type):
def __new__(mcs, class_name, bases, attr_dict):
attr_dict[f'_{class_name}__logger'] = logging.getLogger(class_name)
return super().__new__(mcs, class_name, bases, attr_dict)
@w495
w495 / base_function.py
Created March 5, 2020 18:48
Пример использования приватных методов модуля в классе
# coding: utf-8
import logging
__logger = logging.getLogger(__name__)
def global_function():
__logger.error('global_function')
@w495
w495 / pyav_example.py
Last active June 15, 2019 21:20
Пример работы с видео в Python. В примере из видео достают кадры и конвертируют их в numpy-вектора размером `32 X 32`. После из полученных векторов собирают новое видео. Создано по мотивам http://ru.stackoverflow.com/questions/519636/#551344
import av
from av.video.frame import VideoFrame
from av.video.stream import VideoStream
# В этом списке будем хранить кадры в виде numpy-векторов.
array_list = []
# Откроем контейнер на чтение
input_container = av.open('input.mp4')
@w495
w495 / pyav_rtmp_example.py
Last active June 15, 2019 21:15
Пример работы с видео в Python. Есть RTMP-поток и RTMP-сервер, на который нужно отправить этот поток. Создано по мотивам https://ru.stackoverflow.com/a/664973/203032
# -*- coding: utf8 -*-
import av
# Откроем ресурс на чтение
input_resource = av.open(
'rtmp://src_stream:1935/play'
)
# Откроем ресурс на запись.
output_resource = av.open(
@w495
w495 / magic_buffer.c
Created June 1, 2012 16:00
Пример использования библиотеки libmagic
/**
@file magic_buffer.c
Пример использования библиотеки libmagic.
Ниже показано как собирать и тестировать файл:
$> gcc magic_buffer.c -lmagic -I/usr/include/magic -Wall -o magic_buffer
$>./magic_buffer "asas" 2> errr
text/plain
$>./magic_buffer "<?xml version="1.0" encoding="utf-8"?><x>абырвалг</x>"
application/xml
$>./magic_buffer "<?xml"