Начнём с обработки видео. Я беру второй сезон Декстера. Да, я списал его
Файлы идут с внешними субтитрами SRT (русскими и английскими). В видео встроена русская звуковая дорожка, и отдельно идёт английская дорожка в формате AC3.
Конвертация видео под iPad и iPhone
Не скажу, что я обрабатываю видео оптимально, что нельзя сделать лучше/быстрее, или что ffmpeg оптимальнее Handbrake. Меня устраивает вполне мой метод. И хоть каждый файл конвертируется очень даже неторопливо, но если оставить скрипт с десятком файлов на ночь, то всё вполне нормально.
$ ffmpeg -y -i Dexter.S02E01.avi -threads 0 -s 720x400 -aspect 720:400 \ -r 29.97 -vcodec libx264 -b 1000k -qmin 20 -qmax 50 -bufsize 10221k \ -maxrate 1800k -acodec libfaac -ar 44100 -ac 2 -ab 128k -f ipod \ -coder 1 -flags +loop -cmp +chroma \ -partitions +parti8x8+parti4x4+partp8x8+partb8x8 -me_method umh -subq 8 \ -me_range 16 -g 250 -keyint_min 25 -sc_threshold 40 -i_qfactor 0.71 \ -b_strategy 2 -qcomp 0.6 -qdiff 4 -bf 3 -refs 4 -directpred 3 -trellis 1 \ -flags2 +wpred+mixed_refs+dct8x8+fastpskip+mbtree -wpredp 2 \ Dexter.S02E01.m4v
Расписывать опции не буду – это тема для отдельной статьи.
Преобразование звуковой дорожки AC3 в AAC
$ ffmpeg -i Dexter.S02E01.ENG.ac3 -acodec libfaac -ar 44100 -ac 2 -ab 128k \ -threads 0 Dexter.S02E01.ENG.aac
Извлечение звуковой дорожки из видеофайла
Эта операция избыточна – можно было бы ограничиться тем, что после конвертации видео на первом шаге звуковая дорожка и так встроена в нормальном формате. Но для того, чтобы алгоритм был универсальным, я извлеку эту дорожку из файла по рецепту, описанном в предыдущей статье:
$ ffmpeg -i Dexter.S02E01.m4v Stream #0.0(und): Video: h264, yuv420p, 720x400 [PAR 1:1 DAR 9:5], 937 kb/s, 29.97 fps, 29.97 tbr, 2997 tbn, 59.94 tbc Stream #0.1(eng): Audio: aac, 44100 Hz, stereo, s16, 124 kb/s $ ffmpeg -i Dexter.S02E01.m4v -map 0:1 -acodec libfaac -ar 44100 -ac 2 \ -ab 128k -threads 0 Dexter.S02E01.RUS.aac
Склейка
Все файлы готовы:
-rw-r--r-- 1 ctrld staff 56970 Apr 26 13:05 Dexter.S02E01.ENG.srt -rw-r--r-- 1 ctrld staff 51175034 Apr 26 12:21 Dexter.S02E01.RUS.aac -rw-r--r-- 1 ctrld staff 65149 Apr 26 13:05 Dexter.S02E01.RUS.srt -rw-r--r--@ 1 ctrld staff 529523256 Apr 26 13:15 Dexter.S02E01.m4v
Для работы с дорожками понадобится
Для начала желательно убрать все треки, кроме видео из файла:
Далее добавляем все нужные дорожки, проставляем языки:
После нажатия на Save некоторые дорожки пометятся как “Not Enabled”, поэтому их нужно включить и записать по-новому:
После записи файла на iPhone (формат для iPad идёт и на iPhone) ни один дополнительный трек (кроме основной аудиодорожки) недоступен:
Корректировка флагов в файле
Вдумчиво читаем статью “
Видеофайл, собранный обычными утилитами типа Subler, содержит неправильные флаги, из-за чего iPhone/iPad не видит дополнительные треки. Для их корректировки используется Dumpster. Хорошая новость – он есть под Mac OS X
Нужно выполнить рекомендации, описанные в Части 5, “
Открываем сборку в Dumpmaster
- Audio1:
- Проверяем аудио у нас или нет? ‘moov’ > ‘trak’ > ‘mdia’ > ‘hdlr’ > Component subtype: ‘soun’
- ‘moov’ > ‘trak’ > ‘tkhd’ > Flags: $00000f
- ‘moov’ > ‘trak’ > ‘tkhd’ > Alternate Group: $0001
- Audio2:
- ‘moov’ > ‘trak’ > ‘mdia’ > ‘hdlr’ > Component subtype: ‘soun’
- ‘moov’ > ‘trak’ > ‘tkhd’ > Flags: $00000e
- ‘moov’ > ‘trak’ > ‘tkhd’ > Alternate Group: $0001
- Subtitle1:
- ‘moov’ > ‘trak’ > ‘mdia’ > ‘hdlr’ > Component subtype: ‘text’ заменяем на ‘sbtl’. Код: $7362746c
- ‘moov’ > ‘trak’ > ‘tkhd’ > Flags: $00000f
- ‘moov’ > ‘trak’ > ‘tkhd’ > Alternate Group: $0002
- Subtitle2:
- ‘moov’ > ‘trak’ > ‘mdia’ > ‘hdlr’ > Component subtype: ‘text’ заменяем на ‘sbtl’. Код: $7362746c
- ‘moov’ > ‘trak’ > ‘tkhd’ > Flags: $00000e
- ‘moov’ > ‘trak’ > ‘tkhd’ > Alternate Group: $0002
По умолчанию (f) – одна, альтернативных (е) – сколько угодно, т.е. галочка в свойствах фильма в QT равна “f” в dumpster-е.
Всё выглядит запутанно, но после нескольких минут становится всё понятно:
После этого шаманства файл перегоняется в iTunes, затем на iPhone, и наконец-то появляются все звуковые дорожки и субтитры:
Само собой, субтитры “soft”, т.е. отключаемые:
Для завершения покажу информацию по дорожкам файла:
$ ffmpeg -i Dexter.S02E01.m4v Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'Dexter.S02E01.m4v': Metadata: major_brand : M4V minor_version : 512 compatible_brands: isomiso2avc1 encoder : Lavf52.56.0 Duration: 00:53:35.17, start: 0.000000, bitrate: 1317 kb/s Stream #0.0(und): Video: h264, yuv420p, 720x400 [PAR 1:1 DAR 9:5], 937 kb/s, 29.97 fps, 29.97 tbr, 2997 tbn, 59.94 tbc Stream #0.1(eng): Audio: aac, 44100 Hz, stereo, s16, 124 kb/s Stream #0.2(rus): Audio: aac, 44100 Hz, stereo, s16, 125 kb/s Stream #0.3(eng): Subtitle: tx3g / 0x67337874, 0 kb/s Stream #0.4(rus): Subtitle: tx3g / 0x67337874, 0 kb/s
Метатеги
Я не рассматриваю правильное прописывание метатегов, это вопрос для отдельной статьи. Есть программы, которые сами всё прописывают. Например, есть платная программа