Делаем видеодиск для PlayStation без VideoCD-аддона (видео + статья) (Old-Hard № 89)

Хотите сделать видеодиск для PS1, записав туда любимое видео? Нет? Поздно, я под это дело уже написал скрипт и теперь хочу поделиться им с вами :)

Начнём с главного: скрипт создания образа диска с видео лежит на гитхабе в разделе релизов, там же находится пошаговая инструкция на русском языке. С картинками! Написан скрипт под виндовый CMD, так что для его использования никаких дополнительных библиотек или утилит качать не надо, всё есть в архиве. Перетаскиваем видяшку на скрипт, ждём, нажимаем кнопку, ждём, нажимаем вторую кнопку, ещё немного ждём, профит! Ну или нет, но об этом — ниже.

Предпосылки

В конце девяностых (начале двухтысячных?) отечественные пираты начали продавать диски с фильмами, которые можно смотреть на PS1 «без использования дополнительных модулей». И спустя почти 20 лет мне захотелось научиться делать подобные диски. Никакой практической пользы, просто just for fun. В результате получился скрипт и видео на эту тему, причём само видео тоже можно посмотреть на PS1 :) Ссылка на образ и запасная ссылка ждут самых любопытных!

Суть решения

Содержимое подобных пиратских дисков довольно банальное: файл видеоплеера, файл с фильмом и PS1-аналог autorun-файла.

Делаем видеодиск для PlayStation без VideoCD-аддона (видео + статья) (Old-Hard № 89)

И в интернете относительно просто найти старенькую утилиту Movie Converter от компании Sony, которая умеет конвертировать несжатое видео в формат STR, адаптированный для проигрывания на PS1. Причём эта утилита умеет загружать собственные скрипты с параметрами обработки, чтобы не нужно было каждый раз всё прописывать вручную.

Делаем видеодиск для PlayStation без VideoCD-аддона (видео + статья) (Old-Hard № 89)

Так что может показаться, что процесс создания своего диска очень просто автоматизировать:

  • конвертируем через FFmpeg видео в несжатый AVI-файл с PCM-звуком
  • подсовываем файл утилите от Sony, на выходе получаем STR-файл
  • собираем через опенсорсную утилиту mkpsxiso образ диска, аналогичный пиратскому, но с нашим видео-файлом

Профит? Ну… не совсем. У пиратского плеера есть ряд недостатков, но главную свинью подложил Movie Converter: как я понял, он умеет работать только с устаревшим стандартом AVI-файлов, и не понимает файлы больше 1 ГБ. При использовании разрешения 320x240 с 15 кадрами в секунду и моно-звуком с дискретизацией 37.8 кГц в этот объём укладывается примерно 10 минут видео (точнее что-то в районе 9 минут 50 секунд). Если подсунуть ему видео длиннее — он выдаст ошибку, остановив конвертирование, а мы получим в выходном файле первые ~10 минут видео.

 
 

И никаких альтернатив этому конвертеру я не нашёл. Точнее нашёл, но они тоже не умели правильно читать файлы больше 1 ГБ. В интернете при поиске утилит в основном находятся конвертеры ИЗ формата STR, а не В него.

Конечно можно было бы использовать ещё более низкое разрешение и качество звука, чтобы уместиться в 1 ГБ, но вот беда — выдранный с пиратского диска плеер на других настройках ничего путного не показывает. Да и терять ещё сильнее в качестве картинки не хочется…

Делаем видеодиск для PlayStation без VideoCD-аддона (видео + статья) (Old-Hard № 89)

Тем не менее, решение было найдено, пускай и несколько костыльное. На просторах сети я отыскал другой плеер для PS1, способный показывать симпатичное меню для выбора одного из нескольких клипов.

Делаем видеодиск для PlayStation без VideoCD-аддона (видео + статья) (Old-Hard № 89)

Но что ещё круче — он играет эти клипы последовательно! Так что можно разбить видеофайл на куски короче 10 минут, после чего — собрать образ диска уже с этим плеером. Я выбрал вариант «4 файла по 8 минут», на выходе это даёт что-то в районе каноничных 650 мегабайт данных. Сейчас конечно в ходу болванки по 700 мегабайт, но олдскульщики то помнят!

С разбиванием файлов на куски опять таки прекрасно справляется FFmpeg, а Movie Converter умеет конвертировать файлы в пакетном режиме, так что проблема казалось бы решена. Но у решения есть проблемы, связанные с попыткой сделать всё одновременно автоматизировано и лениво:

  • на переходах между файлами может спотыкаться как изображение, так и звук
  • если длина меньше 32 минут и помещается не в 4, а в 3 файла — в меню выбора файла всё равно будет 4 главы
  • перемотка работает кривовато, причём «назад» можно перемотать только до того клипа, с которого вы начали. Выбрали первым 3 файл из 4? Перемотать до 1 и 2 вы уже не сможете, только через выход в меню
  • сделанный мною «дизайн» меню выглядит вот так вот страшненько. Цифры в меню — минуты, с которой начнётся воспроизведение. Меню никак не меняется даже если видео существенно короче 32 минут. Цифра внизу не просто так обрезана - здешнее меню скроллится, стрелка же стоит на месте.
Делаем видеодиск для PlayStation без VideoCD-аддона (видео + статья) (Old-Hard № 89)

При этом в открытый доступ я выложил оба варианат скрипта, и для ~10-минутных видео, и для 32-минутных, так что можете использовать в то, что вам сейчас лучше подходит.

Другие нюансы

  • PS1 выдаёт на экран картинку в формате 4:3, если скрипту дать видео с другим соотношением сторон — на этапе конвертирование в видео будут автоматически добавлены чёрные полосы. FFmpeg — мощная штука!
  • Использованные плееры не умеют ставить воспроизведение на паузу, только перематывать видео вперёд и назад крестовиной геймпада. Для паузы можно использовать воркэраунд: если открыть крышку консоли — воспроизведение поставится на паузу, а после закрытия — продолжится с момента остановки.
  • По окончанию воспроизведения плеер зависает, остаётся только перезагружать консоль
  • Для временных файлов может понадобиться до 4 ГБ на диске со скриптом
  • Видео конвертируется в разрешение 320x240 с 15 кадрами в секунду и моно-звуком с дискретизацией 37.8 кГц. В принципе консоль поддерживает в этом разрешении до 30 кадров в секунду и стерео-звук, но в такой ситуации снижается общий битрейт видео (скорость привода то ограничена), как следствие — повышается число артефактов сжатия
  • Образ создаётся для стандарта PAL. Второй плеер имеет версию для NTSC, но скрипт готовился в первую очередь для себя, а у нас в стране в ходу были чипованные консоли, работающие с любым регионом.

Напоследок ещё раз повторюсь, что делалось всё это чисто развлечения ради. Но если вы захотите написать свой плеер для PS1, свой конвертер в видео-формат STR или придумаете как улучшить скрипт, используя текущие утилиты — милости прошу на гитхаб :)

105105
23 комментария

DIY всегда заебись респек

5

Комментарий недоступен

2

Давно смотрю Вас, респект за все)

2

Ага, я об этом даже в видео упоминал, и более того - нашёл для иллюстрации это же самое фото :) В текстовой версии же решил не пересказывать всё видео целиком, а сделать краткую выжимку наиболее интересных моментов.

1