Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
Работа с форматами (mkv, Avi, Mp4)
topmo
сообщение 17.7.2009, 10:07
Сообщение #1


Наглость - второе счастье
***

Группа: Форумчане
Сообщений: 2 455
Регистрация: 11.5.2008
Из: Санкт-Петербург
Пользователь №: 21 890



VirtualDub (AVI)
Для работы с контейнером AVI нет ничего лучше, чем многофункциональный VirtualDub. Лучше всего использовать его модификацию VirtualDubMod. Операции монтажа достаточно удобно сделаны, хоть иногда и косячат. Последнее выражается в том, что программа отображает не тот кадр на котором стоит курсор. Поэтому осуществляя операции монтажа надо четко представлять что делаете.
Ввод данных
Видео фрагмент открывается через пункт меню "File -> Open video file".
Остальные данные - в процессе работы.

Вырезать фрагмент
В нижней части окна программы при помощи бегунка находим начало нужного сегмента и в меню выбираем "Edit -> Set selection start", либо используем клавишу "Home" на клавиатуре. Под полосой прокрутки размещены панель навигации и информация о времени, номере кадра и объеме фрагмента в мегабайтах от начала до текущей позиции. Если при этом рядом со счетчиком времени будет буковка [K], то можно считать, что ваши пожелания совпали с вашими возможностями. Потому как это обозначение ключевого кадра. Для перемещения строго по ключевым кадрам нужно зажать "Shift".
Иллюстрация

Если же такого счастья не случилось, то есть два варианта:
1. Сдвинуть бегунок влево до ближайшего ключевого кадра. Впрочем программа сделает это сама, если вы ничего не будете менять.
2. Сдвинуть бегунок вправо до ближайшего ключевого кадра. Вырезать фрагмент, а недостающую часть потом пересжать.
Чтобы указать конец фрагмента, нужно так же поставить бегунок на нужный кадр и в меню выбрать "Edit -> Set selection end", либо воспользоваться клавишей "End" на клавиатуре.
Иллюстрация

Как только указали начало и конец, то сразу на полосе прокрутки фрагмент будет отмечен выделением.
Теперь выставляем обязательно опцию "Video -> Direct stream copy" чтобы программа ничего не пересжимала и сохраняем выделенный фрагмент в файл при помощи команды меню "File -> Save as".

Склеить два фрагмента
Чтобы склеить два фрагмента должны выполняться следующие условия:
1. Должно совпадать разрешение обоих фрагментов.
2. Должна совпадать частота кадров обоих фрагментов.
3. Должны совпадать потоки аудио дорожек.
4. Должен совпадать битрейт аудио дорожек.
5. Фрагменты не должны содержать пустот в потоках аудио дорожек в начале (задержка дорожки) и в конце (дорожка короче видео) фрагмента. Иначе все может покоситься. VirtualDub совершенно не умеет обрабатывать подобные моменты.
Для того чтобы склеить два фрагмента достаточно открыть первый фрагмент обычным способом через пункт меню "File -> Open video file" и добавить второй фрагмент через пункт меню "File -> Append segment". Если все нормально, то никаких сообщений не будет и останется только сохранить результат через команду в пункте меню "File -> Save as", не забыв при этом выставить опцию "Video -> Direct stream copy".
Если же вылезла какая либо ошибка, значит технические характеристики фрагментов не идентичны.
Если в фрагментах звук в формате mp3 с переменным битрейтом, то может потребоваться раздельная склейка видео и аудио.

Добавить аудио дорожку
Вот тут как раз и проявляется все удобство VirtualDubMod по сравнению с оригинальным VirtualDub. Удобно работать с потоками и расширенный список поддерживаемых аудио-форматов.
Переходим в меню "Streams -> Stream list". Видим окно со списком аудио дорожек. Чтобы добавить дорожку жмем на кнопку "add" и выбираем файл со звуковой дорожкой. Кнопками "Move up / Move down" можно переместить её на нужную позицию, например, на первую (если добавляем перевод).
Так же здесь можно задать сдвиг дорожки в миллисекундах. Для этого щелкаем правой кнопкой мышки по нужной дорожке и выбираем пункт меню "Interleaving...". Здесь, в поле "Delay audio track by..." выставляем положительное значения для задержки звука или отрицательное для опережения.
Иллюстрация

