Страницы

вторник, 30 декабря 2014 г.

Movies database. Сайты коллекции метаинформации о фильмах

В сети Интернет есть несколько сайтов содержащих сведения о фильмах, актёрах. Это коллективно-пополняемые базы данных.
Посмотрим что есть, а также как можно воспользоваться для собственных целей, данными базами данных.
Каждый сайт, позволяет искать информацию по фильмам и пр. цифровым активам. Выдача информации стандартная - в виде web-страниц.
Это интересует слабо, т.к. нужен доступ к данным со стороны программ для получения сведений и различной медиа информации, включая обложки, постеры, трейлеры фильмов, фотографии актёров.



IMDB.com


IMDB movie api
IMDB.com - крупнейший сайт о фильмах в сети Интернет
Крупнейший индекс фильмов. IMDB ID.
Доступна выгрузка базы данных для частных целей. Формат базы данных - текстовые и patch-файлы.
Не предоставляет API на некоммерческой основе.
Есть обёртка на языке Python. http://imdbpy.sourceforge.net/

IMDBPY


IMDBPY. Обёртка (API) на языке Python для доступа к локальным данным IMDB
Позволяет организовать локальную базу данных по фильмам и пр. сущностям IMDB.



TheMovieDB.org. The Movie database


The Movie database

Сайт требует регистрации. Регистрация свободная.
Поддерживает API-доступ, по ключу пользователя.

OMDBAPI.com Open Movie Database API


OMDBAPI.com. Программный интерфейс к БД фильмов

Сайт не требует регистрации.
Поддерживает API-доступ, в виде url-параметров.
Поддерживает API-доступ, к базе данных постеров фильмов, на основе ключа пользователя.

Имеется обёртка на языке Python, для доступа к БД: https://github.com/dgilland/omdb.py


Freebase


Freebase. Семантическая база данных, не только по фильмам
Поддерживает API-доступ, в виде url-параметров, на основе ключа пользователя.
Имеется несколько обёрток на разных языках, для доступа к БД.
Используется Google для выдачи поисковых "кусочков"- snippets, о фильме.


Wikipedia


Wikipedia. Пример информации о фильме

Страница фильма следует стандарту wiki-разметки, Так-что программное извлечение данных, вполне возможно.
Доступна выгрузка всей базы данных Wikipedia.

DVDXML.com


DVDXML. Сайт с данных фильмов на DVD-дисках, в формате Microsft Media Center
Сайт требует регистрации.
Есть платный доступ.

Trailers.apple.com


Трейлеры фильмов на сайте Apple.com
Нет API-доступа.
Требуется программа iTunes для загрузки трейлеров фильмов.


TV DB


TV DB. База данных по TV программам (Северная Америка и пр.)

Доступен XML-API.
Данные используется в некотором числе домашних медиа центров, таких Microsft Media Center, XBMC и пр.

Кинопоиск


КиноПоиск. Крупнейший рускоязычный сайт, со сведениями о фильмах
Крупнейший отечественный индекс.
Нет публичного API-доступа.
Сторонние утилиты, выполняют разбор (парсинг) страниц сайта.
Сайт сменил владельца. Так что возможно числовой индекс измениться.


※※※


WMV Metainfo. Метаинформация видеофайлов Windows Media Video

Библиотека AVLib как наследница FFmpeg позволяет добавлять метаинформацию в видеофайлы WMV, на стадии их формирования (вывода).
Для этого используется опция -metadata. Для разных форматов выходных файлов, поддерживаются разные опции.

Здесь, для файлов формата ASF,WM,WMV.

-metadata title="Название видеофайла"
-metadata description="Описание видеофайла"
-metadata author="Автор материала"
-metadata copyright="Копирайт материала"

т.е. если заполнение метаданных на стадии перекодирования, по какой-либо причине не возможно (например, ещё не подгружены сведения), то сделать это можно позже. Правда, придётся создать ещё одну копию видеофайла, но уже с метаданными.

$ avconv -i "in.wmv" -c:v copy -c:a copy -metadata title="Название видеофильма" -metadata description="В недалёком будущем..." out2.wmv

Причём, поле author попадает в поле "Участвующие исполнители", если смотреть в свойствах файла в проводнике Windows.
Поле description не появляется вообще.
Поле title попадает в поле "Название"
Поле copyright попадает в поле "Авторские права"


※※※

Ресурсы


1.FFmpeg metadata. http://wiki.multimedia.cx/index.php?title=FFmpeg_Metadata#ASF.2FWMV.2FWMA


※※※

воскресенье, 28 декабря 2014 г.

MOV. Видеофайлы Canon EOS 1100d в медиатеке Ubuntu для клиентов Windows

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

Фотокамера Canon EOS 1100d записывает видео в формате QuickTime. Разрешение: 720p - High Definition (HD). Расширение файлов: MOV (контейнер QuickTime)


