打造AI驱动的视频编辑工具

近年来,视频编辑工具激增,这些工具利用人工智能来简化流程的各个方面。但这里有一项名为 ClipAnything 的新技术,它将彻底改变视频编辑的格局。

想象一下,你有一个一小时的视频,想要识别讨论特定主题的所有剪辑。传统上,这需要编辑人员花费数小时的手动工作,一丝不苟地审查视频以查找和提取相关片段。然而,ClipAnything 将通过使用其强大的多模式 AI 功能,将编辑时间从数小时大幅缩短到数分钟,从而改变这种情况。

在本文中,我们将探讨 Clip Anything 的功能以及如何使用开源技术免费创建自己的版本。

1、ClipAnything简介

AI 已经在基于文本的任务上取得了重大进展,但随着 GPT-4 Vision 等视觉模型的出现,它现在也可以理解图像和视频。这意味着 AI 可以分析视频的音频和视觉组件,从而可以复制人类进行视频编辑所需的所有能力。

ClipAnything 是世界上第一个多模态剪辑 AI 技术,可让你使用视觉和音频提示从视频中提取任何时刻。 让我们来看看 ClipAnything 工作流程中涉及的步骤

1.1 多模态AI 分析

视频编辑的主要任务是观看和收听视频以识别关键时刻。借助 ClipAnything,AI 现在可以承担这一责任,分析视频中的所有内容——包括对象、场景、动作、声音、情感甚至文本。分析完视频后,它会根据每个场景的潜在病毒式传播能力为其分配分数。

1.2 带提示的 AI 搜索

使用简单的用户提示,Clip Anything 可以找到并剪辑所有相关片段,无论你是创建体育精彩片段还是从旅行视频博客中挑选最精彩的时刻。这种自动化简化了过去劳动密集型的过程,使你可以个性化剪辑以符合你的创意愿景。

1.3 使用 AI 重新构图剪辑

有了剪辑后,Clip Anything 提供了另一个改变游戏规则的功能:自动重新构图。使用此工具,你可以确保场景的主要焦点保持居中,无论你是将视频转换为社交媒体友好的格式,如 9:16、1:1 还是标准 16:9。这对于为 Instagram、TikTok 或 YouTube 等平台创建动态剪辑特别有用。

2、构建自己的 Clip Anything

如果你想复制 Clip Anything 的功能,可以使用开源技术来实现。

2.1 音频理解

构建 Clip Anything 的第一部分涉及理解音频。你可以使用 Whisper 或 Groq 从视频的音频中生成成绩单来实现这一点。为了本教程的目的,我们将使用在本地运行的 Whisper。

首先,使用 FFMPEG 将视频转换为音频。获得音频文件后,将其传递给 Whisper 模型,该模型将生成一份转录文本,其中包括每个片段的开始和结束时间以及片段文本:

# Step 1: Transcribe the Video
def transcribe_video(video_path, model_name="base"):
    model = whisper.load_model(model_name)
    audio_path = "temp_audio.wav"
    os.system(f"ffmpeg -i {video_path} -ar 16000 -ac 1 -b:a 64k -f mp3 {audio_path}")
    result = model.transcribe(audio_path)
    transcription = []
    for segment in result['segments']:
        transcription.append({
            'start': segment['start'],
            'end': segment['end'],
            'text': segment['text'].strip()
        })
    return transcription

2.2 识别相关剪辑

获得转录本后,下一步是根据用户的提示识别相关剪辑。使用如下所示的一些自定义指令,我们可以要求 GPT-4 识别与用户提示匹配的视频片段。然后,AI 将分析整个记录,选择相关对话并将其分组为连贯的片段。最终输出将包括每个剪辑的开始和结束时间:

