2016-05-19 7 views
8

私はそれぞれ約25分の長さのビデオを持っています。私は最初からPythonを使用して数秒を切っています。ビデオの一部を切り取る - python

それについて調べると、私はpythonのmoviepyパッケージを見つけました。問題は、1つのビデオでも時間がかかることです。以下は、私が1つのビデオの開始から7秒をカットするために使用するコードスニペットです。書き込み処理には多くの時間がかかります。 Pythonを使ってビデオをカットする良い方法はありますか?

from moviepy.editor import * 
clip = VideoFileClip("video1.mp4").cutout(0, 7) 
clip.write_videofile("test.mp4") 

詳細を忘れた場合はお知らせください。

何か助けていただければ幸いです。ありがとう!

+0

おそらく、ビデオを書き込むことは、ライブラリを再エンコードしなければならないことを意味し、その結果、品質が低下し、パフォーマンスが低下します。再エンコードせずにMP4ビデオストリームから切り離すことは可能ですが、それはあなたが思っているように単純ではなく、任意のポイント(キーフレームの直前)でカットすることはできません。私もmoviepyがこれを行うことができるかどうかわかりません。 – cemper93

+0

私は@ cemper93に同意します。 MoviePyは常に(Numpy配列に)あなたのフレームをデコードし、書き込み時間に再エンコードするので時間がかかります。再エンコードせずにカットする最も簡単な方法は、FFMPEGを使ってmp4から正しいセグメントを抽出することです。コマンドラインやPythonから直接サブプロセスライブラリを使ってffmpegを呼び出すことができます。 – Zulko

+0

@Zulko:それを答えとして書いて、もう少し説明を追加できますか?私はあなたが話しているFFMPEGとサブプロセスライブラリについて全く知らない。 :/ –

答えて

11

(それは、それはデコードと再エンコードせずに、ffmpegのを使用して直接ビデオを抽出しますことができる場合)、これを試してみて、それが高速であれば教えてください:

from moviepy.video.io.ffmpeg_tools import ffmpeg_extract_subclip 
ffmpeg_extract_subclip("video1.mp4", t1, t2, targetname="test.mp4") 

それが解決しない場合は、顔をしていますcode

+0

これは私のコードよりもずっと速く走っています。ありがとうございます! :) –

+0

t1、t2ができる時間の最小単位はどのくらいですか? – mobcdi

+0

このソリューションはすぐに実行されました。どうもありがとう! –

関連する問題