Что показывает программа MediaInfo о видеофайле, полученным от фотокамеры Canon EOS 1100d.

$ mediainfo MVI_3086.MOV

General
Complete name                            : MVI_3086.MOV
Format                                   : MPEG-4
Format profile                           : QuickTime
Codec ID                                 : qt
File size                                : 234 MiB
Duration                                 : 1mn 3s
Overall bit rate                         : 31.1 Mbps
Encoded date                             : UTC 2014-01-01 17:52:16
Tagged date                              : UTC 2014-01-01 17:52:16

Video
ID                                       : 1
Format                                   : AVC
Format/Info                              : Advanced Video Codec
Format profile                           : Baseline@L5.0
Format settings, CABAC                   : No
Format settings, ReFrames                : 1 frame
Format settings, GOP                     : M=1, N=12
Codec ID                                 : avc1
Codec ID/Info                            : Advanced Video Coding
Duration                                 : 1mn 3s
Bit rate                                 : 30.3 Mbps
Width                                    : 1 280 pixels
Height                                   : 720 pixels
Display aspect ratio                     : 16:9
Frame rate mode                          : Constant
Frame rate                               : 25.000 fps
Color space                              : YUV
Chroma subsampling                       : 4:2:0
Bit depth                                : 8 bits
Scan type                                : Progressive
Bits/(Pixel*Frame)                       : 1.316
Stream size                              : 228 MiB (97%)
Language                                 : English
Encoded date                             : UTC 2014-01-01 17:52:16
Tagged date                              : UTC 2014-01-01 17:52:16
Color primaries                          : BT.709-5, BT.1361, IEC 61966-2-4, SMP                                  TE RP177
Transfer characteristics                 : BT.709-5, BT.1361
Matrix coefficients                      : BT.601-6 525, BT.1358 525, BT.1700 NT                                  SC, SMPTE 170M

Audio
ID                                       : 2
Format                                   : PCM
Format settings, Endianness              : Little
Format settings, Sign                    : Signed
Codec ID                                 : sowt
Duration                                 : 1mn 3s
Bit rate mode                            : Constant
Bit rate                                 : 768 Kbps
Channel(s)                               : 1 channel
Channel positions                        : Front: C
Sampling rate                            : 48.0 KHz
Bit depth                                : 16 bits
Stream size                              : 5.78 MiB (2%)
Language                                 : English
Encoded date                             : UTC 2014-01-01 17:52:16
Tagged date                              : UTC 2014-01-01 17:52:16

Из описания можно видеть, что для кодирования видеодорожки применен кодекс AVC с простейшим профилем Baseline@L5.0, обычно используемым для недорогих-малопроизводительных аппаратных кодировщиков. Разрешение соответствует HD. Аудиодорожка получена из встроенного мономикрофона (1 channel), в несжатом формате PCM.

Можно ли произвести конвертирование из исходного формата полученного от камеры Canon EOS 1100d MOV, например в MP4 или MKV?

Что говорить Wikipedia о кодеке AVC (Advanced Video Coding):
Part 10 (ISO/IEC 14496-10): Advanced Video Coding: Описывает стандарт сжатия видео, технически идентичный стандарту H.264, разработанному ITU-T .

Таким образом, по идее, можно выполнять простое копирование  из одного контейнера QuickTime MOV в другой MKV или MP4.

※※※

MOV в MKV

Контейнер MKV более универсальный, позволяет хранить аудио и видео в разных кодеках. Так что, 

$ avconv -i MVI_3086.MOV -c:v copy -c:a copy test.mkv

General
Unique ID                                : 51029448211527616088337682027470918897 (0x2663EA0B585E6A80A1628B88B0D014F1)
Complete name                            : test.mkv
Format                                   : Matroska
Format version                           : Version 2
File size                                : 234 MiB
Duration                                 : 1mn 3s
Overall bit rate                         : 31.1 Mbps
Encoded date                             : UTC 2014-01-01 17:52:16
Writing application                      : Lavf53.21.1
Writing library                          : Lavf53.21.1

Video
ID                                       : 1
Format                                   : AVC
Format/Info                              : Advanced Video Codec
Format profile                           : Baseline@L5.0
Format settings, CABAC                   : No
Format settings, ReFrames                : 1 frame
Format settings, GOP                     : M=1, N=12
Codec ID                                 : V_MPEG4/ISO/AVC
Duration                                 : 1mn 3s
Width                                    : 1 280 pixels
Height                                   : 720 pixels
Display aspect ratio                     : 16:9
Frame rate                               : 25 000.000 fps
Color space                              : YUV
Chroma subsampling                       : 4:2:0
Bit depth                                : 8 bits
Scan type                                : Progressive
Language                                 : English
Default                                  : Yes
Forced                                   : No
Encoded date                             : UTC 2014-01-01 17:52:16
Color primaries                          : BT.709-5, BT.1361, IEC 61966-2-4, SMPTE RP177
Transfer characteristics                 : BT.709-5, BT.1361
Matrix coefficients                      : BT.601-6 525, BT.1358 525, BT.1700 NTSC, SMPTE 170M