Иллюстрация

Здесь так же не забываем выставить "Video -> Direct stream copy". Далее сохраняем результат через "File -> Save as".

Удалить аудио дорожку
Переходим в меню "Streams -> Stream list". Видим окно со списком аудио дорожек. Чтобы удалить дорожку выделяем её и жмем кнопку "Disable".
Далее сохраняем результат через "File -> Save as". Не забываем выставить опцию "Video -> Direct stream copy".

Вырезать аудио дорожку
Переходим в меню "Streams -> Stream list". Видим окно со списком аудио дорожек. Выделяем нужную и жмем кнопку "Demux".

Определить задержку аудио дорожки
Часто у аудиодорожек задают положительный сдвиг - задержку. Определить её можно следующим образом: извлекаем аудио дорожку и снова её прикрепляем. Высчитываем разницу между продолжительностью родной дорожки и прикрепленной. Это и есть задержка. Т.е. VirtualDubMod показывает продолжительность дорожки вместе с задержкой, а извлекается дорожка, естественно, без задержки.

MP4Box (MP4)
MP4Box является консольной программой, которая входит в состав проекта GPAC. Распространяется в исходниках. Для работы с ней нам понадобится графическая оболочка - Yamb. Скачать надо только версию с инсталлятором, т.к. она включает в себя скомпилированный MP4Box.
Поддерживаемые входные потоки:

* Containers: MP4, 3GP, AVI, MPG, MPEG, VOB, MOV, OGG, QCP, 3GP
* Video streams: M4V, CMP, H264, H263
* Audio Streams: AAC, AMR, AWB, EVC, MP3, OGG/Vorbis
* Subtitles Streams: SRT, TTXT, SUB, IDX/SUB, XML

Поддерживаемые выходные потоки:

* Containers: MP4, 3GP
* Video streams: raw
* Audio streams: raw
* Subtitles Streams: SRT, TTXT
* Chapters: OGM text format
Создать/изменить MP4/3GP
Слева выбираем пункт "Create". Справа - какой контейнер хотим получить на выходе.
Иллюстрация

При помощи кнопки "Add" добавляем нужные потоки и контейнеры их содержащие. Отмечаем нужное.
Иллюстрация

При необходимости выставляем свойства каждого потока (кнопка "Properties" справа). Они однообразны за исключением специфических параметров вроде пропорций у видео потока.
Иллюстрация

Указываем куда сохранять результат в поле "Output" и жмем "Next".
Если не возникло никаких ошибок, то получим MP4 файл. При возникновении ошибок более подробно можно посмотреть в протоколе, который вызывается из контекстного меню в этом же окне.
Иллюстрация

Таким же способом можно и изменить содержимое, т.е. удалить / добавить нужные дорожки или субтитры.

Вырезать фрагмент, сделать сэмпл
Слева выбираем пункт "Edit". Справа - "Click to split...".
Иллюстрация

Возможны следующие способы расчлененки:

* "Split by Size" - разрезать на одинаковые куски заданного размера.
* "Split by Duration" - разрезать на одинаковые куски заданной продолжительности.
* "Split from" - вырезать кусок, указав время начала и конца в виде hh:mm:ss.ccc
* "Split by Chapters #" - вырезать главу, если загружен список глав.
* "Split All Chapters" - разрезать по главам, если загружен список глав.

Иллюстрация

После того как определились с методом надругательства, жмем "Next" и наблюдаем за страданиями подопытного.
Иллюстрация

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

Склеить два фрагмента
Слева выбираем пункт "Edit". Справа - "Click to join supported files.".
Иллюстрация

С помощью кнопки "Add" загружаем части. Указываем куда сохранять результат в поле "Output" и жмем "Next".
Здесь так же можно выбрать потоки и указать их свойства (кнопка "Properties" справа). Но делать это нужно с умом. В самом безобидном случае программа просто выдаст ошибку.
Иллюстрация

Наблюдаем за процессом.
Извлечь поток (видео/аудио дорожку/субтитры)
Слева выбираем пункт "Edit". Справа - "Click to extract streams from...".
Иллюстрация

Указываем нужный видео-файл в поле "Input". И дальше в зависимости от типа извлекаемого потока выбираем опции извелечения:

