Videoforum - форум о видео и не только!


Вернуться   Videoforum - форум о видео и не только! > Видеосъёмка и монтаж. > Кодеки и кодеры, кодирование и конвертация.

Важная информация

Кодеки и кодеры, кодирование и конвертация. Тут обсуждаются вопросы изменения формата видео, качество работы кодировщиков, а так-же известные проблемы и решения соответствующие тематике раздела.

Ответ
 
Опции темы
Старый 05.04.2014, 21:28   #1
Жрец Нефтиды
Модератор
 
Аватар для Жрец Нефтиды
 
Регистрация: 15.07.2012
Адрес: Санкт-Петербург
Сообщений: 1,334
Сказал(а) спасибо: 290
Поблагодарили 414 раз(а) в 280 сообщениях
Вес репутации: 372
Жрец Нефтиды has a brilliant futureЖрец Нефтиды has a brilliant futureЖрец Нефтиды has a brilliant futureЖрец Нефтиды has a brilliant futureЖрец Нефтиды has a brilliant future
По умолчанию Растяжение и сжатие звуковой дорожки

Данная операция имеет место, когда нужно приделать звуковую дорожку из релиза NTSC в релиз ПАЛ или наоборот.
Сразу предупреждаю: конечная цель описанных в этой статье действий – получить "матрёшку" без пережатия видео с одной или несколькими звуковыми дорожками для просмотра исключительно на компьютере. Деятели, озабоченные приданию фильму оформления DVD Video для просмотра на аппаратном плеере – бегом марш из темы.
Введём терминологию. Релиз, ИЗ которого берётся АУДИО дорожка, будем называть "исходник". Релиз, из которого берётся ВИДЕО дорожка, назовём "конечник".
Полагаю, что действия лучше всего будет объяснить на примере. Возьмём фильм "Большие гонки", в котором мы столкнёмся практически со всеми трудностями.
Исходник – видео в формате NTSC с совковым дубляжом
"Макс, нам при жизни памятник поставят!"
Конечник – видео в формате ПАЛ с закадровым переводом
Возможно, через некоторое время будет и качественный ПАЛ с совковым дубляжом. Но на тот момент, когда я это делал, такого релиза не было.
Скачиваем вобы каждого релиза с первого (а не с нулевого) до последнего. Располагаем вобы каждого релиза в отдельных папках. Будем считать, что винчестер у тебя уже резиновый.
Самая трудоёмкая операция – сопоставление кадров. Открываем вначале в DGIndex-е все вобы конечника. Видим, что фильм начинается с увертюры. Пока ничего не делаем, закрываем DGIndex.
Открываем в DGIndex-е все вобы исходника. Видим, что до увертюры в нём ещё что-то есть. Скачем кнопкой ">" по ключевым кадрам, пока не увидим начало увертюры. В верхней (синей) строке DGIndex-а видим "Vob3". Отмечаем начало кнопкой "[". Дальше начинаются тонкости.
Если видео находится в формате NTSC, то в DGIndex-е задаём: "Video" – "Field Operation" – "Forced Film". При этом "Forced Film" нужно задавать для любого NTSC, независимо от того, какая там реальная частота кадров: 30000/1001, 24000/1001 или переменная. Конвертировать видео мы здесь не собираемся, нам нужно только сопоставить кадры. Поскольку исходник – NTSC, то задаём "Forced Film", жмём "File" – "Save Project" и создаём проект. Выгружаем DGIndex.
Снова запускаем DGIndex и открываем все вобы конечника. Если видео находится в формате PAL, то в DGIndex-е задаём: "Video" – "Field Operation" – "Honor Pulldown Flags". Конечник у нас ПАЛ, поэтому задаём "Honor". Конечник конкретно в данном случае нам нужен весь, поэтому никуда скакать по ключевым кадрам и выделять начало не надо. Но из конечника нам также нужен будет и демюксированный видео поток – читай мою статью "Тонкости перекидывания файлов в контейнер "Матрёшка". Поэтому для файлов конечника в DGIndex-е жмём "File" – "Save Project and Demux Video". Ждём окончания процесса. Винт, как мы договорились, у тебя резиновый. Пока никакие файлы ниоткуда не удаляем!
И в папке, где расположены вобы исходника, и в папке, где расположены вобы конечника, пишем такие скрипты:
LoadPlugin("DGDecode.dll")
MPEG2Source("1.d2v")
Для дальнейших действий нам будут нужны два важных числа. Звук на всех DVD Video пишется с частотой дискретизации 48 кГц – другого я просто не встречал. Для такой частоты дискретизации одному кадру ПАЛ соответствует 1920 сэмплов звука. Одному кадру NTSC с частотой 24000/1001 – а именно такая fps будет в проекте при задании "Forced Film" – соответствует 2002 сэмпла звука.
Операции по растяжению и сжатию звука невозможно выполнить без разжатия звука до несжатого wav. Читаем мои статьи "В чём разница между DRC из старого и нового кодека AC3?" и "Точная подгонка громкости звука при его декодировании из AC3". Поскольку операции по присобачиванию звука из одного релиза в другой обычно требуется делать для старых фильмов, снятых изначально на киноплёнку, то для разжатия звука будем использовать старый ас3 кодек Виговского ac3filter_0_70b.exe.
Все операции по сжатию или растяжению мы будем делать, естественно, со звуком, выдернутом из исходника. Звук из конечника мы тоже присоединим к "матрёшке", ничего с этим ас3 не делая.
Открываем в GoldWave-е файл ас3 из исходника. Подбираем громкость для старого Виговского – конкретно в данном случае это будет 21.1. Смотрим, есть ли в названии ас3 информация о смещении. Если есть, то на этом этапе её нужно отработать. Если смещение отрицательное, то GoldWave-ом отрезаем из начала ровно столько миллисекунд. Если смещение положительное, то GoldWave-ом вставляем в начало ровно столько миллисекунд тишины. Сохраняем звук в несжатом формате wav под именем, например, 1.wav. Выгружаем GoldWave.
Кое-кто из "крутых", возможно, захочет прямо выполнить все операции, не сохраняя 1.wav и не выгружая GoldWave. Я бы крайне не рекомендовал изображать из себя Рембо. Ну хотя бы потому, что не факт, что у тебя сразу всё получится. Гораздо удобнее иметь для действий несжатый wav и с ним спокойно работать.
Вот теперь мы вплотную подошли к "большой драке". Открываем в Виртуал Дабе скрипт из папки исходника. Во втором Виртуал Дабе открываем скрипт из папки конечника. Первым делом смотрим, нет ли в исходнике NTSC такого куска кадров, которого нет в конечнике ПАЛ. В данных "Гонках" такой кусок есть. Это антракт начиная с кадра № 129998 до кадра 132540. Номера кадров здесь – это номера в исходнике! Выделяем в том Дабе, в котором открыт скрипт исходника, отрезок от кадра № 129998 до кадра 132540. Жмём кнопку "delete". Кусок исчез. Реально, конечно же, мы ничего не вырезали, а лишь удалили отрезок кадров из проекта. (Если бы ситуация была обратная, то есть в исходнике не хватало бы куска, то с этого кадра в Виртуал Дабе нужно было бы вставить "недостающее" количество кадров, причём любых.)
После, подчёркиваю – после вырезания "лишнего" куска начинаем строить таблицу сопоставления кадров. Я это делаю не на бумажке, а нарисовав в Word-е таблицу сопоставления.
Для данных "Гонок" имеем. Кадру 5550 в исходнике NTSC соответствует кадр 5526 в конечнике ПАЛ. То есть разность 24 кадра. Кадру 21727 в исходнике NTSC соответствует кадр 21704 в конечнике ПАЛ. То есть разность 23 кадра. И так далее. Обычно для выявления закономерности нужно около двадцати кадров. Кадру 145351 в исходнике NTSC соответствует кадр 145353 в конечнике ПАЛ. Разность минус 2 кадра. Кадру 224616 в исходнике NTSC соответствует кадр 224628 в конечнике ПАЛ. Разность минус 12 кадров. Дальше найти соответствие не представляется возможным. Таким образом, у конечника ПАЛ появилось 24-(-12)= 36 "лишних" кадров. Нарастание идёт относительно равномерно по длине фильма. Слово "относительно" можно отбросить и считать, что равномерно.
Выгружаем оба Виртуал Даба – они сделали своё дело и больше нам не потребуются. Запускаем GoldWave. Открываем в нём файл 1.wav. Вот дальше принципиально важна последовательность действий.
Начинаем с того, что вырезаем отрезок звука, соответствующий лишнему куску кадров. Начало и конец вырезки задаём при помощи кнопки "Set", базируясь на сэмплах. Вырезаем с сэмпла 129998*2002 = 260255996 до 132540*2002 = 265345080 сэмпла. Обрати внимание: расчёт делаем, исходя из того стандарта, в котором находится исходник. Исходник у нас – NTSC, и на один кадр, как говорилось выше, приходится 2002 сэмплов.
А если бы таких лишних кусков было бы два и более? Тогда и в Виртуал Дабе, и в GoldWave-е вырезать нужно, начиная от того куска, который находится ближе к концу, и последовательно идти к кускам, находящимся ближе к началу.
(Если бы в исходнике не хватало бы куска или кусков, то в GoldWave-е нужно было бы вставлять кусок или куски тишины, исходя из таких же расчётов.)
Далее спереди вырезаем 24*2002 = 48048 сэмплов. Снова жмём "Set", чтобы выяснить, какова длина в сэмплах получившегося звука. Имеем 455589140 сэмплов. Сохраним где-нибудь это число, представляющее из себя длину звука после всех вырезаний. Сохраняем получившийся звук под именем, скажем, 2.wav. Выгружаем GoldWave.
Берёмся за калькулятор. Последний кадр исходника NTSC, который можно сопоставить с кадром конечника ПАЛ, имеет номер, как я говорил, 224616. К этому кадру набежала разница в 36 кадров. Но кадр №224616 – это ещё не конец фильма. Поэтому выполним экстраполяцию. Кадру №224616 соответствует сэмпл 224616*2002 = 449681232. Следовательно, для компенсации набежавших лишних кадров исходник надо растянуть таким образом, чтобы его длина стала равна 455589140+36*2002*(455589140/449681232) = 455662158,88 сэмплов. Конечно, дробными сэмплы быть не могут, но округлим мы позже.
Пояснение: 455589140 – длина звука в сэмплах после всех вырезаний; 449681232 – позиция в сэмплах того последнего кадра в исходнике NTSC, который можно сопоставить; 36 – количество набежавших лишних кадров в конечнике ПАЛ; 2002 – количество сэмплов на 1 кадр в исходнике NTSC.
Считаем дальше. Теперь нам нужно 455662158,88 сэмплов ужать таким образом, чтобы скорость из 24000/1001 кадров в секунду привести к скорости 25 кадров в секунду. Делаем это таким вычислением:
455662158,88*24000/1001/25 = 436998673,85 сэмплов.
Переводим сэмплы в секунды с точностью до 4 знаков после запятой:
436998673,85 / 48000 = 9104,1390 секунд.
Это число переведём в часы, минуты и секунды и представим в таком виде:
02:31:44.1390
Число в таком виде сохраняем в каком-нибудь текстовом редакторе, например в "Блокноте", и копируем в буфер обмена.
В последний раз запускаем GoldWave. Открываем в нём 2.wav. Жмём кнопку "Time Warp" – она расположена на нижней панели кнопок справа. Тебе предложат три алгоритма растяжения-сжатия. Самый качественный – и, парадокс, самый быстрый – это алгоритм "Rate". Нигде в других местах я не встречал того, чтобы самый качественный алгоритм оказывался самым быстрым. Алгоритм "Rate" подобен тому, как если бы мы замедляли или ускоряли скорость вращения виниловой пластинки на патефоне. Именно так он объяснён в справке к GoldWave.
"Rate" не сохраняет тембра (pitch) звучания: ведь если мы будем вращать пластинку на патефоне быстрее, то звук будет писклявее. Поскольку при переходе от NTSC к ПАЛ скорость изменяется не более, чем на 5%, то изменения тембра будут незначительны. Два других алгоритма пытаются сохранить тембр, но ценой введения артефактов и возможной рассинхронизации. Попробуй, если не влом, и сплюнь.
Ставим точку у "Length". Копируем из буфера обмена длину. OK. Пока идёт процесс, расслабься, погладь кота. В смысле не пытайся запустить параллельно какой-то другой процесс.
По окончании можно нажать кнопку "Set" и посмотреть, какая реально получилась длина аудио дорожки. Получившаяся длина может на несколько тысячных долей секунды отличаться от заданной – это нормально.
Сохраняем полученный звук под именем 0.wav. Выгружаем GoldWave. Сжимаем 0.wav во флэк: flac.exe -V -8 0.wav И никаких скотско-жмотливых гундей о сжатии во всякие там кодеки с потерями! Флэк, и только флэк! Места на "девятке" хватит и ещё для "Трёх бананов" останется!
Собираем "матрёшку". Для этого берём демюксированный видео поток из конечника ПАЛ, аудио во флэке и аудио в ас3, демюксированное из конечника.
Таким образом, получили замечательную "матрёшку" с двумя аудио дорожками: с совковым дубляжом и с современным переводом. Смотрим при помощи Хоумсинема и убеждаемся, что всё по высшему разряду.
Если ты захочешь повторить описанный здесь подвиг конкретно с данными релизами, то тебе не нужно ничего сопоставлять в Виртуал Дабе: берёшь готовые цифры и используешь их в GoldWave. Не забудь только прогнать вобы через DGIndex так, как описано в начале статьи.
Возможно, кому-то изложенные здесь приёмы покажутся сложными. Ну что же, качество стоит того, чтобы постараться. Я выполнил все эти действия быстрее, чем написал эту статью. И получил удовольствие. Приятно после того, как прошлялся весь день по лесам со жрицей, оттянуться ещё и по-математически.
Возможно, тебе придётся столкнуться с ситуацией, когда никакие куски звука вырезать не надо, а нужно только уменьшить или увеличить скорость. То есть когда есть хорошее покадровое соответствие релизов. И вот тут тупой "рационализатор" может прогондурасить типа: используем звук из исходника, как он есть, а в матрёшечнике в строке "Растянуть на:" вставляем коэффициент растяжения или сжатия. Так вот заставь такого гондурасова чистить очко. Да, синхронизации мы достигнем. Но какой ценой! В матрёшке нет алгоритма "Rate". Там вообще нет никакого алгоритма растяжения или сжатия. Если мы всадим коэффициент, то синхронизация будет обеспечена добавлением или выкидыванием видео кадров, что есть полный отстой. Ещё раз убеждаемся, что один программист не может хорошо решать задачи из разных областей. Программист матрёшечника преуспел в работе с разными форматами, здесь ему действительно нет равных, а вот в тонкой математике для работы со звуком преуспел программист GoldWave-а.

Последний раз редактировалось Жрец Нефтиды; 04.10.2017 в 00:00.
Жрец Нефтиды вне форума   Ответить с цитированием Вверх
2 пользователя(ей) сказали cпасибо:
Admina (06.04.2014), ВячеславKZ (07.04.2014)
Реклама на форуме
Старый 06.04.2014, 09:16   #2
zombie583
Профи
 
Регистрация: 07.09.2012
Сообщений: 87
Сказал(а) спасибо: 10
Поблагодарили 26 раз(а) в 25 сообщениях
Вес репутации: 203
zombie583 has a spectacular aura about
По умолчанию

Новости от GW
[Для просмотра данной ссылки нужно зарегистрироваться]

Последний раз редактировалось zombie583; 06.04.2014 в 18:53.
zombie583 вне форума   Ответить с цитированием Вверх
Пользователь сказал cпасибо:
Старый 06.04.2014, 18:34   #3
Жрец Нефтиды
Модератор
 
Аватар для Жрец Нефтиды
 
Регистрация: 15.07.2012
Адрес: Санкт-Петербург
Сообщений: 1,334
Сказал(а) спасибо: 290
Поблагодарили 414 раз(а) в 280 сообщениях
Вес репутации: 372
Жрец Нефтиды has a brilliant futureЖрец Нефтиды has a brilliant futureЖрец Нефтиды has a brilliant futureЖрец Нефтиды has a brilliant futureЖрец Нефтиды has a brilliant future
По умолчанию

Обещать жениться -- это ещё не значит жениться, in development -- это еще в разработке. Главное заявленное новшество шестёрки -- работа с шестиканальным звуком. GW изначально был заточен на 2 канала, 6 каналов -- это новый для программиста GW подход. ИМХО я не буду торопиться переходить с абсолютно идеального для меня 5.70. Посмотрим, как там всё пойдёт.

Последний раз редактировалось Жрец Нефтиды; 06.04.2014 в 20:20.
Жрец Нефтиды вне форума   Ответить с цитированием Вверх
Старый 21.11.2017, 19:21   #4
Жрец Нефтиды
Модератор
 
Аватар для Жрец Нефтиды
 
Регистрация: 15.07.2012
Адрес: Санкт-Петербург
Сообщений: 1,334
Сказал(а) спасибо: 290
Поблагодарили 414 раз(а) в 280 сообщениях
Вес репутации: 372
Жрец Нефтиды has a brilliant futureЖрец Нефтиды has a brilliant futureЖрец Нефтиды has a brilliant futureЖрец Нефтиды has a brilliant futureЖрец Нефтиды has a brilliant future
По умолчанию

Вот я возился со звуком, кадры сопоставлял, а тут уже вышли "Большие гонки" HD под 50 гигов. Там и советский дубляж есть, кстати, на слух чуток лучше даже, и два перевода.
Жрец, тебе, в отличие от Фэйта и Макса, памятник при жизни не поставят.
Жрец Нефтиды вне форума   Ответить с цитированием Вверх
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Качественное снятие звуковой дорожки с CD диска Жрец Нефтиды Кодеки и кодеры, кодирование и конвертация. 40 01.01.2016 13:03
Проблема с отображением звуковой дорожки kazbek Sony Vegas 4 21.05.2013 18:04
Сжатие Fraps видео. Ollegro Общие вопросы по видеомонтажу 2 18.03.2011 00:28
Настройка звуковой карты NewGhost Кодеки и кодеры, кодирование и конвертация. 2 17.03.2011 12:00
Сжатие исходных материалов voin747 Общие вопросы по видеомонтажу 10 29.09.2010 07:01


Часовой пояс GMT +1, время: 16:09.




Powered by vBulletin® Version 3.8.3
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd. Перевод: zCarot