Audio
ID                                       : 2
Format                                   : PCM
Codec ID                                 : A_PCM/INT/LIT
Duration                                 : 1mn 3s
Bit rate mode                            : Constant
Channel(s)                               : 1 channel
Sampling rate                            : 48.0 KHz
Bit depth                                : 16 bits
Language                                 : English
Default                                  : Yes
Forced                                   : No
Encoded date                             : UTC 2014-01-01 17:52:16

Кое-что потерялось в процессе трансконтейнеризации (переупаковке).
Tagged date,
Также, т.к. видео снимается на русском языке, а поле метаинформации дорожки Language указано English, это уже ошибка ПО камеры.

Это надо как-то исправить. См. ниже.

Однако, у контейнера MKV, серьёзная и полноценная поддержка со стороны системы Windows будет доступна с 10 версии.


※※※

MOV в MP4

Для контейнера MP4, не всё так просто, оказывается надо перекодировать звук из PCM в AAC (либо иные поддерживаемые контейнером аудиокодеки, например mp3).

$ avconv -i MVI_3086.MOV -c:v copy -c:a aac -strict experimental test.mp4
$ avconv -i MVI_3086.MOV -c:v copy -c:a libvo_aacenc test.mp4

aac - встроенный кодировщик AAC.

libvo_aacenc - кодировщик AAC, поддерживает только 2 канальный звук и CBR (постоянный битрейт), поэтому, если исходная дорожка содержит 6-канальный звук (5.1), то надо добавлять опцию -ac 2.

$ avconv -i MVI_3086.MOV -c:v copy -c:a libvo_aacenc -ac 2 test.mp4
или с селектором аудиодорожки:
$ avconv -i MVI_3086.MOV -c:v copy -c:a:1 libvo_aacenc -ac:1 2 test.mp4
Это приведено для справки, т.к. Canon EOS 1100d содержит только 1 канал аудио.


Если требуется полноценное преобразование дорожки AC3 в AAC, то можно использовать Nero AAC encoder [4][5].

Вообще, avlib поддерживает 4 кодека AAC LC (aac, libfaac, libfdk_aac, libvo_aacenc) и 2 AAC HE (libaacplus and libfdk_aac). Но они, кроме libvo_aacenc, являются несвободными.




ВАЖНО. Странно, но эта команда (и другая) изготовила некачественное видео с рывками, при проигрывании в Windows Media Player. VLC плеер справился. DivX player справился. Файл был открыт по сети. При копировании на жесткий диск компьютера, проблема осталась.
Т.е. чтобы создать качественную медиабиблиотеку собственных видеороликов, надо разбираться с тонкостями MP4.
Выяснилось, что также с рывками проигрывается исходный файл, в WMP.
Так что, исходный файл, удалять нельзя, а эксперименты проводить на копиях.

Что показывает mediainfo для кодировщика звука aac:

$ mediainfo test.mp4
General
Complete name                            : test.mp4
Format                                   : MPEG-4
Format profile                           : Base Media
Codec ID                                 : isom
File size                                : 230 MiB
Duration                                 : 1mn 3s
Overall bit rate mode                    : Variable
Overall bit rate                         : 30.5 Mbps
Encoded date                             : UTC 2014-01-01 17:52:16
Tagged date                              : UTC 2014-01-01 17:52:16
Writing application                      : Lavf53.21.1

Video
ID                                       : 1
Format                                   : AVC
Format/Info                              : Advanced Video Codec
Format profile                           : Baseline@L5.0
Format settings, CABAC                   : No
Format settings, ReFrames                : 1 frame
Format settings, GOP                     : M=1, N=12
Codec ID                                 : avc1
Codec ID/Info                            : Advanced Video Coding
Duration                                 : 1mn 3s
Bit rate                                 : 30.3 Mbps
Width                                    : 1 280 pixels
Height                                   : 720 pixels
Display aspect ratio                     : 16:9
Frame rate mode                          : Constant
Frame rate                               : 25.000 fps
Color space                              : YUV
Chroma subsampling                       : 4:2:0
Bit depth                                : 8 bits
Scan type                                : Progressive
Bits/(Pixel*Frame)                       : 1.316
Stream size                              : 228 MiB (99%)
Language                                 : English
Encoded date                             : UTC 2014-01-01 17:52:16
Tagged date                              : UTC 2014-01-01 17:52:16
Color primaries                          : BT.709-5, BT.1361, IEC 61966-2-4, SMPTE RP177
Transfer characteristics                 : BT.709-5, BT.1361
Matrix coefficients                      : BT.601-6 525, BT.1358 525, BT.1700 NTSC, SMPTE 170M

