Difference between revisions of "SA SYNC"
(→cam2/audio.avs .-.) |
|||
(18 intermediate revisions by the same user not shown) | |||
Line 2: | Line 2: | ||
− | {{vimeoembed||800|500}} | + | {{vimeoembed|48092917|800|500}} |
== SA: продвинутая синхронизация .-. == | == SA: продвинутая синхронизация .-. == | ||
Line 27: | Line 27: | ||
}} | }} | ||
− | {{vimeoembed|49178506| | + | {{vimeoembed|49178506|300|200}} |
{{vimeoembed|49178503|320|120}} | {{vimeoembed|49178503|320|120}} | ||
{{vimeoembed|49178504|320|200}} | {{vimeoembed|49178504|320|200}} | ||
Line 33: | Line 33: | ||
== Потоки .-. == | == Потоки .-. == | ||
+ | <slides split="----"> | ||
[[File:Потоки в SA. Синхронизация по звуку.svg|center|800px]] | [[File:Потоки в SA. Синхронизация по звуку.svg|center|800px]] | ||
+ | ---- | ||
+ | |||
+ | [[File:SA_синхронизация_по_звуку.png|center|800px]] | ||
+ | |||
+ | ---- | ||
+ | |||
+ | [[File:Потоки в SA. Синхронизация по звуку.svg|center|800px]] | ||
+ | </slides> | ||
== start_time.py .-. == | == start_time.py .-. == | ||
Line 59: | Line 68: | ||
</code-python> | </code-python> | ||
− | == | + | == cam2/… .-. == |
<graph> | <graph> | ||
Line 112: | Line 121: | ||
</code-perl> | </code-perl> | ||
− | == | + | === screen1/audio.avs .-. === |
− | + | ||
− | + | ||
− | + | <code-perl> | |
− | + | #Audio AVS-script, for opening with WAVSource function. | |
− | + | #Time-adjusted according to timediff.py | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | import("common.avs") | |
+ | import("start_time.py.avs") | ||
− | + | #[Un]comment following lines, if you want/not want to use internal audio channel. | |
− | + | audio = AVISource("source.py.avs").KillVideo() | |
+ | |||
+ | #[Un]comment following lines, if you want/not want to use external audio file. | ||
+ | #audio = WavSource("audio.wav") | ||
+ | |||
+ | #[Un]comment following lines, if you want/not want to use screen2log datas | ||
+ | #import("screen2log_audio.avs") | ||
+ | #audio = screen2log_audio() | ||
+ | |||
+ | |||
+ | audio = audio.TrimAudioMS(TRIM_START_MS) | ||
+ | audio | ||
+ | </code-perl> | ||
− | |||
− | |||
− | + | == Попробуйте синхронизовать! .-. == | |
− | + | ||
− | + | Правильные ответы (мои, смотреть файлы <tt>start_time.py.avs</tt>): | |
+ | ;cam1: 0 | ||
+ | ;cam2: 19680 | ||
+ | ;screen1: 12456 | ||
− | + | Синхронизация: | |
+ | * камера/screencast: {{!|±секунда}} — ОК | ||
+ | * жесты/речь: {{!|±800мс}} — ОК. | ||
+ | * губы/речь: {{@|±150мс}} — ОК (лучше {{@|±50мс}}). | ||
+ | * сложение двух звуковых потоков — {{@|±25мс}} | ||
− | + | == Задания .-. == | |
+ | ;Бонус задание: синхронизируйте | ||
+ | * относительно сam2 | ||
+ | * относительно screen1 | ||
+ | * Проверьте синхронизацию с разной глубиной <tt>--start</tt> | ||
− | * | + | * Соберите матрешку |
− | + | == Должно получится … .-. == | |
− | + | Устройства ввода, эмоции, направление взгляда | |
+ | <slides split="----"> | ||
+ | [[File:SeminarAssembler для UX sessions.png|center]] | ||
+ | ---- | ||
+ | [[File:SeminarAssembler для UX sessions-2.png|center]] | ||
+ | ---- | ||
+ | [[File:SeminarAssembler для UX sessions-3.png|center]] | ||
+ | </slides> | ||
== ВСЕ! .-. == | == ВСЕ! .-. == | ||
Line 154: | Line 183: | ||
Этого достаточно: | Этого достаточно: | ||
* Монтировать 95% внутрикомпанейских видео. | * Монтировать 95% внутрикомпанейских видео. | ||
+ | ** Не приходя в сознание! | ||
* MKV-публикуется на файл-сервере. | * MKV-публикуется на файл-сервере. | ||
* Ссылки на отрывки с вики-системы. | * Ссылки на отрывки с вики-системы. |
Latest revision as of 19:21, 13 September 2012
- Title
- «SA SYNC»
- Author
- Stas Fomin
- Subfooter
- Stas Fomin, 19:21, 13 September 2012
Видео в HD-качестве, смотрите в полноэкранном режиме.
HTML-код включения <iframe src="http://player.vimeo.com/video/48092917?byline=0&portrait=0" width="800" height="500" frameborder="0"></iframe>
Contents
SA: продвинутая синхронизация .-.
Задание «SA INIT» уже выполнено? Если нет → SA INIT
Берем
- запись с двух камер
- скринкаст
Синхронизируем
- по звуку
- событию (на глаз) + по звуку
Делаем «Матрешку»
Исходники .-.
Создаем тестовый проект
- sa-test4sync-cam.avi
- cam1
- sa-test4sync-keyboard.avi
- cam2
- sa-test4sync-screencast.avi
- screen1
Видео в HD-качестве, смотрите в полноэкранном режиме.
HTML-код включения <iframe src="http://player.vimeo.com/video/49178506?byline=0&portrait=0" width="300" height="200" frameborder="0"></iframe>
Видео в HD-качестве, смотрите в полноэкранном режиме.
HTML-код включения <iframe src="http://player.vimeo.com/video/49178503?byline=0&portrait=0" width="320" height="120" frameborder="0"></iframe>
Видео в HD-качестве, смотрите в полноэкранном режиме.
HTML-код включения <iframe src="http://player.vimeo.com/video/49178504?byline=0&portrait=0" width="320" height="200" frameborder="0"></iframe>
Потоки .-.
start_time.py .-.
REFERENCE_STREAM={} #Uncomment this (and modify appropriately) if you want to time linking to other stream #execfile(ut.get_script_dir() + '/../cam1/start_time.py', globals(), REFERENCE_STREAM) diff_ms = 0 if 'START' in REFERENCE_STREAM: diff_ms = REFERENCE_STREAM['START'] # Linking by some visible event their_time_ms = ut.time2ms('1:23') # Time of the event on reference stream my_time_ms = ut.time2ms('53:45') # Time of the event on visible stream diff_ms += int(my_time_ms - their_time_ms) diff_ms += 1234 START = diff_ms AVS = "global TRIM_START_MS = %(diff_ms)s " % vars()
cam2/… .-.
cam2/audio.avs .-.
#Audio AVS-script, for opening with WAVSource function. #Time-adjusted according to start-time.py import("common.avs") audio = AVISource("source.py.avs").KillVideo() #Uncomment following lines, if you want to use external audio file. import("start_time.py.avs") #audio = WavSource("source.avs.wav") audio = audio.TrimAudioMS(TRIM_START_MS) audio
screen1/audio.avs .-.
#Audio AVS-script, for opening with WAVSource function. #Time-adjusted according to timediff.py import("common.avs") import("start_time.py.avs") #[Un]comment following lines, if you want/not want to use internal audio channel. audio = AVISource("source.py.avs").KillVideo() #[Un]comment following lines, if you want/not want to use external audio file. #audio = WavSource("audio.wav") #[Un]comment following lines, if you want/not want to use screen2log datas #import("screen2log_audio.avs") #audio = screen2log_audio() audio = audio.TrimAudioMS(TRIM_START_MS) audio
Попробуйте синхронизовать! .-.
Правильные ответы (мои, смотреть файлы start_time.py.avs):
- cam1
- 0
- cam2
- 19680
- screen1
- 12456
Синхронизация:
- камера/screencast: ±секунда — ОК
- жесты/речь: ±800мс — ОК.
- губы/речь: ±150мс — ОК (лучше ±50мс).
- сложение двух звуковых потоков — ±25мс
Задания .-.
- Бонус задание
- синхронизируйте
- относительно сam2
- относительно screen1
- Проверьте синхронизацию с разной глубиной --start
- Соберите матрешку
Должно получится … .-.
Устройства ввода, эмоции, направление взгляда
ВСЕ! .-.
Этого достаточно:
- Монтировать 95% внутрикомпанейских видео.
- Не приходя в сознание!
- MKV-публикуется на файл-сервере.
- Ссылки на отрывки с вики-системы.