*
Иллюстрация (видео поток)

*
Иллюстрация (аудио поток)

*
Иллюстрация (cубтитры/главы)


Пояснения:

* "Extract to Raw format" - извлечь поток без упаковки в какой либо контейнер.
* "Exctract All Streams to Raw Format" - извлечь все потоки без упаковки в какой либо контейнер.
* "Extract to MP4" - извлечь поток и упаковать в контейнер MP4.
* "Exctract to AVI" - извлечь поток и упаковать в контейнер AVI.
* "Extract to OGM Text Format" - извлечь текстовый поток в формате OGM Text Format.
* "Extract to CUESheet Form" - извлечь текстовый поток в формате CUESheet Form.

Жмем "Next" и наблюдаем за процессом.
Иллюстрация

Перейти в начало страницы
 
+Цитировать сообщение
topmo
сообщение 18.7.2009, 1:52
Сообщение #2


Наглость - второе счастье
***

Группа: Форумчане
Сообщений: 2 455
Регистрация: 11.5.2008
Из: Санкт-Петербург
Пользователь №: 21 890



mkvToolNix (MKV)
Для работы с контейнером MKV используем утилиту mkvMerge входящую в состав mkvToolNix.
Ввод данных
Загрузка исходного фрагмента осуществляется при помощи кнопки "add".
Остальные данные - в ходе работы.
Иллюстрация

Вырезать фрагмент
Переходим на вкладку "Global". Ставим галочку "Enable splitting...". Теперь нам доступны несколько режимов:
1. "...after this size" - удобна для нарезки на одинаковые фрагменты, например, на болванки CD-R.
2. "...after this duration" - аналогично первому пункту, только мерой является не размер, а продолжительность фрагмента.
3. "...after timecodes" - самая функциональная опция, служит для нарезки так как вам угодно. Достаточно перечислить через запятую время по которому будет осуществлено разрезание. Формат времени: "HH:MM:SS.nnnnnnnnn". Миллисекунды можно не указывать. Вводить времена нужно без пробелов, т.е так: "00:30:00,00:31:00,00:33:00". Получим три части по 30, 1 и 2 минуты соответственно.
Иллюстрация

Опция "max. number of files" позволяет ограничить количество фрагментов, если вам нужны, допустим, только первые два.
Соответственно, чтобы вырезать кусочек, то указываем его границы и удаляем потом все лишние фрагменты, а можно и не дожидаться окончания их создания, т.е. остановить процесс сразу после нужного фрагмента.

Склеить два фрагмента
Добавляем кнопкой "add" первый фрагмент и кнопкой "append" все последующие, указываем куда сохранить результат и жмем кнопку "Start muxing".
Иллюстрация

После чего появится окно процесса, в котором в случае возникновения ошибок будет выведена вся необходимая информация
Иллюстрация

Добавить/удалить аудио дорожку/субтитры
Добавляем все ингридиенты при помощи кнопки "add". Оставляем галочки там где нужно. Кнопочками "Up / Down" выстраиваем потоки в нужном порядке. При необходимости можно задать сдвиг, а так же сжать или растянуть аудио дорожку. Для задания сдвига укажем на вкладке "Format specific options" в поле "Delay (in ms)" нужное смещение. Положительное для задержки, отрицательное для опережения. Чтобы растянуть дорожку нужно на вкладке "Format specific options" в поле "Stretch by" указать коэффициент изменения длины.
Не все дорожки могут быть сжаты, потому как не все форматы оперативно получают поддержку. Да и делать это лучше отдельно, чтобы четко осознавать свои деяния и контролировать сам процесс.
Иллюстрация

На закладке "General track option" можно выставить следующие параметры:

* "Default track flag" - если выставить в значение "yes", то поток будет проигрываться по-умолчанию.
* "Track name" - наименование потока, например, "Комментарии режиссера", "Дубляж", "Закадровый"...
* "Language" - язык потока.
Иллюстрация

Если субтитры в формате S_TEXT/ASS, в которых используются специальные шрифты, то файлы шрифтов также надо добавить.