Audio
ID                                       : 2
Format                                   : AAC
Format/Info                              : Advanced Audio Codec
Format profile                           : LC
Codec ID                                 : 40
Duration                                 : 1mn 3s
Bit rate mode                            : Variable
Bit rate                                 : 192 Kbps
Channel(s)                               : 1 channel
Channel positions                        : Front: C
Sampling rate                            : 48.0 KHz
Compression mode                         : Lossy
Stream size                              : 1.44 MiB (1%)
Language                                 : English
Encoded date                             : UTC 2014-01-01 17:52:16
Tagged date                              : UTC 2014-01-01 17:52:16


Проблему с языком, на файле формата MOV, а также MP4 можно исправить командой:
mp4track --track-id 1 --language rus test.mov
mp4track --track-id 2 --language rus test.mov
ID дорожек можно просмотреть по команде: mp4info test.mov
Это исправит язык, но например DivX converter не увидит никакой дорожки и нельзя будет сделать преобразование.


※※※

Совместимость с Windows Vista


Windows Vista имеющая на старом компьютере, вообще, не поддерживает MOV,MKV,MP4 и не может проигрывать видеофайлы в этих форматах, без привлечения сторонних DirectShow фильтров.

Windows Vista поддерживает следующие типы файлов в программе Windows Media Center (WMC):
Файл Windows Media .wm и .asf
Файл Windows Media Video .wmv
Видеофайл Windows .avi
Файл записанной телепередачи Microsoft .dvr-ms
Файл фильма .mpeg, .mpg, .mpe, .m1v, .mp2 и .mpv2

Т.е. чтобы удовлетворить требования медиабиблиотеки Windows Vista, надо изрядно постараться с перекодированием, либо искать плагины для WMC.


Для Windows Vista можно выбрать контейнер AVI, но потребуется перекодирование видео, например в кодек vmv2.

$ avconv -i MVI_3086.MOV -c:v wmv2 -c:a copy test.avi

Видео, созданное этой командой, содержит очень много визуальных артефактов кодирования (выглядит, как будто каждый пиксел увеличен в 2 раза - квадратиком).
Однако WMV9 (опция wmv3) - более качественный кодек, недоступен в avconv, да и в Linux, без ухищрений.

Однако, эти артефакты кодирования исправить можно указав битрейт и др. параметры
$ avconv -i MVI_3086.MOV -c:v wmv2 -b:v 12000k -qscale:v -c:a copy test.avi

Также можно выбрать контейнеры ASF и WMV.

$ avconv -i Borgu.mp4 -c:v wmv2 -qscale:v 2 -b:v 12000k -r 30 -c:a wmav2 test.wmv


Для преобразования видеофайлов с камеры Canon 1100d в форматы поддерживаемые в операционной системой Windows, лучше всего подойдёт Windows Media Video 9 (WMV9) , он же VC-1 (в avconv называется wmv3), с профилем Windows Media Video 9 Advanced Profile L2 (1280x720p,30 fps, 20 Mbit/s).
Поэтому все преобразования можно делать на платформе Windows, например в киностудии Windows Live (Windows Movie Maker), DivX Converter и т.п.
Есть также Microsoft Expression Encoder 4.

Посмотрим сведения о преобразованном файле:
$ mediainfo test.wmv

General
Complete name                            : test.wmv
Format                                   : Windows Media
File size                                : 62.5 MiB
Duration                                 : 1mn 3s
Overall bit rate mode                    : Constant
Overall bit rate                         : 8 297 Kbps
Maximum Overall bit rate                 : 8 321 Kbps
Encoded date                             : UTC 2014-12-27 16:21:40.489

Video
ID                                       : 1
Format                                   : VC-1
Format profile                           : MP@HL
Codec ID                                 : WMV3
Codec ID/Info                            : Windows Media Video 9
Codec ID/Hint                            : WMV3
Description of the codec                 : Windows Media Video 9 - Professional
Duration                                 : 1mn 3s
Bit rate mode                            : Constant
Bit rate                                 : 8 000 Kbps
Width                                    : 1 280 pixels
Height                                   : 720 pixels
Display aspect ratio                     : 16:9
Frame rate                               : 30.000 fps
Bit depth                                : 8 bits
Scan type                                : Progressive
Compression mode                         : Lossy
Bits/(Pixel*Frame)                       : 0.289
Stream size                              : 60.3 MiB (96%)

Audio
ID                                       : 2
Format                                   : WMA
Format profile                           : Pro
Codec ID                                 : 162
Codec ID/Info                            : Windows Media Audio
Description of the codec                 : Windows Media Audio 10 Professional - 256 kbps, 96 kHz, 2 channel 24 bit (A/V) 1-pass CBR
Duration                                 : 1mn 3s
Bit rate mode                            : Constant
Bit rate                                 : 256 Kbps
Channel(s)                               : 2 channels
Sampling rate                            : 96.0 KHz
Bit depth                                : 24 bits
Stream size                              : 1.93 MiB (3%)

