NoX World - форум об игре NoX

 
Пожалуйста, войдите или зарегистрируйтесь.

Войти
Расширенный поиск  
Сейчас онлайн стрима нет!
Сейчас на сервере никого нет!

Обязательно все ознакомьтесь с новыми Правилами Портала!

Актуальные новости:
Официальная игра №149! 11 декабря 17-00 по Москве!
Отключена авторизация на сервере и изменён IP! Подробности.


Важные темы:
Как играть по сети? Понятное руководство!
Правила Сервера NoxWorld.
Как помочь форуму финансово?

Автор Тема: Изменение VQA-файлов - вставь своё видео в NoX!  (Прочитано 7185 раз)

0 Пользователей и 1 Гость смотрят эту тему.

Evengard

  • SysAdmin
  • Администратор
  • Старожил
  • ***
  • Карма: 185
  • Оффлайн Оффлайн
  • Сообщений: 2725
  • Director
  • Awards Столп форума 2012 Активным участникам сходок - 2013 За сервер Орден 'За заслуги перед форумом I степени'
    • Просмотр профиля
    • Awards

Небольшое вступление:
Как то раз пришлось мне для некоего пользователя нашего форума под ником Сёма качать русификацию Триады. Качал я, само собой, с торрентов... Так вот среди прочих русификаторов, в списке файлов нашёлся какой то VQA2AVI. Моё природное любопытство оооочень заинтересовалось этим файлом, ибо, если все помнят - VQA файлы - это те, что лежат в папочке MOVIES - иными словами - это видео к игре.
Поизучав этот архив понял, что это лишь одна сторона вопроса, причём далекоооо не полная... Вдумчивое изучение и привело меня к написанию этой статьи.


Введение:
Файлы видео в Ноксе закодированы собственным кодеком Westwood-а VQA, а точнее третьей (последней) его версией, поддерживает 15 битные цвета (ни два ни полтора, сам удивился немного). Собственно у самого формата ограничений на разрешение экрана нету, но опытным путём доказано, что Нокс всё, что выше, чем 640x400 (не 480, а 400, будьте внимательны!) просто напросто обрезает.
Техническую информацию вы найдёте здесь: http://wiki.multimedia.cx/index.php?title=VQA
Далее, пара интересных фактов. Оказывается, всё видео в Ноксе закодировано всего лишь... Со скоростью 15 FPS! Да-да, так мало... А по внешнему виду и не скажешь. Опытным путём доказано, что реально кодек поддерживает ЛЮБЫЕ FPS-ы (за исключением дробных! Обязательно должны быть целочисленные!)
Звук в оригинальных видео кодируется всего лишь с частотой 22050 HZ, опять таки реально кодек поддерживает любую разумную частоту.
Теперь, что можно сделать. А сделать можно вот что: полностью поддерживается двустороннее кодирование! То есть мы можем как разобрать видео файл на составные части, и при желании соединить его в какой нибудь там AVI, так и наоборот - взять AVI, слегка её адаптировать и сохранить в VQA, который будет читаться NoX-ом!
Другое дело, что без бубна не обойтись...
Да, ещё замечание: я разгадал тайну скрипящих русских видео в Ноксе. Всё очень просто - у них был кривой энкодер :) И что самое удивительное - при желании МОЖНО выдрать звуковую дорожку в нормальном качестве и заново пересобрать файл - который будет воспроизводиться правильно.


