Difference between revisions of "SeminarAssembler"

From Wiki4Intranet
Jump to: navigation, search
m (VitaliyFilippov moved page Двери окна Майкоп купить to SeminarAssembler over a redirect without leaving a redirect)
 
(112 intermediate revisions by 3 users not shown)
Line 3: Line 3:
 
SeminarAssembler™ — это инструмент для эффективного монтажа семинаров, докладов и прочего образовательного видео,  
 
SeminarAssembler™ — это инструмент для эффективного монтажа семинаров, докладов и прочего образовательного видео,  
 
когда важно сшивать несколько разных источников — несколько камер, скринкасты, слайды, и делать это очень быстро и много.
 
когда важно сшивать несколько разных источников — несколько камер, скринкасты, слайды, и делать это очень быстро и много.
 +
(примеры видео см. в http://lib.custis.ru/it-talks).
  
Понятная картинка:
+
;Введение:
[[File:Статистика объема снятого и смонтированного видео в CUSTIS.svg|center|800px]]
+
{{vimeoembed|48092918|800|500}}
 +
 
 +
Далее см
 +
[[:Category:Курс «Видео на конвеере»]]
 +
[[Category:Курс «Видео на конвеере»]]
  
(примеры видео см. в http://lib.custis.ru/it-talks).
 
  
 
== SeminarAssembler: WTF? .-. ==
 
== SeminarAssembler: WTF? .-. ==
 +
 +
[[File:SeminarAssembler — заставка.svg|right|thumb|400px]]
 +
 
Фреймворк быстрого видеомонтажа
 
Фреймворк быстрого видеомонтажа
 
* семинаров.
 
* семинаров.
Line 23: Line 30:
 
** слайды
 
** слайды
 
* надо много и быстро
 
* надо много и быстро
 +
 +
----
 +
+ Автоматическая конверсия медиаформатов, с правкой размеров/скорости.
  
 
=== Этимология: Seminar .-. ===
 
=== Этимология: Seminar .-. ===
 +
 
* {{!|Длинное}}
 
* {{!|Длинное}}
 
* {{!|Образовательное}}
 
* {{!|Образовательное}}
 +
* Информационно плотное
 
* {{!|Активный зритель}}
 
* {{!|Активный зритель}}
* не → {{@|Развлекательные ролики}}, {{@|Свадьбы}}, …
+
* не → {{@|Развлекалово}}, {{@|Свадьбы}}, …
 +
 
 +
----
 +
[http://www.youtube.com/watch?v=vV-GL6KMH5M «Видео на конвеере»/SWP-2012]
 +
 
 +
=== Образовательное видео? ===
 +
Что такое правильное обучающее IT-видео, как его смотреть, и немного — как готовить, см
 +
мой доклад на Software People-2012:
 +
{{youtubeembed|vV-GL6KMH5M|854|480}}
  
 
=== Этимология: Assembler .-. ===
 
=== Этимология: Assembler .-. ===
 
;«Сборка»:
 
;«Сборка»:
** Скринкаста из блоков
 
 
** Множества гетерогенных медиапотоков:
 
** Множества гетерогенных медиапотоков:
 
*** Камер
 
*** Камер
Line 38: Line 57:
 
*** Слайдов
 
*** Слайдов
 
*** Переговоров (скайп, IM…).
 
*** Переговоров (скайп, IM…).
 +
** [[Screen2Log]]-cкринкастов из блоков
  
 
;Ассемблер:
 
;Ассемблер:
 
* «Двухтермовый, строчный» DSL для программирования сцен:
 
* «Двухтермовый, строчный» DSL для программирования сцен:
 
<pre>
 
<pre>
 +
WIDTH 1280
 +
HEIGHT 720
 
TRANSITION RandomTrans
 
TRANSITION RandomTrans
 +
TITLE «Введение в технологию Enterprise Forms»
 
00:01:09 S
 
00:01:09 S
 
00:08:16
 
00:08:16
Line 50: Line 73:
  
  
== ?? ==
+
=== Оно надо? .-. ===
Инструмент бесплатный и open-source.
+
  
Cобственно уже опубликован:
+
{{SideBar40|{{@|Перегруженность}}, {{@|Мелкая мышиная моторика}}, {{@|Неавтоматизируемость}}, {{@|Ремесло}}, {{@|Немасштабируемость}}… }}
;Бинарники:  
+
[[File:Пример видеоредактора 01.jpg|256px]]
:;SeminarAssembler: http://bazaar.launchpad.net/~stanislav-fomin/seminar-assembler/trunk/view/head:/bin/sa.exe
+
[[File:Пример видеоредактора 02.jpg|256px]]
:;Используемые свободные утилиты одним паком: https://github.com/belonesox/mediatools/downloads
+
[[File:Пример видеоредактора 03.jpg|256px]]
(да, не совсем кошерно, но… потом).
+
[[File:Пример видеоредактора 04.jpg|256px]]
 +
[[File:Пример видеоредактора 05.png|256px]]
 +
[[File:Пример видеоредактора 06.jpg|256px]]
  
;Исходники: http://launchpad.net/seminar-assembler  (код так себе, но будет стимул причесать).
+
=== Кому? .-. ===
 +
[[File:Статистика объема снятого и смонтированного видео в CUSTIS.svg|right|640px]]
  
Но что с ними делать — напишу чуть позже.
+
* Программистам
 +
* Тестировщикам
 +
* {{!|Advanced Users}}
  
А пока основная идея:
+
Требующим эффективность!
 +
 
 +
Понимающим, что такое:
 +
* Файл
 +
* Код
 +
* Проект
 +
* Сборка
 +
 
 +
== Основная идея .-. ==
 
[[File:Идея SeminarAssembler.svg|center|800px]]
 
[[File:Идея SeminarAssembler.svg|center|800px]]
 +
 +
=== Матрешка .-. ===
 +
 +
[[File:Matroska._Выбор_видеопотока.png|512px]]
 +
[[File:Просмотр_Matroska_с_UTD._Пример_с_флипчартом.png|480px]]
 +
[[File:Просмотр_Matroska_с_UTD._Пример_с_Баранцевым,_01.png|480px]]
 +
 +
== Принципы .-. ==
 +
 +
[[File:wysiwym.svg|right|256px]]
 +
 +
* Agile-видеомонтаж 
 +
** Быстрая draft-версия ({{!|матрешка}}!)
 +
** Инкрементальные улучшения
 +
 +
* WYSIWYM — What You See Is What You Mean
 +
** Максимальная компактность и гибкость:
 +
*** Краткий код + дизайн-шаблоны
 +
*** Целостность
 +
*** Коллаборативный видеомонтаж
 +
 +
{{SideBar40|If the product is used as a tool, its interface should be as unintelligent as possible. Stupid is predictable; predictable is learnable; learnable is usable. [http://unqualified-reservations.blogspot.ru/2009/07/wolfram-alpha-and-hubristic-user.html ©]}}
 +
 +
 +
* Сборка
 +
** Автоматизируемая
 +
** Инкрементальное обновление
 +
** Переносимость проекта ({{@|абсолютные пути в видеоредакторах}})
 +
** Прозрачность
 +
** Масштабируемая
 +
*** Сборка/по сети
 +
**** вся [ночная]-мощь компьютеров компании.
 +
 +
* Free & open-source.
 +
 +
== НеВелосипед .-. ==
 +
{{SideBar40|User Experience:
 +
* {{!|Reuse}} имеющийся
 +
* Приобретается {{!|полезный}}
 +
* свой UI {{!|минимален}}}}
 +
 +
Использует:
 +
* <tt>ffmpeg</tt>
 +
* <tt>Virtual Dub</tt>
 +
* <tt>inkscape</tt>
 +
* <tt>AVISynth</tt>
 +
* <tt>SOX</tt>
 +
* <tt>Sonic Visualizer</tt>
 +
* <tt>mkvtools</tt>
 +
 +
Опционально:
 +
* VLC
 +
 +
=== AVISynth .-. ===
 +
 +
<pre style="font-size:75%">
 +
-------------------------------------------------------------------------------
 +
Language          files    blank  comment      code    scale  3rd gen. equiv
 +
-------------------------------------------------------------------------------
 +
C++                293      7375      8416    13858 x  1.51 =      20925.58
 +
C/C++ Header        493    12178    14871    13358 x  1.00 =      13358.00
 +
C                    41      1650      2113      6955 x  0.77 =        5355.35
 +
Bourne Shell          7      276      844      4350 x  3.81 =      16573.50
 +
m4                  14        95        52      1558 x  1.00 =        1558.00
 +
make                  5      250      506      1314 x  2.50 =        3285.00
 +
Assembly              4      115      178      524 x  0.25 =        131.00
 +
HTML                  5        1        5      439 x  1.90 =        834.10
 +
CSS                  2        8        0      258 x  1.00 =        258.00
 +
Teamcenter def        2        2        0        8 x  1.00 =          8.00
 +
-------------------------------------------------------------------------------
 +
SUM:                866    21950    26985    42622 x  1.46 =      62286.53
 +
-------------------------------------------------------------------------------
 +
</pre>
 +
 +
=== FFMPEG .-. ===
 +
 +
{{SideBar|Фабрис Беллар!}}
 +
<pre style="font-size:75%">
 +
--------------------------------------------------------------------------------
 +
Language          files    blank  comment      code    scale  3rd gen. equiv
 +
--------------------------------------------------------------------------------
 +
C                  1302    66172    57266    427936 x  0.77 =      329510.72
 +
C/C++ Header        534      9431    29244    98369 x  1.00 =      98369.00
 +
Assembly              94      3830      4119    38673 x  0.25 =        9668.25
 +
D                  1002        0        0    13844 x  1.70 =      23534.80
 +
Bourne Shell          30      692      375      4920 x  3.81 =      18745.20
 +
make                  31      233        27      2175 x  2.50 =        5437.50
 +
CSS                    1      201        57      839 x  1.00 =        839.00
 +
C++                    3      132      122      782 x  1.51 =        1180.82
 +
Perl                  1        59        61      310 x  4.00 =        1240.00
 +
XSD                    1        21        4      147 x  1.90 =        279.30
 +
Bourne Again Shell    1        11        3        44 x  3.81 =        167.64
 +
HTML                  2        5        0        19 x  1.90 =          36.10
 +
--------------------------------------------------------------------------------
 +
SUM:                3002    80787    91278    588058 x  0.83 =      489008.33
 +
--------------------------------------------------------------------------------
 +
</pre>
 +
 +
=== Inkscape .-. ===
 +
[[File:Inkscape Logo.svg|right|256px]]
 +
 +
<pre>
 +
--------------------------------------------------------------------------------
 +
Language          files    blank  comment      code    scale  3rd gen. equiv
 +
--------------------------------------------------------------------------------
 +
C++                  827    60449    61764    303558 x  1.51 =      458372.58
 +
C/C++ Header        1097    32918    58698    87517 x  1.00 =      87517.00
 +
HTML                  9      7522        8    39778 x  1.90 =      75578.20
 +
Python              225      5901      5593    29601 x  4.20 =      124324.20
 +
C                    45      5866      5935    26246 x  0.77 =      20209.42
 +
Java                494      4040    12449    11088 x  1.36 =      15079.68
 +
XML                  24      1728      1252      6494 x  1.90 =      12338.60
 +
XSLT                  14      580      1096      6352 x  1.90 =      12068.80
 +
Javascript            5      548      635      2598 x  1.48 =        3845.04
 +
Perl                  14      460      353      1889 x  4.00 =        7556.00
 +
make                  39      193        91      1586 x  2.50 =        3965.00
 +
Bourne Shell          22      272      379      1439 x  3.81 =        5482.59
 +
m4                    6      152      117      1080 x  1.00 =        1080.00
 +
CSS                    2        32        32      216 x  1.00 =        216.00
 +
DOS Batch              3        36        5      182 x  0.63 =        114.66
 +
Ruby                  1        26        32      149 x  4.20 =        625.80
 +
Teamcenter def        3        1        0        91 x  1.00 =          91.00
 +
Expect                1        18        0        56 x  2.00 =        112.00
 +
Bourne Again Shell    1        12        3        48 x  3.81 =        182.88
 +
DTD                    1        5        1        27 x  1.90 =          51.30
 +
--------------------------------------------------------------------------------
 +
SUM:                2833    120759    148443    519995 x  1.59 =      828810.75
 +
--------------------------------------------------------------------------------
 +
</pre>
 +
 +
=== VLC .-. ===
 +
 +
<pre>
 +
-------------------------------------------------------------------------------
 +
Language          files    blank  comment      code    scale  3rd gen. equiv
 +
-------------------------------------------------------------------------------
 +
C                  763    58578    56901    302733 x  0.77 =      233104.41
 +
C/C++ Header        662    14905    32261    66771 x  1.00 =      66771.00
 +
C++                254    12867    11783    64379 x  1.51 =      97212.29
 +
Bourne Shell        35    12176      5895    49867 x  3.81 =      189993.27
 +
Objective C          46      4575      2896    25531 x  2.96 =      75571.76
 +
m4                  40      1596      774    15645 x  1.00 =      15645.00
 +
Javascript            8      310      777      9469 x  1.48 =      14014.12
 +
make                153      917      1278      7653 x  2.50 =      19132.50
 +
Lua                  52      785      433      5160 x  4.00 =      20640.00
 +
XML                  12        67      148      1541 x  1.90 =        2927.90
 +
HTML                17        31      154      1425 x  1.90 =        2707.50
 +
CSS                  4        87      181      994 x  1.00 =        994.00
 +
Assembly              9      140        48      958 x  0.25 =        239.50
 +
MUMPS                2      115        0      565 x  4.21 =        2378.65
 +
DTD                  1        5        6      327 x  1.90 =        621.30
 +
Visual Basic          2        75      121      272 x  2.76 =        750.72
 +
Python                1        55        66      213 x  4.20 =        894.60
 +
MATLAB                1        29        0      124 x  4.00 =        496.00
 +
Perl                  2        16        26      112 x  4.00 =        448.00
 +
vim script            1        4        33        83 x  3.00 =        249.00
 +
sed                  2        0        0        16 x  4.00 =          64.00
 +
-------------------------------------------------------------------------------
 +
SUM:              2067    107333    113781    553838 x  1.34 =      744855.52
 +
-------------------------------------------------------------------------------
 +
</pre>
 +
 +
 +
=== SeminarAssembler .-. ===
 +
 +
<pre style="font-size:75%">
 +
-------------------------------------------------------------------------------
 +
Language          files    blank  comment      code    scale  3rd gen. equiv
 +
-------------------------------------------------------------------------------
 +
Python              27      518      569      1882 x  4.20 =        7904.40
 +
HTML                  1        55        78      238 x  1.90 =        452.20
 +
Lua                  1        6        5        33 x  4.00 =        132.00
 +
DOS Batch            1        0        0        1 x  0.63 =          0.63
 +
-------------------------------------------------------------------------------
 +
SUM:                30      579      652      2154 x  3.94 =        8489.23
 +
-------------------------------------------------------------------------------
 +
</pre>
 +
 +
* Интеграция
 +
** Местами хаки
 +
* Отлов багов (2 ffmpeg-а)
 +
* Поиск надежного и безопасного пути
 +
 +
== Машина Сборки.-. ==
 +
 +
=== Алгебра операций .-. ===
 +
 +
<graph>
 +
digraph G{
 +
    node[fontname="Consolas" fontsize=8 shape=note];
 +
    edge[fontname="Calibry" fontsize=8 fontcolor=blue dir=back]
 +
    rankdir=LR;
 +
                     
 +
"cam.avi.mp3" [style=filled fillcolor=lightgrey]
 +
"cam.avi" [style=filled fillcolor=yellow]
 +
"cam.avi.mp3" -> "cam.avi" [label="parent" style=solid color=darkblue ]
 +
}
 +
</graph>
 +
 +
=== Параметры преобразования .-. ===
 +
 +
<graph>
 +
digraph G{
 +
    node[fontname="Consolas" fontsize=8 shape=note];
 +
    edge[fontname="Calibry" fontsize=8 fontcolor=blue dir=back]
 +
    rankdir=TB;
 +
                     
 +
"1105-scaling-scrum-distributed-team-wolfson.avs.avi$speed=130,width=800,height=480,size=200m.avi" [style=filled fillcolor=lightgrey]
 +
"1105-scaling-scrum-distributed-team-wolfson.avs.avi" [style=filled fillcolor=lightgrey]
 +
"1105-scaling-scrum-distributed-team-wolfson.avs.avi$speed=130,width=800,height=480,size=200m.avi" -> "1105-scaling-scrum-distributed-team-wolfson.avs.avi" [label="parent" style=solid color=darkblue ]
 +
"1105-scaling-scrum-distributed-team-wolfson.avs.avi" [style=filled fillcolor=lightgrey]
 +
"1105-scaling-scrum-distributed-team-wolfson.avs.avi" -> "1105-scaling-scrum-distributed-team-wolfson.avs" [label="parent" style=solid color=darkblue ]
 +
}
 +
</graph>
 +
 +
 +
=== Типы файлов .-. ===
 +
 +
{{SideBar40|
 +
;Видео: AVI, MP4, …
 +
;Аудио: WAV, MP3, …
 +
 +
;AVIISYNTH-скрипты: AVS
 +
;Матрешки: MKV, …
 +
;Описание матрешки: UNCUT (YAML)
 +
 +
;Python-скрипты: PY
 +
;Верстка:SVG
 +
;Сценарии: SCENARIO
 +
 +
;Задания: .sajobs
 +
}}
 +
 +
<graph>
 +
digraph G{
 +
 +
  edge [color="blue" style=solid]
 +
  node [shape=box3d style=filled fillcolor=yellow fontname="Calibri"]
 +
 +
  "Видео" -> "Аудио"
 +
  "AVS" [fontsize=32 fontcolor=blue]
 +
  "AVS" -> "Видео"
 +
  "AVS" -> "Аудио"
 +
 +
  "PY" -> "AVS"
 +
  "SVG" -> "AVS"
 +
 +
  "UNCUT" -> "MKV"
 +
 +
  "SCENARIO" -> "AVS"
 +
 +
 +
  edge [color="green" style=dotted ]
 +
 +
  "UNCUT" -> "Видео"
 +
  "UNCUT" -> "Аудио"
 +
 +
  "AVS" -> "AVS"
 +
  "SVG" -> "AVS"
 +
 +
  "SCENARIO" -> "AVS"
 +
  "SCENARIO" -> "SVG"
 +
 +
  "AVS" -> "Видео"
 +
  "AVS" -> "Аудио"
 +
 +
  "SAJOBS" -> "Видео"
 +
  "SAJOBS" -> "Аудио"
 +
}
 +
</graph>
 +
 +
=== Зависимости .-. ===
 +
 +
<graph>
 +
digraph G{
 +
    node[fontname="Consolas" fontsize=8 shape=note];
 +
    edge[fontname="Calibry" fontsize=8 fontcolor=blue dir=back]
 +
    rankdir=TB;
 +
                     
 +
"audio.avs" -> "audio.wav" [label="includes" style=dashed color=lightblue ]
 +
"start_time.py.avs" [style=filled fillcolor=lightgrey]
 +
"start_time.py.avs" -> "start_time.py" [label="parent" style=solid color=darkblue ]
 +
"start_time.py.avs" [style=filled fillcolor=lightgrey]
 +
"audio.avs" -> "start_time.py.avs" [label="includes" style=dashed color=lightblue ]
 +
"../../lib/lib.avs" -> "../../lib/cachemode.avs" [label="includes" style=dashed color=lightblue ]
 +
"common.avs" -> "../../lib/lib.avs" [label="includes" style=dashed color=lightblue ]
 +
"audio.avs$ss=1200,len=300.wav" [style=filled fillcolor=lightgrey]
 +
"audio.avs$ss=1200,len=300.wav" -> "audio.avs" [label="parent" style=solid color=darkblue ]
 +
"audio.avs" -> "common.avs" [label="includes" style=dashed color=lightblue ]
 +
"../../lib/lib.avs" -> "../../lib/debugmode.avs" [label="includes" style=dashed color=lightblue ]
 +
}
 +
</graph>
 +
 +
=== Сборка «Матрешки» .-. ===
 +
<graph>
 +
digraph G{
 +
    node[fontname="Consolas" fontsize=8 shape=note];
 +
    edge[fontname="Calibry" fontsize=8 fontcolor=blue dir=back]
 +
    rankdir=TB;
 +
                     
 +
"../sources/cam1/source.py.avs" [style=filled fillcolor=lightgrey]
 +
"../sources/cam1/video.avs" -> "../sources/cam1/source.py.avs" [label="includes" style=dashed color=lightblue ]
 +
"2012-08-08-test.uncut.mkv" [style=filled fillcolor=lightgrey]
 +
"2012-08-08-test.uncut.mkv" -> "2012-08-08-test.uncut" [label="parent" style=solid color=darkblue ]
 +
"../sources/screen1/video.avs$vbitrate=800.avi" [style=filled fillcolor=lightgrey]
 +
"../sources/screen1/video.avs$vbitrate=800.avi" -> "../sources/screen1/video.avs" [label="parent" style=solid color=darkblue ]
 +
"../sources/cam1/video.avs$vbitrate=700.avi" [style=filled fillcolor=lightgrey]
 +
"../sources/cam1/video.avs$vbitrate=700.avi" -> "../sources/cam1/video.avs" [label="parent" style=solid color=darkblue ]
 +
"../sources/cam1/video.avs" -> "../sources/cam1/videofilters.avs" [label="includes" style=dashed color=lightblue ]
 +
"../sources/cam1/source.py.avs" [style=filled fillcolor=lightgrey]
 +
"../sources/cam1/sa-sample-camera.avi" [style=filled fillcolor=yellow]
 +
"../sources/cam1/source.py.avs" -> "../sources/cam1/sa-sample-camera.avi" [label="includes" style=dashed color=lightblue ]
 +
"../sources/screen1/common.avs" -> "../lib/lib.avs" [label="includes" style=dashed color=lightblue ]
 +
"../lib/lib.avs" -> "../lib/debugmode.avs" [label="includes" style=dashed color=lightblue ]
 +
"../sources/screen1/start_time.py.avs" [style=filled fillcolor=lightgrey]
 +
"../sources/screen1/start_time.py.avs" -> "../sources/screen1/start_time.py" [label="parent" style=solid color=darkblue ]
 +
"../sources/screen1/source.py.avs" [style=filled fillcolor=lightgrey]
 +
"../sources/screen1/source.py.avs" -> "../sources/screen1/common.avs" [label="includes" style=dashed color=lightblue ]
 +
"../sources/cam1/start_time.py.avs" [style=filled fillcolor=lightgrey]
 +
"../sources/cam1/start_time.py.avs" -> "../sources/cam1/start_time.py" [label="parent" style=solid color=darkblue ]
 +
"../sources/cam1/video.avs" -> "../sources/cam1/common.avs" [label="includes" style=dashed color=lightblue ]
 +
"../sources/cam1/start_time.py.avs" [style=filled fillcolor=lightgrey]
 +
"../sources/cam1/video.avs" -> "../sources/cam1/start_time.py.avs" [label="includes" style=dashed color=lightblue ]
 +
"../sources/screen1/source.py.avs" [style=filled fillcolor=lightgrey]
 +
"../sources/screen1/video.avs" -> "../sources/screen1/source.py.avs" [label="includes" style=dashed color=lightblue ]
 +
"../sources/cam1/source.py.avs" [style=filled fillcolor=lightgrey]
 +
"../sources/cam1/source.py.avs" -> "../sources/cam1/source.py" [label="parent" style=solid color=darkblue ]
 +
"../lib/lib.avs" -> "../lib/cachemode.avs" [label="includes" style=dashed color=lightblue ]
 +
"../sources/cam1/sa-sample-camera.avi.meta" [style=filled fillcolor=lightgrey]
 +
"../sources/cam1/sa-sample-camera.avi" [style=filled fillcolor=yellow]
 +
"../sources/cam1/sa-sample-camera.avi.meta" -> "../sources/cam1/sa-sample-camera.avi" [label="parent" style=solid color=darkblue ]
 +
"../sources/cam1/source.py.avs" [style=filled fillcolor=lightgrey]
 +
"../sources/cam1/source.py.avs" -> "../sources/cam1/common.avs" [label="includes" style=dashed color=lightblue ]
 +
"../sources/screen1/start_time.py.avs" [style=filled fillcolor=lightgrey]
 +
"../sources/screen1/video.avs" -> "../sources/screen1/start_time.py.avs" [label="includes" style=dashed color=lightblue ]
 +
"../sources/screen1/video.avs" -> "../sources/screen1/common.avs" [label="includes" style=dashed color=lightblue ]
 +
"../sources/cam1/common.avs" -> "../lib/lib.avs" [label="includes" style=dashed color=lightblue ]
 +
"../sources/cam1/sa-sample-camera.avi.meta" [style=filled fillcolor=lightgrey]
 +
"../sources/cam1/source.py" -> "../sources/cam1/sa-sample-camera.avi.meta" [label="includes" style=dashed color=lightblue ]
 +
"../sources/screen1/video.avs$vbitrate=800.avi" [style=filled fillcolor=lightgrey]
 +
"2012-08-08-test.uncut" -> "../sources/screen1/video.avs$vbitrate=800.avi" [label="includes" style=dashed color=lightblue ]
 +
"../sources/screen1/sa-sample-screencast.avi.meta" [style=filled fillcolor=lightgrey]
 +
"../sources/screen1/sa-sample-screencast.avi" [style=filled fillcolor=yellow]
 +
"../sources/screen1/sa-sample-screencast.avi.meta" -> "../sources/screen1/sa-sample-screencast.avi" [label="parent" style=solid color=darkblue ]
 +
"../sources/screen1/sa-sample-screencast.avi.meta" [style=filled fillcolor=lightgrey]
 +
"../sources/screen1/source.py" -> "../sources/screen1/sa-sample-screencast.avi.meta" [label="includes" style=dashed color=lightblue ]
 +
"../sources/screen1/source.py.avs" [style=filled fillcolor=lightgrey]
 +
"../sources/screen1/source.py.avs" -> "../sources/screen1/source.py" [label="parent" style=solid color=darkblue ]
 +
"../sources/screen1/source.py.avs" [style=filled fillcolor=lightgrey]
 +
"../sources/screen1/sa-sample-screencast.avi" [style=filled fillcolor=yellow]
 +
"../sources/screen1/source.py.avs" -> "../sources/screen1/sa-sample-screencast.avi" [label="includes" style=dashed color=lightblue ]
 +
"../sources/cam1/video.avs$vbitrate=700.avi" [style=filled fillcolor=lightgrey]
 +
"2012-08-08-test.uncut" -> "../sources/cam1/video.avs$vbitrate=700.avi" [label="includes" style=dashed color=lightblue ]
 +
}
 +
</graph>
 +
 +
 +
=== Сборка видео с версткой .-. ===
 +
 +
<graph>
 +
 +
digraph G{
 +
    node[fontname="Consolas" fontsize=8 shape=note];
 +
    edge[fontname="Calibry" fontsize=8 fontcolor=blue dir=back]
 +
    rankdir=TB;
 +
                     
 +
"scenes/default.scenario.avs" [style=filled fillcolor=lightgrey]
 +
"scenes/default.scenario.avs" -> "sources/cam1/video.avs" [label="includes" style=dashed color=lightblue ]
 +
"sources/cam1/source.py.avs" [style=filled fillcolor=lightgrey]
 +
"sources/cam1/source.py.avs" -> "sources/cam1/source.py" [label="parent" style=solid color=darkblue ]
 +
"sources/cam1/video.avs" -> "sources/cam1/common.avs" [label="includes" style=dashed color=lightblue ]
 +
"sources/screen1/common.avs" -> "lib/lib.avs" [label="includes" style=dashed color=lightblue ]
 +
"sources/cam1/start_time.py.avs" [style=filled fillcolor=lightgrey]
 +
"sources/cam1/audio.avs" -> "sources/cam1/start_time.py.avs" [label="includes" style=dashed color=lightblue ]
 +
"scenes/common.avs" -> "lib/lib.avs" [label="includes" style=dashed color=lightblue ]
 +
"sources/screen1/screen.x264.avi.meta" [style=filled fillcolor=lightgrey]
 +
"sources/screen1/source.py" -> "sources/screen1/screen.x264.avi.meta" [label="includes" style=dashed color=lightblue ]
 +
"sources/cam1/start_time.py.avs" [style=filled fillcolor=lightgrey]
 +
"sources/cam1/start_time.py.avs" -> "sources/cam1/start_time.py" [label="parent" style=solid color=darkblue ]
 +
"2010-09-22-oss-golden-mean-fomin.avs.avi" [style=filled fillcolor=lightgrey]
 +
"2010-09-22-oss-golden-mean-fomin.avs.avi" -> "2010-09-22-oss-golden-mean-fomin.avs" [label="parent" style=solid color=darkblue ]
 +
"sources/cam1/video.avs" -> "sources/cam1/videofilters.avs" [label="includes" style=dashed color=lightblue ]
 +
"sources/cam1/cam.avi.meta" [style=filled fillcolor=lightgrey]
 +
"sources/cam1/cam.avi" [style=filled fillcolor=yellow]
 +
"sources/cam1/cam.avi.meta" -> "sources/cam1/cam.avi" [label="parent" style=solid color=darkblue ]
 +
"sources/screen1/source.py.avs" [style=filled fillcolor=lightgrey]
 +
"sources/screen1/screen.x264.avi" [style=filled fillcolor=yellow]
 +
"sources/screen1/source.py.avs" -> "sources/screen1/screen.x264.avi" [label="includes" style=dashed color=lightblue ]
 +
"sources/cam1/source.py.avs" [style=filled fillcolor=lightgrey]
 +
"sources/cam1/video.avs" -> "sources/cam1/source.py.avs" [label="includes" style=dashed color=lightblue ]
 +
"sources/cam1/start_time.py.avs" [style=filled fillcolor=lightgrey]
 +
"sources/cam1/video.avs" -> "sources/cam1/start_time.py.avs" [label="includes" style=dashed color=lightblue ]
 +
"sources/screen1/video.avs" -> "sources/screen1/common.avs" [label="includes" style=dashed color=lightblue ]
 +
"sources/cam1/source.py.avs" [style=filled fillcolor=lightgrey]
 +
"sources/cam1/cam.avi" [style=filled fillcolor=yellow]
 +
"sources/cam1/source.py.avs" -> "sources/cam1/cam.avi" [label="includes" style=dashed color=lightblue ]
 +
"lib/lib.avs" -> "lib/debugmode.avs" [label="includes" style=dashed color=lightblue ]
 +
"sources/cam1/common.avs" -> "lib/lib.avs" [label="includes" style=dashed color=lightblue ]
 +
"sources/screen1/start_time.py.avs" [style=filled fillcolor=lightgrey]
 +
"sources/screen1/video.avs" -> "sources/screen1/start_time.py.avs" [label="includes" style=dashed color=lightblue ]
 +
"sources/screen1/start_time.py.avs" [style=filled fillcolor=lightgrey]
 +
"sources/screen1/start_time.py.avs" -> "sources/screen1/start_time.py" [label="parent" style=solid color=darkblue ]
 +
"sources/screen1/source.py.avs" [style=filled fillcolor=lightgrey]
 +
"sources/screen1/video.avs" -> "sources/screen1/source.py.avs" [label="includes" style=dashed color=lightblue ]
 +
"scenes/default.scenario.avs" [style=filled fillcolor=lightgrey]
 +
"scenes/default.scenario.avs" -> "scenes/default.scenario" [label="parent" style=solid color=darkblue ]
 +
"sources/screen1/source.py.avs" [style=filled fillcolor=lightgrey]
 +
"sources/screen1/source.py.avs" -> "sources/screen1/source.py" [label="parent" style=solid color=darkblue ]
 +
"sources/cam1/source.py.avs" [style=filled fillcolor=lightgrey]
 +
"sources/cam1/audio.avs" -> "sources/cam1/source.py.avs" [label="includes" style=dashed color=lightblue ]
 +
"sources/cam1/audio.avs" -> "sources/cam1/common.avs" [label="includes" style=dashed color=lightblue ]
 +
"scenes/default.scenario.avs" [style=filled fillcolor=lightgrey]
 +
"2010-09-22-oss-golden-mean-fomin.avs" -> "scenes/default.scenario.avs" [label="includes" style=dashed color=lightblue ]
 +
"scenes/default.scenario.avs" [style=filled fillcolor=lightgrey]
 +
"scenes/default.scenario.avs" -> "scenes/common.avs" [label="includes" style=dashed color=lightblue ]
 +
"sources/cam1/cam.avi.meta" [style=filled fillcolor=lightgrey]
 +
"sources/cam1/source.py" -> "sources/cam1/cam.avi.meta" [label="includes" style=dashed color=lightblue ]
 +
"sources/screen1/screen.x264.avi.meta" [style=filled fillcolor=lightgrey]
 +
"sources/screen1/screen.x264.avi" [style=filled fillcolor=yellow]
 +
"sources/screen1/screen.x264.avi.meta" -> "sources/screen1/screen.x264.avi" [label="parent" style=solid color=darkblue ]
 +
"lib/lib.avs" -> "lib/cachemode.avs" [label="includes" style=dashed color=lightblue ]
 +
"sources/screen1/source.py.avs" [style=filled fillcolor=lightgrey]
 +
"sources/screen1/source.py.avs" -> "sources/screen1/common.avs" [label="includes" style=dashed color=lightblue ]
 +
"scenes/default.scenario.avs" [style=filled fillcolor=lightgrey]
 +
"scenes/default.scenario.avs" -> "sources/cam1/audio.avs" [label="includes" style=dashed color=lightblue ]
 +
"sources/cam1/source.py.avs" [style=filled fillcolor=lightgrey]
 +
"sources/cam1/source.py.avs" -> "sources/cam1/common.avs" [label="includes" style=dashed color=lightblue ]
 +
"scenes/default.scenario.avs" [style=filled fillcolor=lightgrey]
 +
"scenes/default.scenario.avs" -> "sources/screen1/video.avs" [label="includes" style=dashed color=lightblue ]
 +
}
 +
</graph>
 +
 +
== Интерфейс .-. ==
 +
 +
=== Текстово-файловый .-. ===
 +
 +
[[File:FAR 4 SA.png|center]]
 +
 +
 +
=== Command line .-. ===
 +
{{SideBar40|Like <tt>svn</tt>/<tt>hg</tt>/<tt>git</tt>…}}
 +
 +
{{:SeminarAssembler/Command-line/Схема}}
 +
 +
=== WYSIWYM .-. ===
 +
 +
[[File:wysiwym.svg]]
 +
 +
 +
=== Синхронизация .-. ===
 +
 +
[[File:SA синхронизация по звуку.png|center]]
 +
 +
== Инсталляция .-. ==
 +
;Необходимо:
 +
* [http://avisynth.org/ AVISynth, 32bit], >= 2.6.0
 +
* Скачать [[/Builds|SA.EXE]], положить в любой каталог, включенный в PATH.
 +
 +
;Очень желательно, практически обязательно, если не уверены в обратном (для видеоверстки):
 +
* Кодек [http://sourceforge.net/projects/x264vfw/files/x264vfw/ x264vfw] 32-бит (даже, если Win764bit)
 +
** Другие кодеки по источникам ([[MiniDV2AVI|Cedocida]] для DV и т.п.).
 +
* [http://inkscape.org Inkscape]
 +
* [[VLC]]
 +
 +
 +
 +
;Рекомендую:
 +
** [[ConferenceRecorder]] или просто [[Screen2Log]] для скринкастов.
 +
 +
== Исходники .-.==
 +
* http://abf.io/belonesox/seminar-assembler/
 +
 +
== Обратная связь ==
 +
Багрепорты можно слать на [https://bugs.launchpad.net/seminar-assembler/+filebug ланчпад], или по [mailto:stas-fomin@yandex.ru email].
 +
Вопросы, замечания, предложения → туда же.

Latest revision as of 10:50, 4 November 2023

Title

SeminarAssembler
Author
Stas Fomin
Subfooter

Stas Fomin, 10:50, 4 November 2023

SeminarAssembler™ — это инструмент для эффективного монтажа семинаров, докладов и прочего образовательного видео, когда важно сшивать несколько разных источников — несколько камер, скринкасты, слайды, и делать это очень быстро и много. (примеры видео см. в http://lib.custis.ru/it-talks).

Введение

Далее см Category:Курс «Видео на конвеере»


SeminarAssembler: WTF? .-.

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

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

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

Когда:

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

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

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

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

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

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

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

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

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


Оно надо? .-.

Перегруженность, Мелкая мышиная моторика, Неавтоматизируемость, Ремесло, Немасштабируемость

Пример видеоредактора 01.jpg Пример видеоредактора 02.jpg Пример видеоредактора 03.jpg Пример видеоредактора 04.jpg Пример видеоредактора 05.png Пример видеоредактора 06.jpg

Кому? .-.

Статистика объема снятого и смонтированного видео в CUSTIS.svg
  • Программистам
  • Тестировщикам
  • Advanced Users

Требующим эффективность!

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

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

Основная идея .-.

Идея SeminarAssembler.svg

Матрешка .-.

Matroska. Выбор видеопотока.png Просмотр Matroska с UTD. Пример с флипчартом.png Просмотр Matroska с UTD. Пример с Баранцевым, 01.png

Принципы .-.

Wysiwym.svg
  • Agile-видеомонтаж
    • Быстрая draft-версия (матрешка!)
    • Инкрементальные улучшения
  • WYSIWYM — What You See Is What You Mean
    • Максимальная компактность и гибкость:
      • Краткий код + дизайн-шаблоны
      • Целостность
      • Коллаборативный видеомонтаж

If the product is used as a tool, its interface should be as unintelligent as possible. Stupid is predictable; predictable is learnable; learnable is usable. ©


  • Сборка
    • Автоматизируемая
    • Инкрементальное обновление
    • Переносимость проекта (абсолютные пути в видеоредакторах)
    • Прозрачность
    • Масштабируемая
      • Сборка/по сети
        • вся [ночная]-мощь компьютеров компании.
  • Free & open-source.

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

User Experience:

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

Использует:

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

Опционально:

  • VLC

AVISynth .-.

-------------------------------------------------------------------------------
Language          files     blank   comment      code    scale   3rd gen. equiv
-------------------------------------------------------------------------------
C++                 293      7375      8416     13858 x   1.51 =       20925.58
C/C++ Header        493     12178     14871     13358 x   1.00 =       13358.00
C                    41      1650      2113      6955 x   0.77 =        5355.35
Bourne Shell          7       276       844      4350 x   3.81 =       16573.50
m4                   14        95        52      1558 x   1.00 =        1558.00
make                  5       250       506      1314 x   2.50 =        3285.00
Assembly              4       115       178       524 x   0.25 =         131.00
HTML                  5         1         5       439 x   1.90 =         834.10
CSS                   2         8         0       258 x   1.00 =         258.00
Teamcenter def        2         2         0         8 x   1.00 =           8.00
-------------------------------------------------------------------------------
SUM:                866     21950     26985     42622 x   1.46 =       62286.53
-------------------------------------------------------------------------------

FFMPEG .-.

Фабрис Беллар!

--------------------------------------------------------------------------------
Language           files     blank   comment      code    scale   3rd gen. equiv
--------------------------------------------------------------------------------
C                   1302     66172     57266    427936 x   0.77 =      329510.72
C/C++ Header         534      9431     29244     98369 x   1.00 =       98369.00
Assembly              94      3830      4119     38673 x   0.25 =        9668.25
D                   1002         0         0     13844 x   1.70 =       23534.80
Bourne Shell          30       692       375      4920 x   3.81 =       18745.20
make                  31       233        27      2175 x   2.50 =        5437.50
CSS                    1       201        57       839 x   1.00 =         839.00
C++                    3       132       122       782 x   1.51 =        1180.82
Perl                   1        59        61       310 x   4.00 =        1240.00
XSD                    1        21         4       147 x   1.90 =         279.30
Bourne Again Shell     1        11         3        44 x   3.81 =         167.64
HTML                   2         5         0        19 x   1.90 =          36.10
--------------------------------------------------------------------------------
SUM:                3002     80787     91278    588058 x   0.83 =      489008.33
--------------------------------------------------------------------------------

Inkscape .-.

Inkscape Logo.svg
--------------------------------------------------------------------------------
Language           files     blank   comment      code    scale   3rd gen. equiv
--------------------------------------------------------------------------------
C++                  827     60449     61764    303558 x   1.51 =      458372.58
C/C++ Header        1097     32918     58698     87517 x   1.00 =       87517.00
HTML                   9      7522         8     39778 x   1.90 =       75578.20
Python               225      5901      5593     29601 x   4.20 =      124324.20
C                     45      5866      5935     26246 x   0.77 =       20209.42
Java                 494      4040     12449     11088 x   1.36 =       15079.68
XML                   24      1728      1252      6494 x   1.90 =       12338.60
XSLT                  14       580      1096      6352 x   1.90 =       12068.80
Javascript             5       548       635      2598 x   1.48 =        3845.04
Perl                  14       460       353      1889 x   4.00 =        7556.00
make                  39       193        91      1586 x   2.50 =        3965.00
Bourne Shell          22       272       379      1439 x   3.81 =        5482.59
m4                     6       152       117      1080 x   1.00 =        1080.00
CSS                    2        32        32       216 x   1.00 =         216.00
DOS Batch              3        36         5       182 x   0.63 =         114.66
Ruby                   1        26        32       149 x   4.20 =         625.80
Teamcenter def         3         1         0        91 x   1.00 =          91.00
Expect                 1        18         0        56 x   2.00 =         112.00
Bourne Again Shell     1        12         3        48 x   3.81 =         182.88
DTD                    1         5         1        27 x   1.90 =          51.30
--------------------------------------------------------------------------------
SUM:                2833    120759    148443    519995 x   1.59 =      828810.75
--------------------------------------------------------------------------------

VLC .-.

-------------------------------------------------------------------------------
Language          files     blank   comment      code    scale   3rd gen. equiv
-------------------------------------------------------------------------------
C                   763     58578     56901    302733 x   0.77 =      233104.41
C/C++ Header        662     14905     32261     66771 x   1.00 =       66771.00
C++                 254     12867     11783     64379 x   1.51 =       97212.29
Bourne Shell         35     12176      5895     49867 x   3.81 =      189993.27
Objective C          46      4575      2896     25531 x   2.96 =       75571.76
m4                   40      1596       774     15645 x   1.00 =       15645.00
Javascript            8       310       777      9469 x   1.48 =       14014.12
make                153       917      1278      7653 x   2.50 =       19132.50
Lua                  52       785       433      5160 x   4.00 =       20640.00
XML                  12        67       148      1541 x   1.90 =        2927.90
HTML                 17        31       154      1425 x   1.90 =        2707.50
CSS                   4        87       181       994 x   1.00 =         994.00
Assembly              9       140        48       958 x   0.25 =         239.50
MUMPS                 2       115         0       565 x   4.21 =        2378.65
DTD                   1         5         6       327 x   1.90 =         621.30
Visual Basic          2        75       121       272 x   2.76 =         750.72
Python                1        55        66       213 x   4.20 =         894.60
MATLAB                1        29         0       124 x   4.00 =         496.00
Perl                  2        16        26       112 x   4.00 =         448.00
vim script            1         4        33        83 x   3.00 =         249.00
sed                   2         0         0        16 x   4.00 =          64.00
-------------------------------------------------------------------------------
SUM:               2067    107333    113781    553838 x   1.34 =      744855.52
-------------------------------------------------------------------------------


SeminarAssembler .-.

-------------------------------------------------------------------------------
Language          files     blank   comment      code    scale   3rd gen. equiv
-------------------------------------------------------------------------------
Python               27       518       569      1882 x   4.20 =        7904.40
HTML                  1        55        78       238 x   1.90 =         452.20
Lua                   1         6         5        33 x   4.00 =         132.00
DOS Batch             1         0         0         1 x   0.63 =           0.63
-------------------------------------------------------------------------------
SUM:                 30       579       652      2154 x   3.94 =        8489.23
-------------------------------------------------------------------------------
  • Интеграция
    • Местами хаки
  • Отлов багов (2 ffmpeg-а)
  • Поиск надежного и безопасного пути

Машина Сборки.-.

Алгебра операций .-.

[svg]

Параметры преобразования .-.

[svg]


Типы файлов .-.

Видео
AVI, MP4, …
Аудио
WAV, MP3, …
AVIISYNTH-скрипты
AVS
Матрешки
MKV, …
Описание матрешки
UNCUT (YAML)
Python-скрипты
PY
Верстка
SVG
Сценарии
SCENARIO
Задания
.sajobs

[svg]

Зависимости .-.

[svg]

Сборка «Матрешки» .-.

[svg]


Сборка видео с версткой .-.

[svg]

Интерфейс .-.

Текстово-файловый .-.

FAR 4 SA.png


Command line .-.

Like svn/hg/git

[svg]

WYSIWYM .-.

Wysiwym.svg


Синхронизация .-.

SA синхронизация по звуку.png

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

Необходимо
  • AVISynth, 32bit, >= 2.6.0
  • Скачать SA.EXE, положить в любой каталог, включенный в PATH.
Очень желательно, практически обязательно, если не уверены в обратном (для видеоверстки)
  • Кодек x264vfw 32-бит (даже, если Win764bit)
    • Другие кодеки по источникам (Cedocida для DV и т.п.).
  • Inkscape
  • VLC


Рекомендую

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

Обратная связь

Багрепорты можно слать на ланчпад, или по email. Вопросы, замечания, предложения → туда же.