Размер видео уменьшился почти в 4 раза.

В результате, плеер WMP и медиацентр WMC Windows Vista способны показать эти ролики. Сохраняется возможность редактирования свойств-метаинформации, выставлении оценок и рейтингов для видео. Т.е. обеспечиться совместимость и со старыми версиями Windows, со стандартными. Т.е. старый компьютер с Widows Vista, может эксплуатироваться как Media Center.

Есть такая полезная вещь: Windows Vista Codec Pack, которая расширит количество форматов проигрываемых в Windows Vista Media Cener.


※※※

Совместимость с Windows 7


Windows 7 и её Windows Media Center уже содержит улучшенные возможности по проигрыванию видео:
Windows 7 поддерживает следующие типы файлов в программе Windows Media Center
Файлы Windows Media WM, WMV и ASF
Файлы AVCHD (включая звуковые файлы Dolby Digital): M2TS и M2T
Файлы Apple QuickTime: MOV и QT
Файлы AVI: AVI
Файлы записанных телепередач Windows: WTV и DVR-MS
Файлы фильмов MPEG-4 MP4, MOV и M4V
Файлы фильмов MPEG-2: MPEG, MPG, MPE, M1V, MP2, MPV2, MOD и VOB
Файлы фильмов MPEG-1: M1V
Файлы Motion JPEG: AVI и MOV
Медиаприставка Media Center может не поддерживать просмотр некоторых типов видеофайлов. Например, некоторые модели медиаприставок не поддерживают файлы AVCHD или Apple QuickTime.
Это была цитата из описания с сайта Microsoft.
Откуда видно, что с форматом Apple QuickTime всё равно будут какие-то скрытые проблемы.
MKV не поддерживается полноценно. Однако воспроизведение может быть получено если установить Matroska media splitter.

Поддержка кодирования в форматы Windows, в Ubuntu server оставляет желать того, чтобы Microsoft сделала свои кодирующие библиотеки доступными и в Linux.


※※※

Выводы

1. Для каждого "потребителя" медиатеки со своими предпочтениями нужно сделать свою отдельную медиатеку, наиболее соответствующую применяемым технологиям.
2. Настроить более качественный сервер DLNA, выполняющий транскодирование на "лету" для каждого клиента.
3. В принципе, видеоролики полученные с фотокамеры Canon EOS 1100d, можно хранить в оригинальном формате на сервере HP Proliant microseserver. При необходимости, отдельные ролики можно преобразовать для поддержки Windows Vista, в формат WMV9, используя любую подходящую программу на Windows.
4. Возможно стоит рассмотреть стандартные открытые кодеки, например OGG, WebM.



※※※

Ресурсы

1. Описание Avconv (en): http://libav.org/avconv.html

2. Перекодирование MOV to WMV в Movie Maker(en): http://www.groovypost.com/howto/microsoft/easily-convert-mov-files-to-wmv-free/

3. Компоненты пакета DivX: http://www.divx.com/en/software/divx
4. Nero AAC encoder: http://www.nero.com/enu/company/about-nero/nero-aac-codec.php
5. AAC encoding on Ubuntu (en): https://alexanderstechcorner.wordpress.com/2014/07/14/aac-encoding-on-ubuntu/

※※※

пятница, 26 декабря 2014 г.

MP4 & MKV cover arts. Добавление обложек к фильму, в командной строке Ubuntu

Заметка приведена, для простейшего управления медиаколлекцией (видеотекой) в операционной системе Ubuntu server LTS 12.04.5, из командной строки на сервере HP proliant microserver (на любом Linux-сервере).

Данная возможность нужна для повышения удобства и вузальной привлекательности использования медиаколлекции на устройствах с операционными системами семейства Windows (7,8 и т.п.).

На микросервере есть запущенная служба MiniDLNA (ReadyMedia), которая указывает на каталог с видеофайлами, которые становяться доступны на компьютерах с Windows, в программах Windows Media Player (WMP) и Windows Media Center, а также аппаратного проигрывателя WD TV Live. Это простейшая служба без транскодирования. MiniDLNA просто предоставляет файлы по протоколу DLNA в локальной сети (широковещательный протокол, не выходит за роутер).

Обычно файлы в контейнерах MP4 и MKV не содержат ни метаинформации (сведений о фильме), ни обложки (cover art) и выводятся в интерфейсе проигрывателей в виде неизвестных файлов.
Исправим этот недостаток, в части обложек фильмов.
Где получить обложки - это не предмет этой заметки. Обычно их можно скачать автоматически или вручную с сайтов (imdb, tmdb и т.п.). Для Windows есть удобные утилиты.

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

