Difference between revisions of "SeminarAssembler"

From Wiki4Intranet
Jump to: navigation, search
(Интерфейс)
(Сборка)
Line 125: Line 125:
  
 
<graph>
 
<graph>
 +
  
 
digraph G{
 
digraph G{
Line 131: Line 132:
 
     rankdir=LR;
 
     rankdir=LR;
 
                        
 
                        
"../sources/screen1/source.avs" -> "../sources/screen1/common.avs" [label="includes" style=dashed color=lightblue ]
+
"../sources/cam1/source.avs" -> "../sources/cam1/.12-05-11_13-45.00.avi" [label="includes" style=dashed color=lightblue ]
"../sources/cam1/aligned.avs" -> "../sources/cam1/start_time.py.avs" [label="includes" style=dashed color=lightblue ]
+
"../sources/screen1/slide.slides.avs" -> "../sources/screen1/slide.slides" [label="parent" style=solid color=darkblue ]
"../sources/cam2/audio.avs" -> "../sources/cam2/aligned.avs" [label="includes" style=dashed color=lightblue ]
+
"bitrix24-in-aws-serbul.scenario.avs" -> "common.avs" [label="includes" style=dashed color=lightblue ]
"../sources/screen1/aligned.avs" -> "../sources/screen1/source.avs" [label="includes" style=dashed color=lightblue ]
+
"azure-highload-martynov.scenario$speed=120,width=800,height=480.avs" -> "../sources/cam2/video.avs" [label="includes" style=dashed color=lightblue ]
+
"../sources/screen1/start_time.py.avs" -> "../sources/screen1/start_time.py" [label="parent" style=solid color=darkblue ]
+
"../sources/cam1/filtered.avs" -> "../sources/cam1/common.avs" [label="includes" style=dashed color=lightblue ]
+
"../sources/cam2/aligned.avs" -> "../sources/cam2/source.avs" [label="includes" style=dashed color=lightblue ]
+
"../sources/cam1/source.avs" -> "../sources/cam1/.12-05-11_09-59.01.avi" [label="includes" style=dashed color=lightblue ]
+
 
"../sources/screen1/common.avs" -> "../lib/lib.avs" [label="includes" style=dashed color=lightblue ]
 
"../sources/screen1/common.avs" -> "../lib/lib.avs" [label="includes" style=dashed color=lightblue ]
"../sources/cam1/video.avs" -> "../sources/cam1/filtered.avs" [label="includes" style=dashed color=lightblue ]
+
"../sources/cam1/video.avs" -> "../sources/cam1/videofilters.avs" [label="includes" style=dashed color=lightblue ]
"azure-highload-martynov.scenario$speed=120,width=800,height=480.avs" -> "azure-highload-martynov.scenario" [label="parent" style=solid color=darkblue ]
+
"bitrix24-in-aws-serbul.scenario.avs.avi" -> "bitrix24-in-aws-serbul.scenario.avs" [label="parent" style=solid color=darkblue ]
"../sources/cam2/video.avs" -> "../sources/cam2/common.avs" [label="includes" style=dashed color=lightblue ]
+
"common.avs" -> "../lib/lib.avs" [label="includes" style=dashed color=lightblue ]
+
 
"../sources/cam1/video.avs" -> "../sources/cam1/common.avs" [label="includes" style=dashed color=lightblue ]
 
"../sources/cam1/video.avs" -> "../sources/cam1/common.avs" [label="includes" style=dashed color=lightblue ]
"../sources/cam1/audio.avs" -> "../sources/cam1/aligned.avs" [label="includes" style=dashed color=lightblue ]
+
"../sources/cam1/source.avs" -> "../sources/cam1/common.avs" [label="includes" style=dashed color=lightblue ]
"../sources/screen1/video.avs" -> "../sources/screen1/aligned.avs" [label="includes" style=dashed color=lightblue ]
+
"../sources/cam1/aligned.avs" -> "../sources/cam1/start_time.py.avs" [label="includes" style=dashed color=lightblue ]
"../sources/cam2/audio.avs" -> "../sources/cam2/common.avs" [label="includes" style=dashed color=lightblue ]
+
"../sources/cam1/video.avs" -> "../sources/cam1/aligned.avs" [label="includes" style=dashed color=lightblue ]
 +
"../sources/cam1/aligned.avs" -> "../sources/cam1/source.avs" [label="includes" style=dashed color=lightblue ]
 
"../sources/screen1/video.avs" -> "../sources/screen1/common.avs" [label="includes" style=dashed color=lightblue ]
 
"../sources/screen1/video.avs" -> "../sources/screen1/common.avs" [label="includes" style=dashed color=lightblue ]
"../sources/cam2/video.avs" -> "../sources/cam2/filtered.avs" [label="includes" style=dashed color=lightblue ]
+
"bitrix24-in-aws-serbul.scenario.avs" -> "../sources/screen1/video.avs" [label="includes" style=dashed color=lightblue ]
 
"../sources/cam1/audio.avs" -> "../sources/cam1/common.avs" [label="includes" style=dashed color=lightblue ]
 
"../sources/cam1/audio.avs" -> "../sources/cam1/common.avs" [label="includes" style=dashed color=lightblue ]
"../sources/cam1/source.avs" -> "../sources/cam1/common.avs" [label="includes" style=dashed color=lightblue ]
 
"../sources/cam1/aligned.avs" -> "../sources/cam1/common.avs" [label="includes" style=dashed color=lightblue ]
 
"../sources/cam1/filtered.avs" -> "../sources/cam1/aligned.avs" [label="includes" style=dashed color=lightblue ]
 
"azure-highload-martynov.scenario$speed=120,width=800,height=480.avs" -> "../sources/cam1/video.avs" [label="includes" style=dashed color=lightblue ]
 
"../sources/cam2/common.avs" -> "../lib/lib.avs" [label="includes" style=dashed color=lightblue ]
 
"../sources/cam2/filtered.avs" -> "../sources/cam2/common.avs" [label="includes" style=dashed color=lightblue ]
 
"../sources/cam2/aligned.avs" -> "../sources/cam2/common.avs" [label="includes" style=dashed color=lightblue ]
 
"../sources/cam2/source.avs" -> "../sources/cam2/.12-05-11_10-00.00.avi" [label="includes" style=dashed color=lightblue ]
 
"../sources/screen1/source.avs" -> "../sources/screen1/20120511_ADD3.mp4.avi" [label="includes" style=dashed color=lightblue ]
 
"../lib/lib.avs" -> "../lib/cachemode.avs" [label="includes" style=dashed color=lightblue ]
 
"../sources/screen1/20120511_ADD3.mp4.avi" -> "../sources/screen1/20120511_ADD3.mp4" [label="parent" style=solid color=darkblue ]
 
"../sources/cam2/filtered.avs" -> "../sources/cam2/aligned.avs" [label="includes" style=dashed color=lightblue ]
 
 
"../lib/lib.avs" -> "../lib/debugmode.avs" [label="includes" style=dashed color=lightblue ]
 
"../lib/lib.avs" -> "../lib/debugmode.avs" [label="includes" style=dashed color=lightblue ]
"../sources/cam2/aligned.avs" -> "../sources/cam2/start_time.py.avs" [label="includes" style=dashed color=lightblue ]
+
"bitrix24-in-aws-serbul.scenario.avs" -> "../sources/cam1/video.avs" [label="includes" style=dashed color=lightblue ]
"../sources/cam2/audio.avs.wav" -> "../sources/cam2/audio.avs" [label="parent" style=solid color=darkblue ]
+
"bitrix24-in-aws-serbul.scenario.avs" -> "bitrix24-in-aws-serbul.scenario" [label="parent" style=solid color=darkblue ]
 +
"../sources/cam1/aligned.avs" -> "../sources/cam1/common.avs" [label="includes" style=dashed color=lightblue ]
 
"../sources/cam1/start_time.py.avs" -> "../sources/cam1/start_time.py" [label="parent" style=solid color=darkblue ]
 
"../sources/cam1/start_time.py.avs" -> "../sources/cam1/start_time.py" [label="parent" style=solid color=darkblue ]
"../sources/cam2/start_time.py.avs" -> "../sources/cam2/start_time.py" [label="parent" style=solid color=darkblue ]
+
"common.avs" -> "../lib/lib.avs" [label="includes" style=dashed color=lightblue ]
 
"../sources/cam1/common.avs" -> "../lib/lib.avs" [label="includes" style=dashed color=lightblue ]
 
"../sources/cam1/common.avs" -> "../lib/lib.avs" [label="includes" style=dashed color=lightblue ]
"../sources/screen1/aligned.avs" -> "../sources/screen1/start_time.py.avs" [label="includes" style=dashed color=lightblue ]
+
"../sources/screen1/video.avs" -> "../sources/screen1/slide.slides.avs" [label="includes" style=dashed color=lightblue ]
"azure-highload-martynov.scenario$speed=120,width=800,height=480.avs" -> "../sources/screen1/video.avs" [label="includes" style=dashed color=lightblue ]
+
"../sources/cam1/audio.avs" -> "../sources/cam1/aligned.avs" [label="includes" style=dashed color=lightblue ]
"../sources/screen1/aligned.avs" -> "../sources/screen1/common.avs" [label="includes" style=dashed color=lightblue ]
+
"bitrix24-in-aws-serbul.scenario.avs" -> "../sources/cam1/audio.avs" [label="includes" style=dashed color=lightblue ]
"../sources/cam1/audio.avs.wav" -> "../sources/cam1/audio.avs" [label="parent" style=solid color=darkblue ]
+
"../lib/lib.avs" -> "../lib/cachemode.avs" [label="includes" style=dashed color=lightblue ]
"azure-highload-martynov.scenario$speed=120,width=800,height=480.avs" -> "../sources/cam1/audio.avs.wav" [label="includes" style=dashed color=lightblue ]
+
"../sources/cam1/videofilters.avs" -> "../sources/cam1/aligned.avs" [label="includes" style=dashed color=lightblue ]
"../sources/cam2/source.avs" -> "../sources/cam2/common.avs" [label="includes" style=dashed color=lightblue ]
+
"azure-highload-martynov.scenario$speed=120,width=800,height=480.avs" -> "../sources/cam2/audio.avs.wav" [label="includes" style=dashed color=lightblue ]
+
"azure-highload-martynov.scenario$speed=120,width=800,height=480.avs" -> "common.avs" [label="includes" style=dashed color=lightblue ]
+
"../sources/cam1/aligned.avs" -> "../sources/cam1/source.avs" [label="includes" style=dashed color=lightblue ]
+
 
}
 
}
 +
 
