Code Monkey home page Code Monkey logo

afs-companion's Introduction

UPD 2018

Лучше использовать Voukoder - больше функций, удобнее управление, нет костыле-задержки, да и вообще - это не костыль-сопровождение, а нормальный плагин, причем в активной разработке.


Скрипт-компаньон для Advanced FrameServer

Рассчитан на работу вместе AviSynth и FFmpeg 32bit (из-за AviSynth только 32, увы), который, разумеется, должен быть добавлен в PATH, написан под Python 3.3+.

Создан для личного использования, ибо libx264 выигрывает по качеству у mainconcept h.264 в Adobe PP Pro при аналогичном битрейте. Последний же, более того, имеет весьма скудный набор опций, среди которых нет возможности задать RF, который может быть полезен, когда не знаешь, насколько хорошо картинка будет ужиматься при конкретном битрейте.

Разумеется, в сравнении выше недостаточный битрей был выбран намеренно - чтобы продемонстировать разницу более наглядно. На каком-нибудь 10М 2-pass всё было бы далеко не настолько печально. Но тем не менее...

...Однако, кодирует на ~30%+ дольше - и это не считая задержу в 12 секунд между кодированием файлов в очереди, от которой, увы, не избавиться (разве что в исходники AFS лезть, но пока как-то лениво). Увы, за хорошее сжатие приходится платить...

Использование

exe-версию можно найти тут.

По-умолчанию работает в фоне, открывая консоль только во время кодирования ради вывода прогресса.

В настройках AFS поставить:

stop serving when idle → idle timeout установить на 10 секунд - минимальное доступное время

Добавить скрипт в автозапуск через планировщик заданий или ещё как-нибудь, и запускать так:

>>> ...path\to\frameserver.pyw -w d:\my\custom\watch_dir

...где watch_dir - папка, куда будут кидаться тобой, человек, временные avi-файлы из AFS (создастся, если отсутствует по заданному пути). Если её не задать - создастся по необходимости сразу при запуске скрипта и будет юзаться %HOMEPATH%\AFS_OUTPUT\, с мыслью о том, что уж юзер-директория то точно должна быть.

...Ну или запускать каждый раз ручками, idk. Но тогда разумно будет сменить расширение с .pyw на .py (или запускать *-cli.exe версию, соответственно) - чтобы была возможность вырубить скрипт не только через завершение процесса...

После запуска скрипт будет каждую секунду проверять, нет ли avi-файлика в заданной папке, и если есть - начинать кодирование с дефолтными или заданными опциями (о которых ниже), и если кодирование таки пошло - после будет таймаут 12 секунд ради того чтобы AFS точно успел удалить отработанный avi-файл, если же и этого будет мало - то скрипт попробует выпилить его своими силами.

Что еще умеет

Поддерживает очередь, собственно, ради этого и нужен таймаут.

Некоторые настройки можно задавать через имя выходного файла близким к FFmpeg синтаксисом:

  • my file name scale=w,h.avi в итоге даст масштаб до ширины w и высоты h аналогично опции FFmpeg -vf scale=w:h -sws_flags lanczos:
    • так, например, scale=-2,1080 отмасштабирует до 1080px по высоте, сохраняя при этом делимость на 2 ширины (нужно для кодека x264)
    • умеет только в числа, в будущем, быть может, добавлю iw и ih, хотя, учитывая контекст использования, пока не вижу смысла...
  • my file name -an.avi уберет аудио - сделано специально для mp4-анимаций telegram, ради которого, собственно, это добро и написано. Без неё кодирует AAC 576k.
  • my file name -crf 20.avi даст кодирование с RF = 20, принимает значение в пределах [0-51], при отсутствии/неверном значении кодируется с RF=18:
    • 0 lossless >>> 18 better >>> 23 x264 default >>> 28 worse >>> 51 worst

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

Параметры можно комбинировать, разумеется.

Протестировано и успешно работает на

  • Adobe Premiere Pro CC 2017 и Adobe Media Encoder CC 2017
  • Python 3.6.3
  • AviSynth 2.6.0.6
  • FFmpeg 3.3.3 win32 shared

Возможные альтернативы

  • x264vfw - можно использовать, если вывод в контейнер avi - приемлем, и вся очередь должна быть с одинаковыми настройками кодека. Из-за того, что конфигурация кодека глобальная - отсутствует возможность сделать пресет с конкретными настойками. Также, увы, не умеет определять исходные характеристики файла - т.е. задавать разрешение и частоту кадров нужно всегда вручную. Ну, и, разумеется, скрипт можно при желании отредактировать под кодирование любого поддерживаемого FFmpeg кодека, когда как x264vfw, как очевидно даже из названия, - это только x264.
    • Использование: установить, в экспорте выбрать "формат - AVI" -> "видеокодек - x264vfw".

p.s. Из-за AviSynth боится всяких кандзи и прочего юникода в названиях файлов. Увы.

afs-companion's People

Contributors

mahoushoujomivutilde avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.