MP4 cover arts. Обложки фильмов внутри формата MP4


Т.к. Windows Media Player (Windows Media Center) в большей степени поддерживает файлы в формате MP4 (отображает названия, жанр, оценки и т.п.), то можно сконвертировать все видеофайлы из формата MKV в формат MP4.

Для отдельного файла преобразование выполняется командой avconv из пакета libav-tools
$ avconv -i input.mkv -c:v copy -c:a acc -strict experimental output.mp4
Это простое преобразование, с перекодированием звуковой дорожки в поддерживаемый MP4-контейнером формат аудио.
Т.е. обычно (но не обязательно) MP4 - это H.264 и AAC. А MKV - это H.264 и AC3.
После этого WMP проигрывает и видео и звук в MP4-контейнере.
Звук после преобразования в экспериментальном режиме получается плохой, заикающийся.


Простая операция копирования из контейнера в контейнер возможна, если в MKV есть AAC-дорожка, тогда всё просто.


Установить пакет mp4v2-utils, который содержит несколько инструментов для редактирования метаинформации в видеофайлах - контейнерах стандарта MPEG4 - MP4.

$ sudo apt-get install mp4v2-utils

/usr/bin/mp4art
/usr/bin/mp4chaps
/usr/bin/mp4extract
/usr/bin/mp4file
/usr/bin/mp4info
/usr/bin/mp4subtitle
/usr/bin/mp4tags
/usr/bin/mp4track
/usr/bin/mp4trackdump

Простейшее добавление постера (обложки, cover art) к видеофайлу mp4:

$ mp4art --add tron-poster.jpg tron.mp4

После добавления обложки, можно добавить описание файла (теги, video tags).

$ mp4tags -a "Автор произведения" -s "Название" file.mp4

После этого, видеофайл будет иметь обложку в WMP, а также будет доступна возможность исправлять теги в свойстве файла проводника (встроенная поддержка контейнера MP4).


Свойства видео из контейнера MP4, в свойствах файла из Проводника.


Выкопировка вида из Windows Media Player с файлом MP4, содержащим в себе обложку.

Всё это дает также возможность поиска видеофайлов из проводника Windows, по тегам (например сценаристам и пр.).

Файл, со встроенным (embedded cover art) изображением также будет отображаться аппаратным сетевым медиплеером (например WD TV Live) в виде эскиза.


Основную сложность представляет поиск и сбор метаинформации о видеофильмах. Обычно для Windows, есть утилиты каталогизаторы (например Windows Media Browser, ), но для сервера Ubuntu так просто не будет, надо писать скрипты.


Для обработки нескольких файлов, нужно использовать скрипт bash. Можно также завернуть этот скрипт в Upstart-работу и исполнять его системными средствами.
Надо помнить, что с русскими именами файлов, содержащих пробелы, нужно аккуратно работать - заключать в кавычки.

#!/bin/bash
# сервер: микросервер
# дата: 25.12.2014
# Описание (ru): Преобразование файлов формата контейнера mkv в формат контейнера mp4 
# Для сайта: http://gimmor.blogspot.com/

# Папка SRC - содержит необработанные MKV файлы (желательно с H.264)
# Папка DEST - будет содержать MP4-файлы (H.264 & AAC)

SRC=/mnt/rawvideo
DEST=/mnt/collection
POSTEREXT=jpg
TOEXT=mp4

