Извлечь часть видео, используя ffmpeg_extract_subclip - черные рамки - PullRequest
0 голосов
/ 10 сентября 2018

Я пытаюсь использовать: "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)

Я попытался заглянуть внутрь кода: Функция ffmpeg_extract_subclip

Но все еще не мог понять, что не так .. :(

Я все еще пытаюсь, и если кто-то знает проблему или у нее другой подход, это будет удивительно.

Большое спасибо за вашу помощь!

Ответы [ 2 ]

0 голосов
/ 16 мая 2019

В мастер-файле есть исправление для moviepy здесь , однако его еще предстоит обновить до индекса пипсов. Так что я использовал приведенный ниже код, чтобы перенести его в мою программу

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]

Вы можете затем вызвать как обычную функцию. Для этого требуется, чтобы у вас был видеопарк и его зависимости уже установлены

0 голосов
/ 10 сентября 2018

попробуйте использовать 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 OS.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...