def get_relevant_segments(transcript, user_query):
    prompt = f"""You are an expert video editor who can read video transcripts and perform video editing. Given a transcript with segments, your task is to identify all the conversations related to a user query. Follow these guidelines when choosing conversations. A group of continuous segments in the transcript is a conversation.

Guidelines:
1. The conversation should be relevant to the user query. The conversation should include more than one segment to provide context and continuity.
2. Include all the before and after segments needed in a conversation to make it complete.
3. The conversation should not cut off in the middle of a sentence or idea.
4. Choose multiple conversations from the transcript that are relevant to the user query.
5. Match the start and end time of the conversations using the segment timestamps from the transcript.
6. The conversations should be a direct part of the video and should not be out of context.

Output format: {{ "conversations": [{{"start": "s1", "end": "e1"}}, {{"start": "s2", "end": "e2"}}] }}

Transcript:
{transcript}

User query:
{user_query}"""
    url = "https://api.groq.com/openai/v1/chat/completions"
    headers = {
        "Content-Type": "application/json",
        "Authorization": "Bearer groq-key"
    }

    data = {
        "messages": [
            {
                "role": "system",
                "content": prompt
            }
        ],
        "model": "llama-3.1-70b-versatile",
        "temperature": 1,
        "max_tokens": 1024,
        "top_p": 1,
        "stream": False,
        "stop": None
    }
    response = requests.post(url, headers=headers, json=data)
    data = response.json()["choices"][0]["message"]["content"]
    conversations = ast.literal_eval(data)["conversations"]
    return conversations

2.3 使用 MoviePy 编辑视频

获得相关对话及其时间戳列表后,你可以使用 MoviePy 编辑视频。使用这个库,你可以根据 AI 提供的开始和结束时间创建子剪辑,然后将它们连接起来以制作最终视频:

def edit_video(original_video_path, segments, output_video_path, fade_duration=0.5):
    video = VideoFileClip(original_video_path)
    clips = []
    for seg in segments:
        start = seg['start']
        end = seg['end']
        clip = video.subclip(start, end).fadein(fade_duration).fadeout(fade_duration)
        clips.append(clip)
    if clips:
        final_clip = concatenate_videoclips(clips, method="compose")
        final_clip.write_videofile(output_video_path, codec="libx264", audio_codec="aac")
    else:
        print("No segments to include in the edited video.")

2.4 运行代码

复现此过程所需的所有代码都可以在 GitHub 存储库中找到。

你可以运行提供的 app.py 文件,输入你的视频文件,然后输入所需的提示。在运行应用程序之前,请确保安装 requirements.txt 文件中列出的所有依赖项。

在演示示例中,我使用了这个 OpenAI Dev Day 视频 , 并提示 Clip Anything 识别提到 GPT-4 Turbo 的每个时刻。原始视频长达 45 分钟,但最终输出是一个简洁的三分钟视频,突出显示了有关 GPT-4 Turbo 的所有相关讨论,点击这里查看最终的输出视频  。

3、无代码解决方案

如果编码不是你的强项,你仍然可以通过 Vadoo AI 使用 ClipAnything,这是一个可以自动化该过程的无代码平台。

你需要做的就是上传视频或提供 YouTube 链接,输入你想要的提示,然后让 Clip Anything 发挥它的魔力。人工智能将分析视频,识别相关剪辑,甚至为每个剪辑提供标题。

从那里,您可以单独使用剪辑,也可以将它们组合起来创建一个视频。 Vadoo AI 还包括自动重构功能,让你轻松创建可用于社交媒体的剪辑。

4、结束语

像 Clip Anything 这样的 AI 驱动的视频编辑工具正在彻底改变内容创建过程。 通过自动化手动识别和编辑剪辑的劳动密集型任务,这些工具使创作者能够更多地专注于讲故事和创造力。

无论你是希望构建自己的版本的编码员,还是寻求无代码解决方案的非编码员,ClipAnything 都可以为你提供强大的视频编辑未来一瞥。


原文链接:ClipAnything — Free AI Video Editor in Python tutorial

汇智网翻译整理,转载请标明出处