Часть I: Набор утилит и предупреждения.
VQATools.7z (5,2 Mb)
Данный набор утилит - необходимый и достаточный набор для как раскодирования, так и обратного кодирования видео Нокса. В нём: два декодера (в папках Decoder и Decoder2, файлы dec.exe), один энкодер (в папке Encoder файл enc.exe) и ffmpeg.exe для "починки" и "предварительной обработки" файлов для декодеров и энкодера. Кроме того, если поискать по интернету, вы ещё поймёте, что ffmpeg.exe умеет и кодировать видео в самые разные форматы... Но это уже выходит за рамки данной статьи.
Итак, несколько предупреждений:
1. Для декодирования и кодирования требуется ОЧЕНЬ МНОГО МЕСТА! Так, например файл длительностью около 130 секунд при декодировании занимает 1,5 Gb (дада, ГИГАбайтов), и это только сырой поток, который необходимо потом ещё обрабатывать... Аналогично при кодировании.
2. Для кодирования необходимо ОЧЕНЬ МНОГО ВРЕМЕНИ! Например, всё тот же файл порядка 130 секунд требует где-то около получаса кодирования (это только чистое кодирование в VQA, а ещё нужно время на предварительную обработку).
3. При кодировании необходимо сначала адаптировать ваше видео так, чтобы число FPS было в нём НЕ ДРОБНЫМ, А ЦЕЛОЧИСЛЕННЫМ (то есть не 24,975, как часто раздают на трекерах а ровно 24 или 25) - в противном случае будет произведено округление, что вызовет рассинхронизацию видео с аудио. Разрешение видео должно быть не более 640x400 (всё, что больше, будет обрезаться снизу и справа, т.е. видео не центрируется, а всё что меньше - центрируется, но не растягивается).
4. Для того, чтобы корректно выполнять пункты этой инструкции, необходимо уметь пользоваться командной строкой (cmd)! (Запускается через "Пуск"->"Выполнить", в окошко вводится "cmd" (без кавычек) и нажимается OK)
5. Иногда бывает, что NoX глючит и в принципе не воспроизводит видео. Если видео Ноксом вдруг не воспроизводится после кодирования - не пугайтесь и не паникуйте - обычно после перезапуска компьютера эта странная привычка Нокса пропадает, и он снова воспроизводит все видеофайлы, как оригиналы, так и ваши.
6. Поскольку утилиты как для кодирования, так и для декодирования весьма и весьма глючны, не удивляйтесь странным шагам в инструкциях и не делайте по своему - можете просто потерять зря время, ожидая пока энкодер будет пытаться открыть вашу AVI-шку.


Часть II: Декодирование видео Нокса.
I. Удостоверьтесь, что у вас достаточно места на жёстком диске (рекомендуется запас около 5 Gb). После чего положите видео, которое вы собираетесь декодировать, в отдельную папку - чтобы не запутаться. В данном примере я предполагаю, что папка, в которой лежит видео, лежит по адресу C:\VQADecode, а архив с утилитами вы распаковали в C:\VQATools. Имя файла в данном примере - INTRO.VQA

II. Получение сырого видеопотока. Существует два способа получить сырой видеопоток из VQA файла - соответственно с помощью двух декодеров, которые лежат в наборе утилит. Причина, по которой я выложил оба, в том, что одним проще пользоваться, но он глючнее, а второй сложен в использовании и неочевиден - но зато может декодировать то видео, с которым первый не справился.
A) Первый декодер: C:\VQATools\Decoder\dec.exe
1) Запустите декодер по указанному адресу.
2) При первом запуске он у вас попросит его настроить. Если вы уже настраивали его, пропустите эти подпункты.
- На вопрос о привязки декодера к различным поддерживаемым файлам - снимаем галочку и отвечаем No.
- На окне с тремя вкладками: на первой вкладке выбираем English, на второй: 640x480x32bit. Жмём Ok.
3) В появившемся окне укажите файл, который необходимо раскодировать. Например, C:\VQADecode\INTRO.VQA.
4) Перед вами появится окно обработки файла. Нажмите "Convert" -> "VQA->AVI". В появившемся окне укажите, куда сохранять файл. В данном примере, сохраняем в C:\VQADecode\INTRO-raw.avi
5) Ждём, пока он не раскодирует видео.
6) Может появиться ошибка типа "Error decoding frame <какие-то числа>" - попробуйте ещё несколько раз с пункта 4. Если после 5-ти раз он так и не раскодировал, переходите ко второму способу декодирования.
7) В случае успеха появится окно, оповещающее об успехе.

