Страницы

воскресенье, 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/

※※※

Комментариев нет: