コード例 #1
0
ファイル: infinite_zoom.py プロジェクト: mfm24/miscpython
def make_zoom(scale_func, path=im_path, cx=32, cy=32, scale=10, duration=5, fps=10,
                                    oversample=2.0):
    ic = ImageClip(path).resize(oversample)
    bg = ColorClip((ic.w, ic.h), (0xFF, 0xFF, 0xFF)).set_duration(duration)
    
    ic.duration = duration
    cx *= oversample
    cy *= oversample
    total_frames = int(duration * fps)
        
    def zoom_between_frames(startf, endf):
        scales = [scale_func(startf + f * (endf - startf) / total_frames)
                  for f in range(total_frames)]
        return make_zoom_movie(ic, scales, fps, (cx, cy))
     
    # we seem to get two multiple frames at the start... 
    # and end sometimes
    ret = CompositeVideoClip([
        bg,
        zoom_between_frames(total_frames, 2.0 * total_frames),
        zoom_between_frames(0, total_frames)
        ])
    ret.size = ic.size
    # ret.duration = duration
    return ret.resize(1.0/oversample)
コード例 #2
0
ファイル: infinite_zoom.py プロジェクト: mjessup/miscpython
def make_zoom(scale_func,
              path=im_path,
              cx=32,
              cy=32,
              scale=10,
              duration=5,
              fps=10,
              oversample=2.0):
    ic = ImageClip(path).resize(oversample)
    bg = ColorClip((ic.w, ic.h), (0xFF, 0xFF, 0xFF)).set_duration(duration)

    ic.duration = duration
    cx *= oversample
    cy *= oversample
    total_frames = int(duration * fps)

    def zoom_between_frames(startf, endf):
        scales = [
            scale_func(startf + f * (endf - startf) / total_frames)
            for f in range(total_frames)
        ]
        return make_zoom_movie(ic, scales, fps, (cx, cy))

    # we seem to get two multiple frames at the start...
    # and end sometimes
    ret = CompositeVideoClip([
        bg,
        zoom_between_frames(total_frames, 2.0 * total_frames),
        zoom_between_frames(0, total_frames)
    ])
    ret.size = ic.size
    # ret.duration = duration
    return ret.resize(1.0 / oversample)
コード例 #3
0
def vid_from_media(vid_path, media, song_path, titles, img_duration=8):
    clips = []
    print "sequencing media..."
    for m in media:
        print m.path
        if good_file(m.path):
            try:
                if is_img(m.path):
                    new_clip = ImageClip(m.path)
                    new_clip.fps = 1.0 / img_duration
                    new_clip.duration = img_duration
                else:
                    new_clip = VideoFileClip(m.path)
                text = m.title if titles else None
                new_clip = format_clip(new_clip, text)
                clips.append(new_clip)
            except Exception as err:
                "COULDN'T CREAT CLIP BECAUSE: " + str(err)
        else:
            print 'CORRUPT FILE FOUND: ' + m.path + ', skipping.'
    vid = concatenate_videoclips(clips)
    print song_path
    audio = AudioFileClip(song_path)
    audio_loops = int(vid.duration / audio.duration) + 1  #times to loop audio
    audio = concatenate_audioclips([audio] * audio_loops)
    print audio.duration
    print vid.duration
    audio = audio.set_duration(vid.duration)
    vid = vid.set_audio(audio)
    print "writing video..."
    vid.write_videofile(vid_path, progress_bar=False, preset='ultrafast')
    return abspath(vid_path)
コード例 #4
0
ファイル: main.py プロジェクト: healeycodes/py-looper
def video_creation():

    # command line arguments [main.py, image, audio, min_length, movie_name]
    if len(sys.argv) < 5:
        arg_error('{0} args supplied but {1} args required.'.format(
            len(sys.argv) - 1, 4))

    location = ''  # default is no location, i.e., save video in working directory
    if len(sys.argv) > 5:
        if len(sys.argv[5]) > 0:  # allow empty path for future compatibility
            location = sys.argv[5]
            # append slash if required
            if location[-1] != '/' and location[-1] != '\\':
                location += '/'
            try:
                # create directory if needed (works recursively)
                pathlib.Path(location).mkdir(parents=True, exist_ok=True)
            except Exception as e:
                arg_error(
                    'problem with location \'{0}\'. Either it could not be found or it could not be created.'
                    .format(location), e)

    image_src = sys.argv[1]
    audio_src = sys.argv[2]

    try:
        min_length = int(
            str(sys.argv[3]).split(  # format: Minutes.Seconds
                '.')[0]) * 60 + int(str(
                    sys.argv[3]).split('.')[1])  # converted to seconds
    except Exception as e:
        arg_error(
            '[min_length] not parsable. \'{0}\' was supplied when the correct format is \'numbers.numbers\', e.g., \'123.59\'.'
            .format(sys.argv[3]), e)

    if min_length < 1:
        min_length = 1  # keep min_length no smaller than one second

    movie_name = sys.argv[4] + '.mp4'

    # beginning of moviepy functions
    image_clip = ImageClip(image_src)  # get image
    audio = AudioFileClip(audio_src)  # get audio

    # how many complete audio loops are needed to meet the min_length?
    loops_needed = int(min_length / audio.duration + 1)

    # loop our audio to meet the min_length
    audio = audio_loop.audio_loop(audio, nloops=loops_needed)

    # set up our clip
    image_clip = image_clip.set_audio(audio)
    image_clip.fps = 24
    image_clip.duration = audio.duration

    # render!
    image_clip.write_videofile(location + movie_name,
                               preset='ultrafast',
                               threads=multiprocessing.cpu_count())