B) Второй декодер: C:\VQATools\Decoder2\dec.exe
1) Запустите декодер по указанному адресу.
2) Перед вами появится окно, разделённое на две части. Все операции производятся в ЛЕВОЙ части. После запуска, в левой части будет отображена директория, в которой находится сам декодер, то есть C:\VQATools\Decoder2. Перейдите в папку C:\VQADecode, используя ".." для перехода на один уровень вверх.
3) Нажмите левой кнопкой на файл INTRO.VQA. В правой части появится сводка о файле. Если она не появилась - значит вы выбрали не тот файл.
4) Нажмите правой кнопкой на файл INTRO.VQA и выберите пункт "Copy to AVI". В появившемся окне в раскрывающемся списке выберите "Полные кадры (Без сжатия)" и нажмите OK. После этого программа подвиснет - это нормально. Не трогайте её! Как только она отвиснет - значит декодирование завершено.
5) Перейдите с помощью проводника в папку C:\VQATools\Decoder2 - в ней будет лежать файл INTRO.avi - это и есть декодированный файл. Переименуйте его в INTRO-raw.avi и положите в C:\VQADecode. Если система спросит о замене файла - отвечайте утвердительно - первый декодер оставляет частично раскодированный файл даже в случае неуспеха в декодировании.

В итоге, каким бы вы способом не пошли, вы должны были получить файл C:\VQADecode\INTRO-raw.avi. Поскольку оба декодера кривые - то получился и кривой файл. Теоретически, в нём должен был бы быть сразу и звук - но на практике, из за плохо сформированного файла звук теряется. Вы можете попробывать проиграть этот файл - либо он вообще не проиграется, либо он проиграется без звука и перемотки.


III. Получение сырого аудиопотока. Здесь нужно чётко знать, что за видео вы конвертируете. Дело в том, что существует два вида видео: первый: правильно сформированный VQA файл (обычно это оригинальные английские видеофайлы Нокса и файлы, сформированные энкодером из утилит из архива) и плохо сформированный VQA файл (обычно это русские переведённые видеофайлы Нокса с шипящим и скрипящим неразборчивым звуком). Звук из каждого извлекается разными способами. ВНИМАНИЕ! Способ для одного другому не подходит! Иначе вы получите всего лишь скрипящий файл!
A) правильно сформированный VQA файл
1) Открываем C:\VQATools\Decoder\dec.exe.
2) Выполняем пункты с II.A.2 по II.A.3
3) В окне обработки файла, выбираем "Convert" -> "VQA->WAV"
4) Выбираем, куда сохранять файл, например в C:\VQADecode\INTRO-audioraw.wav
5) Ждём завершения декодирования (никогда проблем не было с декодированием).
6) В случае успеха появится окно, оповещающее об успехе.

B) плохо сформированный VQA файл.
1) Открываем командную строку, переходим в ней в C:\VQADecode ("cd C:\VQADecode")
2) Вводим в ней: C:\VQATools\ffmpeg.exe -i INTRO.VQA INTRO-audioraw.wav
3) Если появится что-то вроде "File exists, overwrite? Y/N" нажимаем Y.
4) Ждём завершения.

В любом случае, у вас должен был появиться файл C:\VQADecode\INTRO-audioraw.wav

IV. Переформирование сырого видеопотока в корректный файл. Этот этап необходим, поскольку далеко не все программы способны обрабатывать такой вот плохо сформированный AVI файл, более того некоторые программы (например, avidemux - отличная утилита для перекодирования видео) и вовсе падают при прочтении такого файла.
1) Открываем командную строку, переходим в ней в C:\VQADecode (cd C:\VQADecode)
2) Вводим в ней: C:\VQATools\ffmpeg.exe -i INTRO-raw.avi -an -sameq INTRO-correct.avi
3) Если появится что-то вроде "File exists, overwrite? Y/N" нажимаем Y.
4) Ждём завершения.
В итоге мы получим файл C:\VQADecode\INTRO-correct.avi. Этот файл можно проиграть в любом современном плеере, поддерживающим AVI-шки. Размер этого файла будет примерно в три раза меньше, чем у исходного INTRO-raw.avi, но пока что он будет без звука.

V. Соединение звука и видео в один файл. Этот этап необязателен, обычно после IV этапа можно открывать свой любимый кодировщик и пользоваться получившимися файлами INTRO-correct.avi и INTRO-audioraw.wav для кодирования их в любимый формат. Этот шаг даже на самом деле не рекомендуется - в итоге получится крупный файл, который мало где может понадобиться. Однако, если вы хотите получить единую AVI-шку с видео и звуком тем что есть, то выполните следующее:
1) Открываем командную строку, переходим в ней в C:\VQADecode (cd C:\VQADecode)
2) Вводим в ней: C:\VQATools\ffmpeg.exe -i INTRO-correct.avi -sameq -i INTRO-audioraw.wav INTRO-final.avi
3) Если появится что-то вроде "File exists, overwrite? Y/N" нажимаем Y.
4) Ждём завершения.
Вы получите файл C:\VQADecode\INTRO-final.avi, которую можно воспроизвести любым современным плеером - это уже полноценное видео со звуком, в оригинальном качестве (без потерь).

Часть III. Кодирование видео Нокса.
I. Удостоверьтесь, что у вас достаточно места на жёстком диске (рекомендуется запас около 5 Gb). После чего положите видео, которое вы собираетесь кодировать, в отдельную папку - чтобы не запутаться. В данном примере я предполагаю, что папка, в которой лежит видео, лежит по адресу C:\VQAEncode, а архив с утилитами вы распаковали в C:\VQATools. Имя файла в данном примере - NoxAct4.mp4.

II. Для начала, вычленим отдельно звуковую дорожку. Для этого:
1) Открываем командную строку, переходим в ней в C:\VQAEncode ("cd C:\VQAEncode")
2) Вводим в ней: C:\VQATools\ffmpeg.exe -i NoxAct4.mp4 NoxAct4-rawaudio.wav
3) Если появится что-то вроде "File exists, overwrite? Y/N" нажимаем Y.
4) Ждём завершения.

В итоге, мы должны получить файл C:\VQAEncode\NoxAct4-rawaudio.wav, который собственно и содержит звуковую дорожку. При желании, её можно прослушать.

III. Разбиение видео на отдельные кадры. Дело всё в том, что энкодер понимает AVI-шки только того странного глючного формата, которые создаёт декодер. То есть, если у вас есть такая AVI-шка (из предыдущего примера это C:\VQADecode\INTRO-raw.avi), то этот шаг необязателен (например, в случае если вы всего лишь решили заменить аудиодорожку у уже существующего VQA файла, который вы ранее декодировали). Однако с почти 100% вероятностью, если вы хотите вставить своё видео, то этот шаг необходимо выполнить.
Перед его выполнением, удостоверьтесь, что видео не более 640x400 по разрешению экрана, и что значение FPS у него не дробное. ЗАПОМНИТЕ ЧИСЛО FPS! Оно необходимо для следующего шага!
1) Открываем командную строку, переходим в ней в C:\VQAEncode ("cd C:\VQAEncode")
2) Вводим в ней: md NoxAct4-frames
3) Вводим в ней: C:\VQATools\ffmpeg.exe -i NoxAct4.mp4 NoxAct4-frames\frame%06d.pcx
4) Если появится что-то вроде "File exists, overwrite? Y/N" нажимаем Y.
5) Ждём завершения.

После этого у вас в папке C:\VQAEncode должна появиться новая папка NoxAct4-frames, в которой будут лежать файлы frame000001.pcx, frame000002.pcx и т.д., по количеству кадров.

IV. Кодирование в VQA.
1) Запустите файл C:\VQATools\Encoder\enc.exe
2) В поле "Input file" необходимо указать либо поддерживаемый AVI файл (см пункт III для разъяснений), либо первый кадр разобранного по кадрам видео. В данном примере это C:\VQAEncode\NoxAct4-frames\frame000001.pcx
3) В поле "Sound file" необходимо указать файл со звуковой дорожкой. В данном примере это C:\VQAEncode\NoxAct4-rawaudio.wav. После указания проверьте, чтобы галочка "AVI Sound" НЕ стояла!
4) В поле "Output file" необходимо указать имя и путь результирующего файла. В данном примере это будет C:\VQAEncode\NoxAct4.vqa
5) Если поле "Frame Rate" пустое, необходимо ввести сюда число FPS оригинального файла (см пункт III для пояснения).
6) Проверьте, чтобы галочка "Sound" была включена! Если её снять - вы получите видео без звука.
7) Нажмите "GO!" и запаситесь терпением - кодирование может быть ОЧЕНЬ долгим.
8) При успешном завершении программа оповестит вас об этом.

