我正在尝试使用:"ffmpeg_extract_subclip"来提取视频的一部分。
我面临着一些问题:
1.当我切割一个小视频(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)
我试着查看代码:子剪辑函数
但还是不明白怎么回事..。:(
我还在努力,如果有人知道这个问题或者有不同的方法,那就太棒了。
非常感谢你的帮助!
发布于 2018-09-10 12:55:06
尝试使用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和一些Mac视频播放器非常重要。
发布于 2019-05-16 09:20:31
在电影这里的主版中有一个修正,但是它还没有更新到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作为一个正常函数。这就要求您已经安装了育空器并安装了它的依赖项
https://stackoverflow.com/questions/52257731
复制相似问题