使用ffmpeg提取视频的一部分

2024-09-28 21:53:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试使用:“ffmpeg_extract_subclip”来提取视频的一部分。在

我面临一些问题:

当我剪辑一个小视频(1-3秒)时,我得到的是黑色帧,只有音频起作用。 2.当我剪辑较长的视频时,输出的视频在结束前2-3秒停止。在

这是我的简单代码:

from moviepy.video.io.ffmpeg_tools import ffmpeg_extract_subclip

input_video_path='myPath/vid1.mp4'
output_video_path='myPath/output/vid1.mp4
t1=6.5
t2=16 #random numbers, my last attempt..

ffmpeg_extract_subclip(input_video_path, t1, t2, targetname=output_video_path)

我试着看看代码里面: ffmpeg_extract_subclip Function

但还是不明白怎么回事。。:(

我还在努力,如果有人知道问题所在或有不同的方法,那将是惊人的。在

非常感谢你的帮助!在


Tags: path代码inputoutput视频剪辑videoextract
2条回答

moviepy here的主机中有一个修复程序,但是它还没有更新到pip索引。所以我用下面的代码把它带到我的程序中

from moviepy.tools import subprocess_call
from moviepy.config import get_setting

def ffmpeg_extract_subclip(filename, t1, t2, targetname=None):
    """ Makes a new video file playing video file ``filename`` between
    the times ``t1`` and ``t2``. """
    name, ext = os.path.splitext(filename)
    if not targetname:
        T1, T2 = [int(1000*t) for t in [t1, t2]]
        targetname = "%sSUB%d_%d.%s" % (name, T1, T2, ext)

    cmd = [get_setting("FFMPEG_BINARY"),"-y",
           "-ss", "%0.2f"%t1,
           "-i", filename,
           "-t", "%0.2f"%(t2-t1),
           "-vcodec", "copy", "-acodec", "copy", targetname]

    subprocess_call(cmd)

然后可以调用is作为一个普通函数。 这要求你有moviepy和它的依赖关系已经安装

尝试使用moviepy.video.io.VideoFileClip

from moviepy.video.io.VideoFileClip import VideoFileClip

input_video_path = 'myPath/vid1.mp4'
output_video_path = 'myPath/output/vid1.mp4'

with VideoFileClip(input_video_path) as video:
    new = video.subclip(t1, t2)
    new.write_videofile(output_video_path, audio_codec='aac')

对我来说很好。aah音频编解码器对于Safari和一些macos视频播放器非常重要。在

相关问题 更多 >