Извлечь поток (видео/аудио дорожку/субтитры)
Для этого понадобиться прога mkvExtract. Содержимое архива нужно распаковать и перенести файлы в папку, где установлен mkvToolNix.
Выбираем подопытного. Указываем куда будем расчленять. Отмечаем галочками нужные части. Для видео потребуется указать расширение файла (контейнер). Жмем кнопочку "Extract".
Иллюстрация

Чтобы извлечь из mkv аудио дорожку в формате FLAC, нужно воспользоваться командной строкой вида:
Код:
CODE
mkvextract tracks movie.mkv --no-ogg track_id:name.flac

* "track_id" - номер потока.
* "name.flac" - желаемое наименование выходного файла.

Изменить fps видео
Сделать это можно так: надо извлечь с помощью mkvExtract чистый видео поток, получится файл c расширением *.h264. Далее заново свести вместе со звуком при помощи mkvMerge. При выборе чистого потока видео на закладке "Format specific options" становится доступна опция выставления нужного fps.

Создание глав и нескольких версий фильма
Просто главы
В меню выбираем "Chapter Editor -> New Chapters".
Иллюстрация

В меню выбираем "Window -> Chapter editor" или просто переходим на закладку "Chapter Editor".
Здесь жмем "Add Chapter" и создаем первую главу, для которой автоматически создается раздел "EditionEntry 1".
Иллюстрация

Далее можно добавить еще главы при помощи кнопок "Add Chapter" и "Add subchapter". Отличаются они тем, что первая добавляет главу рядом с текущей, а вторая - рядом с её подглавой, т.е. на уровень ниже.
Иллюстрация

Теперь выбираем первую главу и становятся доступны её опции:

* "Start" - время начала главы относительно видеопотока (задается как HH.MM.SS.nnn).
* "End" - время окончания главы относительно видеопотока (задается как HH.MM.SS.nnn).
* "hidden" - при выставленном флажке глава будет недоступна для выбора в списке глав.
* "enabled" - при выставленном флажке глава будет пропущена при проигрывании.
* "UID" - идентификатор главы, уникальный для каждой.
* "Name" - название главы.

Время окончания главы можно не указывать, оно просто не будет учитываться.
Так же можно не указывать "UID" и "Name". Но без названия будет совсем неудобно...
Иллюстрация

Выставляем параметры остальных глав.
Иллюстрация

Редактор глав является независимой утилитой, поэтому никак не связан с частью программы отвечающей за микширование. Поэтому надо сохранить файл глав в отдельный файл через меню "Chapter Editor -> Save as". Затем этот файл нужно указать на закладке "Global" в поле "Chapter file" при этом не забыть поставить галку "No chapters" под окном "Input files" на закладке "Input". Это нужно для того, чтобы при сведении потоков не использовались настройки глав из источника при их наличии.
Иллюстрация

Доступ к списку глав можно получить кликнув правой кнопкой мышки по значку контейнера в трее при запущенном фильме.
Иллюстрация

Так же у каждой главы могут быть и подглавы.

Упорядоченные главы
Просто главы - это фактически точки поиска в видеопотоке.
Упорядоченные главы позволяют задавать виртуальную шкалу времени.
Для того, чтобы включить этот режим нужно в файл глав добавить тег "<EditionFlagOrdered>1</EditionFlagOrdered>".
Это придется делать вручную, программа не позволяет использовать эту опцию.
Пример файла глав (chapters.xml)