</graph>
 
</graph>
  

Revision as of 22:05, 22 August 2012

Title

SeminarAssembler
Author
Stas Fomin
Subfooter

Stas Fomin, 10:50, 4 November 2023

SeminarAssembler™ — это инструмент для эффективного монтажа семинаров, докладов и прочего образовательного видео, когда важно сшивать несколько разных источников — несколько камер, скринкасты, слайды, и делать это очень быстро и много.

Понятная картинка:

Статистика объема снятого и смонтированного видео в CUSTIS.svg

(примеры видео см. в http://lib.custis.ru/it-talks).

А пока основная идея:

Идея SeminarAssembler.svg

SeminarAssembler: WTF? .-.

SeminarAssembler — заставка.svg

Фреймворк быстрого видеомонтажа

  • семинаров.
  • докладов
  • лекций
  • конференций
  • вебинаров

Когда:

  • несколько потоков:
    • камеры
    • скринкасты
    • слайды
  • надо много и быстро

+ Автоматическая конверсия медиаформатов, с правкой размеров/скорости.

Этимология: Seminar .-.

  • Длинное
  • Образовательное
  • Информационно плотное
  • Активный зритель
  • не → Развлекалово, Свадьбы, …

«Видео на конвеере»/SWP-2012

Образовательное видео?

Что такое правильное обучающее IT-видео, как его смотреть, и немного — как готовить, см мой доклад на Software People-2012:

Этимология: Assembler .-.

«Сборка»
    • Множества гетерогенных медиапотоков:
      • Камер
      • Скринкастов
      • Слайдов
      • Переговоров (скайп, IM…).
    • Screen2Log-cкринкаста из блоков
Ассемблер
  • «Двухтермовый, строчный» DSL для программирования сцен:
TRANSITION RandomTrans
00:01:09 S
00:08:16
00:09:09 S
00:17:21

Кому? .-.

  • Программистам
  • Тестировщикам
  • Продвинутым пользователям

Понимающим, что такое:

  • Файл
  • Код
  • Проект
  • Сборка

Принципы .-.

  • Agile-видеомонтаж
    • Быстрая draft-версия
    • Инкрементальные улучшения
  • WYSIWYM — What You See Is What You Mean
    • Максимальная компактность и гибкость:
      • Краткий код + дизайн-шаблоны
      • Целостность
      • Коллаборативный видеомонтаж
  • Сборка
    • Автоматизируемая
    • Инкрементальное обновление
    • Масштабируемая
      • Сборка/по сети
        • вся [ночная]-мощь компьютеров компании.
  • Free & open-source.


НеВелосипед .-.

User Experience:

  • Reuse имеющийся
  • Приобретается полезный
  • свой UI минимален

Использует:

  • ffmpeg
  • Virtual Dub
  • inkscape
  • AVISynth
  • SOX
  • Sonic Visualizer

Интерфейс

  • Like svn/hg/git
  • Где нужен UI — используется Inkscape, VirtualDub, SonicVisualizer, VLC.

[svg]

Сборка

[svg]

Инсталляция .-.


Исходники .-.