В итоге вы получите файл NoxAct4.vqa, который и есть закодированный NoxAct4.mp4!

V. Проверка работоспособности.
1) Скопируйте NoxAct4.vqa в папку "MOVIES" NoX-а
2) Переименуйте (если он там есть) существующий файл INTRO.VQA в INTRO1.VQA.
3) Переименуйте NoxAct4.vqa в INTRO.VQA.
4) Запустите NoX.
5) В главном меню, нажмите "Вступление".
6) Наслаждайтесь результатом ;)


Вместо заключения:
Надеюсь, вам это пригодится. Если что-то непонятно, напишите здесь же в теме. Если будет непонятно много - озабочусь созданием скриншотов.
Записан
Не упоминай администраторов всуе...
С уважением, TriOptimum Corporation

PS: Покаяние - Признание своей вины в чем-либо, обычно с просьбой о прощении

Evengard

  • SysAdmin
  • Администратор
  • Старожил
  • ***
  • Карма: 185
  • Оффлайн Оффлайн
  • Сообщений: 2725
  • Director
  • Awards Столп форума 2012 Активным участникам сходок - 2013 За сервер Орден 'За заслуги перед форумом I степени'
    • Просмотр профиля
    • Awards

Появилась идея (Сёмина опять таки ;) ) раскодировать все ролики Нокса и выложить их на форуме. В связи с этим вопрос: какой перевод вы хотите? Или англ оригинал?
Записан
Не упоминай администраторов всуе...
С уважением, TriOptimum Corporation

PS: Покаяние - Признание своей вины в чем-либо, обычно с просьбой о прощении

AndrEe

  • Всех люблю в NW ;)
  • Постоялец
  • **
  • Карма: 8
  • Оффлайн Оффлайн
  • Сообщений: 102
  • где-то кто-то для кого-то создан...
    • Просмотр профиля
    • Awards

Если будет перевод то хорошо)) так как я не знаю англ. яз(((..но если и в оригинале, то тоже не плохо).....(а в каком именно  переводе лично мне без разницы)
Записан
Только одно делает исполнение мечты невозможным-это страх неудачи(с).

pss88

  • Постоялец
  • **
  • Карма: 0
  • Оффлайн Оффлайн
  • Сообщений: 81
    • Просмотр профиля
    • Awards

А что - там много говорят??? Только в первом, вроде. Но мы все его уже наизусть знаем)))
Записан

Evengard

  • SysAdmin
  • Администратор
  • Старожил
  • ***
  • Карма: 185
  • Оффлайн Оффлайн
  • Сообщений: 2725
  • Director
  • Awards Столп форума 2012 Активным участникам сходок - 2013 За сервер Орден 'За заслуги перед форумом I степени'
    • Просмотр профиля
    • Awards

Еще во всех трех концовках
Записан
Не упоминай администраторов всуе...
С уважением, TriOptimum Corporation

PS: Покаяние - Признание своей вины в чем-либо, обычно с просьбой о прощении

Сёма

  • Пользователь
  • ****
  • Карма: 0
  • Оффлайн Оффлайн
  • Сообщений: 9
    • Просмотр профиля
    • Awards

На русском однозначно! Многие не знают инглиша. Я в детстве когда играл, то у меня было токо интро на английском, как Хекуба колдует. Сейчас узнал что есть ещё и 3 концовки... Однозначно на русском!

И особая благодарность Evengard'у за предоставленную информацию, помощь новичкам и фанатам Nox.


PS Английская версия на ютубе есть.
Записан

WarZeva+lot

  • Постоялец
  • ***
  • Карма: 10
  • Оффлайн Оффлайн
  • Сообщений: 221
    • Просмотр профиля
    • Awards