find $SRC -type f -name '*.mkv' | while read LINE;
do
# Разбивка имени файла на части
echo "$LINE"
filename=${LINE%.*}
path=${LINE%/*}
echo "Папка: $path"
name0=${LINE##*/}
NAME=${name0%.*}
echo "Имя: $NAME"
echo "Filename: $filename"
extension=${LINE##*.}
echo "Расширение: $extension"
noextension=${LINE%*.}
echo "Без расширения: $noextension"

# Трансконтейнеризация
echo "Трансконтейнеризация... $LINE"
echo "в $DEST/$NAME.$TOEXT"

# Пример операций над файлами
# Простое преобразование MKV (H.264 & AC3) в MP4 (H.264 & AAC)
# avconv -i "$LINE" -c:v copy -c:a aac -strict experimental -y "$DEST/$NAME.$TOEXT"
# Добавить обложку к MP4 (обложки должны быть)
# mp4art --add "$filename-poster.$POSTEREXT" "$filename.$TOEXT"
# Можно сделать любую операцию с файлом

done

Не забыть:
Права на выполнение скрипта
# chmod +x mkv2mp4.sh


MKV Nice cover arts. Привлекательные обложки фильмов внутри Matroska


Формат MKV (Matroska) также поддерживает возможность добавления обложки. Однако, не все проигрыватели поддерживают отображение встроенных в MKV обложек. Windows Explorer не поддерживает, Windows Media Player не поддерживает и т.п.
VLC плеер поддерживает, но как-то кривовато.

Специфические требования к размеру и наименованию файлов обложек согласно спецификации MKV следует удовлетворить.

4 файла обложки должно быть включено в контейнер MKV (расширения файла с обложкой - jpg или png, маленькими буквами)
1. cover.jpg (размер 960х600 или 600х600)
2. small_cover.jpg (размер 192х120 или 120х120)
3. cover_land.jpg (размер 600)
4. small_cover_land.jpg (размер 120)

Малые обложки в 5 раз меньше больших. Фактор масштабирования 20%

Пример добавления 4 обложек, за один раз:

$ mkvmerge -o out.mkv --attach-file "cover.jpg" --attach-file "small_cover.jpg"  --attach-file "cover_land.jpg"  --attach-file "small_cover_land.jpg" in.mkv

out.mkv - выходной файл, с обложками
in.mkv - входной файл, без обложек

Например, если есть исходный файл cover.jpg имеет ширину 600, то можно подготовить уменьшенную копию small_cover.jpg, сделав изменение размера (resize) с помощью команды convert из пакета imagemagick.

$ convert cover.jpg -resize 20% small_cover.jpg
$ convert cover_land.jpg -resize 20% small_cover_land.jpg

※※※

Ресурсы


1. Matroska cover art. http://www.matroska.org/technical/cover_art/index.html

※※※


понедельник, 15 декабря 2014 г.

MKV Metainfo. Метаинформация видеофайлов. Редактирование тэгов MKV в Ubuntu

Для чего может понадобиться редактирование тэгов?

Многие создаваемые видеофайлы, не содержат так необходимую человеку метаинформацию, объясняющую что это за видеофайл, кто его сделал, кто владелец, какая лицензия и т.п.

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

Общего стандарта на формат метаинформации в видеофайлах нет, каждый контейнер (видеофайл), содержит свой формат.

Наиболее перспективными современными форматами являются MKV и webm (на основе MKV), возможно что и Ogg.

MKV - Matroska


Приведу пару простейших правок файла контейнера Matroska.

В контейнере MKV, есть поле title, которое многие программы используют в качестве "Названия". Например "Просмотр свойств файла, в файловом менеджере Nautilus", программа VLC, Gnome - видео.


$ mkvpropedit "Red 2.mkv" -s title="Red 2"

Можно также выбрать небходимую дорожку (видео или аудио), и задать ей поле имя - читаемое человеком.
Например:

mkvpropedit "Red 2.mkv" -e track:1 -s name="Red 2 movie track"

mkvpropedit "Red 2.mkv" -e track:2 -s name="Red 2 original soundtrack"

mkvpropedit "Red 2.mkv" -e track:3 -s name="Red 2 russian soundtrack"

Это стандартные поля, которые присутствуют в заголовках дорожек.

Помимо этого,  в контейнере MKV присутствует такая особенность как  Tags - тэги. Вот в них, уже можно заполнять разнообразную метаинформацию о фильме, которая будет полезна в коллекционировании.


Небольшое упрощение ручного редактирования tags xml

В Ubuntu, в домашней папке Шаблоны, можно поместить готовый шаблон структуры xml  файла, с тегами для контейнера Matroska. В нём можно заполнить информационные поля, относящиеся к создаваемой коллекции и пр.
При необходимости отредактировать свойства видеофайла, по правой кнопке создается xml-файл, редактируется  и сохраняется в каталоге с фильмом.

После чего, одной командой, добавляется в тело контейнера с фильмом:

$ mkvpropedit "Red 2.mkv" -t all:red2.xml

※※※

Ресурсы


1. Спецификация контейнера: http://www.matroska.org/
2. http://www.bunkus.org/videotools/mkvtoolnix/
3. http://www.matroska.org/downloads/mkclean.html
※※※


Remote access over landline. Удаленный доступ через телефонную линию

Доступ к микросерверу HP Proliant Microserver, через телефонную линию, с использованием аналогового модема TRENDnet TFM-561U.

TRENDnet TFM-561U - старая добрая аналоговая технология. И она может принести пользу в век etherneta и сотовых сетей.




Зачем?
Затем, чтобы при "падении" основной линии интернета, можно было бы получить доступ к компьютеру, в том числе и из другого города, для диагностики и попыток решения проблемы программными средствами.
Если я правильно понял, то 3G сети не предоставляют такой удобной функции, либо предоставляют с большими затратами.


Почему выбран этот модем?
Компактен, питание от USB, стандартная поддержка в Linux.

Ресурсы

1. http://shrewdraven.org/content/setting-mgetty-dialout-and-send-audio-message-under-linux

※※※

Thunderbird. Перенос почты со старой системы в новую

Перенос почты Thunderbird со старой системы на новую оказался простым.

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

1. В новой системе устанавливается Thunderbird.

apt-get install thunderbird thunderbird-locale-ru

2. Копируется папка .thunderbird (в домашней папке) из старой системы в новую.

Перенеслись настройки учётной записи, все сообщения.

Не перенеслись различные установленные расширения, в том числе ключи.


※※※

Perpetum reposita. Вечное хранение роликов Youtube

В ubuntu есть консольная утилита youtube-dl, для загрузки роликов из Youtube.

$ sudo apt-get install youtube-dl

Утилиту можно использовать только на настольном (Desktop) компьютере с графическим интерфейсом, т.к. она тянет за собой много зависимостей и X11.


Скачивание списка воспроизведения в HD-формате

Вот например, плейлист группы Ленинград:
http://www.youtube.com/watch?v=h7xDfqSAdh0&list=PLnW5IBv8h5aB2db7Q4oBDiCs6te-pPWt8

Задача сохранять максимального качества ролик из  youtube,


$ youtube-dl --max-quality 22 http://www.youtube.com/watch?v=kp8PmgPW_AI&list=PLnW5IBv8h5aBYwFSq7KcuruWHvDdl0Wy7

Что нужно добавить в Cron, либо скрипт.

※※※

Ресурсы


1. Youtube-dl. http://youtube-dl.org/
2. Описание форматов Youtube. https://en.wikipedia.org/wiki/YouTube#Quality_and_formats
3. Группа Ленинград на youtube. http://www.youtube.com/user/shnur0k


※※※

воскресенье, 14 декабря 2014 г.

Script. Другой взгляд на терминологию.

Заметка, молпригодная, но позволяет мне не держать в памяти "корявые" имена программ.


Тут решил немного исказиться, заменить импортную терминологию, на русские слова.

Терминология

"приспособа"   - утилита
"подручный"    - менеждер
"письменъ"     - информация
"письмено"     - файл
"хитропись"    - программа
"хитропсьмена"    - мн. программы

Устанавливаемые пакеты системных и прикладных хитрописьмен.

gdisk - приспособа GPT разметки жёсткого диска.
testdisk - приспособа восстановление письмен с жёсткого диска
fio - приспособа многостороннего оценки жёстких дисков
apt-mirror - приспособа создания местного схрона пакетов хитрописьмен.


tmux - приспособа собора устройств взаимодействия с хозяином.
multitail - утилита, аналог tail, но для нескольких письмен.
mc - двухсторонний письменовой подручный.
tree - вывод дерева каталогов.

awesome - оконный подручный, для X Window.

inotify-tools - приспособы отслеживания событий с письменами
incron - приспособа отслеживания событий с письменами

xorriso - приспособа для создания образов оптических дисков и для непосредственного взаимодействия с ними.

udftools - приспособы для работы с образами синелучных японских оптических дисков

htop - расширенная версия top, показывает что происходит в утробе.
iftop - приспособа показывает загрузку канала в сеть
iotop - приспособа показывает загрузку ввода-вывода
sntop - приспособа оценки жизни узлов в сети
ntop - приспособа
nethogs - приспособа расписывает о том, какая хитропись обменивается сведениями с узлами сети, по своей воли, али по приказу хозяина.








вторник, 9 декабря 2014 г.

CSV to XML в командной строке Ubuntu

Достаточно быстрый и простой способ преобразования данных CSV файла в XML, в командной строке Ubuntu возможен с помощью программы Flat File Extractor.

$ sudo apt-get install ffe

Основу простого преобразования данных CSV to XML, составляет схема сопоставления полей, которая задается в конфигурационном файле csv2xml.fferc.

Пример: дан csv-файл pinout.csv из двух полей (номер вывода и его функция) разделённых точкой с запятой.

structure csv2xml {
    type separated ;
    output xml
    record data {
        field pin
        field func
    }
}

output xml {
    file_header "<?xml version=\"1.0\" encoding=\"OTF-8\"?>\n"
    data "<%n>%t</%n>\n"
    record_header "<%r>\n"
    record_trailer "</%r>\n"
    indent " "
}


$ ffe -o pinout.xml -c csv2xml.fferc -s csv2xml pinout.csv
получиться, что-то в этом роде:
...
<data>
 <pin>PA0</pin>
  <func>DATA0</func>
</data>
<data>
 <pin>PA1</pin>
  <func>DATA1</func>
</data>
...

Полученный файл уже можно обрабатывать автоматически XSLT процессором.
$ xsltproc template.xsl pinout.xml -o result.xml


Примечание: как задать табуляцию в виде разделителя, у меня не получилось, поэтому csv-файл с табуляциями (символ \t) был преобразован в файл с разделителями - точка с запятой.

cat pinoutsrc.csv | cut -f 1,8 --output-delimiter=';' > pinout.csv


※※※

Ресурсы


2. Flat file extractor. http://ff-extractor.sourceforge.net/
※※※