Если нельзя, но очень хочется, то нужно обязательно и ничего в мире не стоит того, чтобы делать из этого проблему!


Интересна Java? Кликай по ссылке и изучай!
Если тебе полезно что-то из того, чем я делюсь в своем блоге - можешь поделиться своими деньгами со мной.
с пожеланием
столько времени читатели провели на блоге - 
сейчас онлайн - 

суббота, 29 ноября 2014 г.

Как сделать слайдкаст (часть 2)

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

# грузим в переменную a аудиофайл
a = DirectShowSource("доклад.mp3")

global fps = 30.0 # количество кадров в секунду в результирующем клипе
global tempo = 120.0 # на сколько % ускоряем клип

# глобальные переменные, в них будем хранить счетчик фреймов
global frame_start = 0  
global frame_end = 0 
 
# функция перевода времени мин-сек в фреймы с учетом частоты кадров и ускорения клипа
function toFrame(int min, int sec) {
    return Round((min*60 + sec)*fps*100/tempo)
}

# функция загрузки слайда в ряд фреймов длинной min-sec
function loadSlide(string name, int min, int sec) {
    global frame_start = frame_end 
    global frame_end = toFrame(min, sec)
    slide = ImageSource(name, fps=fps, end=frame_end - frame_start)
    # это хак для отладки - выводит дебаг-строчку прямо на видео в левом верхнем углу
    # slide = slide.Subtitle(String(frame_start) + "-" + String(frame_end), text_color=$000000, size=60, first_frame=0)
    return slide
}  
 
# загрузим первый слайд в переменную i сделав из него видеоряд длинной в 2 минуты 3 секунды
i = loadSlide("Slide (1).jpg", 2, 3)
 
# так же для второго слайда и так далее
i = i + loadSlide("Slide (2).jpg", 2, 26)
i = i + loadSlide("Slide (3).jpg", 5, 41)
i = i + loadSlide("Slide (4).jpg", 7, 38)
i = i + loadSlide("Slide (5).jpg", 11, 30)
i = i + loadSlide("Slide (6).jpg", 20, 43)
i = i + loadSlide("Slide (7).jpg", 29, 13)
i = i + loadSlide("Slide (8).jpg", 29, 23)
i = i + loadSlide("Slide (9).jpg", 33, 40)
i = i + loadSlide("Slide (10).jpg", 36, 15)
i = i + loadSlide("Slide (11).jpg", 36, 25)
i = i + loadSlide("Slide (12).jpg", 39, 12)
i = i + loadSlide("Slide (13).jpg", 40, 38)
i = i + loadSlide("Slide (14).jpg", 42, 21)
i = i + loadSlide("Slide (15).jpg", 43, 5)
i = i + loadSlide("Slide (16).jpg", 43, 19)
i = i + loadSlide("Slide (17).jpg", 48, 53)
i = i + loadSlide("Slide (18).jpg", 55, 54)
i = i + loadSlide("Slide (19).jpg", 58, 32)
i = i + loadSlide("Slide (20).jpg", 60, 13)
 
# ресайзим слайды
i = i.LanczosResize(764, 480)
 
# чтобы секономить время слушателя, включаем скорость 'tempo'%
a = a.TimeStretch(tempo=tempo)
 
# и в конце концов смерджим два потока и возвращаем этот результат
AudioDub(a, i)


Enjoy!

Комментариев нет:

Отправить комментарий