Этот FAQ, видимо, создан для того, чтобы заменять концовки персонажей порнографическими сценками - мол, всё закончилось хорошо, все подружились  :lol:
Записан
После того, как было отринуто моё предложение  встретиться не на экране монитора, а в городе, в котором мы оба проживаем и выяснить всё раз и навсегда в ближайшее выходные, обещанного приглашения меня я почему-то так нигде и не вижу. Напоминание WarZealot-у и пища для ума пользователям форума. (с) Squall

Сёма

  • Пользователь
  • ****
  • Карма: 0
  • Оффлайн Оффлайн
  • Сообщений: 9
    • Просмотр профиля
    • Awards
Записан

AndrEe

  • Всех люблю в NW ;)
  • Постоялец
  • **
  • Карма: 8
  • Оффлайн Оффлайн
  • Сообщений: 102
  • где-то кто-то для кого-то создан...
    • Просмотр профиля
    • Awards
Записан
Только одно делает исполнение мечты невозможным-это страх неудачи(с).

Сёма

  • Пользователь
  • ****
  • Карма: 0
  • Оффлайн Оффлайн
  • Сообщений: 9
    • Просмотр профиля
    • Awards

Во во... У верен, что на такую хорошую игру ни у кого рука не поднимится сделать такое.

Ну дак что, будете на ютуб заливать русские ролики?
Записан

Evengard

  • SysAdmin
  • Администратор
  • Старожил
  • ***
  • Карма: 185
  • Оффлайн Оффлайн
  • Сообщений: 2725
  • Director
  • Awards Столп форума 2012 Активным участникам сходок - 2013 За сервер Орден 'За заслуги перед форумом I степени'
    • Просмотр профиля
    • Awards

По техническим причинам, у меня некоторое время не будет доступа к уомпу. Как появится - сделаю
Записан
Не упоминай администраторов всуе...
С уважением, TriOptimum Corporation

PS: Покаяние - Признание своей вины в чем-либо, обычно с просьбой о прощении

Evengard

  • SysAdmin
  • Администратор
  • Старожил
  • ***
  • Карма: 185
  • Оффлайн Оффлайн
  • Сообщений: 2725
  • Director
  • Awards Столп форума 2012 Активным участникам сходок - 2013 За сервер Орден 'За заслуги перед форумом I степени'
    • Просмотр профиля
    • Awards

Итак. Переконвертировал все видео Нокса, вот что вышло:
1. Все ролики без слов (2 штуки) - NOXLOGO и WWLOGO
2. Все английские ролики без перевода (4 штуки) - CONJURER, INTRO, WARRIOR и WIZARD
3. Русский ролик INTRO в переводе и озвучке от Триады (1 штука)
4. Русские ролики в переводе и озвучке от Фаргуса (3 штуки) - CONJURER, WARRIOR и WIZARD
В сумме будет выложено 10 файлов.
Собственно сами файлы готовы к выкладыванию, как только появится норм инет (а появится он сегодня вечером или завтра) выложу. Поэтому до этого времени у вас есть время оспорить пункты 3 и 4.
Поясню почему INTRO взял от Триады - дело в том, что у Фаргуса вся первая половина (до попадания Джека на летающий корабль Джандора) просто напросто не переведена, а у 7 Волка перевод мне показался слишком далёким от истины... А в Триадском мне понравилось как Хекуба сама себя прокляла))) "Да пребудет со мной вечная... ПРОКЛЯТЬЕ!"))) (Алсо, этот же перевод используется в Навигаторе/Русском Проекте)
PS: наверное многие заметили, что на Ютубе эндинг за мага обрывается на самом интересном месте... Ну так я выложу на радость всем полную)))
Записан
Не упоминай администраторов всуе...
С уважением, TriOptimum Corporation

PS: Покаяние - Признание своей вины в чем-либо, обычно с просьбой о прощении

Урчин-флудераст-Владик

  • Постоялец
  • **
  • Карма: -3
  • Оффлайн Оффлайн
  • Сообщений: 94
  • Урчин, делающий карты
    • Просмотр профиля
    • Awards

Evengard пишет:
Цитировать
а у 7 Волка перевод мне показался слишком далёким от истины...
Это потому что колдун называется волшебником.
Записан
Я делаю карты для Нокса.
Расширенный поиск  
 

Страница сгенерирована за 0.063 секунд. Запросов: 20.