CODE
<?xml version="1.0" encoding="UTF-8"?>
<!-- <!DOCTYPE Tags SYSTEM "matroskatags.dtd"> -->
<Chapters>
<EditionEntry>
<EditionFlagOrdered>1</EditionFlagOrdered>
<EditionFlagHidden>0</EditionFlagHidden>
<EditionFlagDefault>0</EditionFlagDefault>
<EditionUID>418778243</EditionUID>
<ChapterAtom>
<ChapterDisplay>
<ChapterString>Opening</ChapterString>
<ChapterLanguage>und</ChapterLanguage>
</ChapterDisplay>
<ChapterUID>3825996674</ChapterUID>
<ChapterTimeStart>00:00:00.000000000</ChapterTimeStart>
<ChapterFlagHidden>0</ChapterFlagHidden>
<ChapterFlagEnabled>1</ChapterFlagEnabled>
</ChapterAtom>
<ChapterAtom>
<ChapterDisplay>
<ChapterString>Serie #1</ChapterString>
<ChapterLanguage>und</ChapterLanguage>
</ChapterDisplay>
<ChapterUID>2294809483</ChapterUID>
<ChapterTimeStart>00:00:05.000000000</ChapterTimeStart>
<ChapterFlagHidden>0</ChapterFlagHidden>
<ChapterFlagEnabled>1</ChapterFlagEnabled>
</ChapterAtom>
<ChapterAtom>
<ChapterDisplay>
<ChapterString>Ending</ChapterString>
<ChapterLanguage>und</ChapterLanguage>
</ChapterDisplay>
<ChapterUID>3630189237</ChapterUID>
<ChapterTimeStart>00:00:25.000000000</ChapterTimeStart>
<ChapterFlagHidden>0</ChapterFlagHidden>
<ChapterFlagEnabled>1</ChapterFlagEnabled>
</ChapterAtom>
</EditionEntry>
</Chapters>


Так изменяется и отображаемый список глав - появляется указатель, который показывает текущий активный фрагмент.
Иллюстрация

Доработаем список глав - проставим время их окончания.
Иллюстрация

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

Версии фильма и произвольный порядок проигрывания
Доработаем файл глав - добавим еще один раздел "EditionEntry 2" и так же заполним параметры его глав.
Иллюстрация

Сохраняем изменения, не забываем вставить для обоих разделов "EditionEntry" тэг упорядоченных глав.
Собираем фильм и запускаем. Меню в трее примет следующий вид:
Иллюстрация

Вот и получили две версии фильма, а точнее два варианта проигрывания одного и того же видеопотока.
С помощью упорядоченных глав можно задавать любой порядок проигрывания видеопотока, точнее - его частей.
В примере показана ситуация, когда в видеопотоке в хронологическом порядке записаны следующие части: заставка, сюжет первой серии, сюжет второй серии, титры. При выборе любого из потоков будет проигрываться как заставка так и титры, а вот сюжетная часть будет уже своя. Т.е. это дает экономию при записи сериала. Аналогично устроены и разные версии фильма, например, режиссерская версия и её часть - театральная. Либо режиссерская, расширенная и театральная, которые могут иметь уникальные части.
Осталась еще одна мелочь - имена версий. Ведь неудобно когда они называются "Edition 1", "Edition 2" и т.д.
Это можно исправить указав на закладке "Global" в поле "Tag file" созданный в ручную xml-файл следующего содержания:
Пример файла тэгов (tags.xml)
CODE
<?xml version="1.0" encoding="UTF-8"?>
<!-- <!DOCTYPE Tags SYSTEM "matroskatags.dtd"> -->
<Tags>
<Tag>
<Targets>
<EditionUID>418778243</EditionUID>
<TargetTypeValue>50</TargetTypeValue>
</Targets>
<Simple>
<Name>TITLE</Name>
<String>Serie #1</String>
<TagLanguage>und</TagLanguage>
<DefaultLanguage>1</DefaultLanguage>
</Simple>
</Tag>
<Tag>
<Targets>
<EditionUID>475116935</EditionUID>
<TargetTypeValue>50</TargetTypeValue>
</Targets>
<Simple>
<Name>TITLE</Name>
<String>Serie #2</String>
<TagLanguage>und</TagLanguage>
<DefaultLanguage>1</DefaultLanguage>
</Simple>
</Tag>
</Tags>

Ключевой момент здесь - указать теже "EditionUID", что и в файле глав.
В тегах "<String></String>" указываем желаемое имя версии.
Иллюстрация

В итоге получим информативное меню версий:
Иллюстрация
Перейти в начало страницы
 
+Цитировать сообщение
tlpwka
сообщение 23.7.2010, 6:32
Сообщение #3


Активный участник
***

Группа: Форумчане
Сообщений: 105
Регистрация: 17.3.2008
Из: СССР
Пользователь №: 15 353



Добавь еще описание возможности по синхронизации видео и аудио без переделки последнего в аудиоредакторе, а только с помощью параметров матрешки delay и stretch by.
Перейти в начало страницы
 
+Цитировать сообщение

Ответить в данную темуНачать новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

Текстовая версия Сейчас: 20.8.2019, 13:19