コード例 #5
0
LEFTCOL = 450
RIGHTCOL = 490
TEXTSIZE = 28
LINE_HEIGHT = 50

SCROLLSPEED = 130
BOTTOM_START = H * 1.2

N_NAMES = 30

# load image that does not move at all
LOGO_POS = 950, 300
LOGO_SIZE = 235, 298
LOGO = ImageClip("panda.png").resize(LOGO_SIZE).set_pos(LOGO_POS)
LOGO.duration = DURATION


# create fake text
fake = Factory.create()
text = []
while len(text) < N_NAMES:
    job = fake.job()
    name = fake.name()
    if len(job) < 25:
        text.append((job, name))


def make_frame(t):
    """Draw text elements in each frame"""
    surface = gz.Surface(W, H, bg_color=(0,0,0))
コード例 #6
0
    # zh_title=translat(str(en_title))
    # print(zh_title)

    main_clip = VideoFileClip(r'./videos/{}'.format(mp4))

    leader = VideoFileClip(r'./material/leader.mp4')
    leader = leader.resize(main_clip.size)
    # main_clip=main_clip.resize(leader.size)

    # leader.duration=3
    # clip1=clip.fx(vfx.mirror_x)
    # clip2=clip.fx(vfx.mirror_y)
    # clip2=clip.resize(0.5)

    logo = ImageClip(r'./material/logo.png')
    logo.duration = main_clip.duration
    logo.resize((350, 150))
    # logo_end_gif=

    concatenate = concatenate_videoclips([leader, main_clip])

    if os.path.exists(r'./subtitle/{}.srt'.format(en_title)):

        with open(r'./subtitle/{}.srt'.format(en_title), 'rb') as f:
            pass
            # print(f.read())
            # en_sub=f.read()
            # zh_sub=translat(en_sub)
            # zh_srt=open(r'./subtitle/translated/{}.srt'.format(en_title),'wb')
            # zh_srt.write(zh_sub)
コード例 #7
0
ファイル: super_one.py プロジェクト: logonmy/youtube-stealer
    def func_edit(self):
        import os
        import os.path

        from moviepy.video import VideoClip
        from moviepy.editor import VideoFileClip, vfx, concatenate_videoclips, CompositeVideoClip, \
            ImageClip, TextClip
        # from moviepy.video.compositing import CompositeVideoClip
        from moviepy.video.tools.subtitles import SubtitlesClip

        from googletrans import Translator

        def translat(text='no text is passed'):
            trans = Translator()
            result = trans.translate(text, dest='zh-CN', src='en').text
            # Translated(src=en, dest=zh-cn, text=你好, pronunciation=Nǐ hǎo, extra_data="{'translat...")
            # print(result.text)

            return result

        def translat_subtitle(file):

            for i, line in enumerate(file.readline()):
                print(i, line)
                translated_sub = open(r'/home/master/subtitle/translated/{}.srt'.format(en_title), 'w',encoding='utf-8')

                if i % 4 == 2 or i == 2:
                    # doc=''
                    # doc=doc+str(line)
                    translated_line = translat(line)
                    translated_sub.write(translated_line)
                else:
                    translated_sub.write(line)

            return translated_sub

        for mp4 in os.listdir(r'/home/master/unvideos'):

            en_title = os.path.basename(mp4).split('.')[0]
            zh_title = translat(str(en_title))
            print(zh_title)

            main_clip = VideoFileClip(r'/home/master/unvideos/{}'.format(mp4))

            leader = VideoFileClip(r'./material/leader.mp4')
            main_clip=main_clip.resize(leader.size)

            # leader.duration=3
            # clip1=clip.fx(vfx.mirror_x)
            # clip2=clip.fx(vfx.mirror_y)
            # clip2=clip.resize(0.5)

            concatenate = concatenate_videoclips([leader, main_clip])

            logo = ImageClip(r'./material/logo.png')
            logo.duration = main_clip.duration
            logo.resize((350,150))
            # logo_end_gif=


            if os.path.exists(r'/home/master/subtitle/{}.srt'.format(en_title)):

                with open(r'/home/master/subtitle/{}.srt'.format(en_title), 'rb') as f:
                    pass
                    # print(f.read())
                    # en_sub=f.read()
                    # zh_sub=translat(en_sub)
                    # zh_srt=open(r'./subtitle/translated/{}.srt'.format(en_title),'wb')
                    # zh_srt.write(zh_sub)

                    # zh_srt=translat_subtitle(f)

                font = "ArialUnicode"
                color = 'white'
                generator = lambda txt: TextClip(txt, font=font, fontsize=40, color=color)
                # sub=SubtitlesClip(r'./subtitle/translated/{}.srt'.format(en_title),'rb')
                sub = SubtitlesClip(r'/home/master/subtitle/{}.srt'.format(en_title), generator)

                # final=clips_array([[clip1,clip2]])

                final = CompositeVideoClip([concatenate,
                                            sub.set_start(3).set_pos('bottom'),
                                            logo.set_start(3).set_pos((1400,100)).crossfadein(2)])

                # final.write_videofile('add_subtitle.mp4',fps=clip.fps)

                final.write_videofile('/home/master/edited/{}.mp4'.format(en_title), fps=main_clip.fps)

            else:
                final = CompositeVideoClip([concatenate,
                                            logo.set_start(3).set_pos((1400,100)).crossfadein(2)])
                final.write_videofile('/home/master/edited/{}.mp4'.format(en_title), fps=main_clip.fps,audio=True,verbose=True)