2017-05-09 7 views
0

ビデオを4つの断片に分割する方法を研究しています。私は多くのソリューションとライブラリを見てきました。Cでビデオを4つのファイルに分割する

https://github.com/AydinAdn/MediaToolkit

をそして、これはビデオ

var inputFile = new MediaFile {Filename = @"C:\Path\To_Video.flv"}; 
var outputFile = new MediaFile {Filename = @"C:\Path\To_Save_ExtractedVideo.flv"}; 

using (var engine = new Engine()) 
{ 
    engine.GetMetadata(inputFile); 

    var options = new ConversionOptions(); 

    // This example will create a 25 second video, starting from the 
    // 30th second of the original video. 
    //// First parameter requests the starting frame to cut the media from. 
    //// Second parameter requests how long to cut the video. 
    options.CutMedia(TimeSpan.FromSeconds(30), TimeSpan.FromSeconds(25)); 

    engine.Convert(inputFile, outputFile, options); 
} 

コードはただ一つの断片を分割さを分割するためのコードです:私はこのライブラリを見ていました。それを4つの断片に分割する方法はありますか?

種類は

PSについて:ソリューションは、C#でなければならず、すでにのDirectShowソリューションを見てきました。

+0

たぶん出発秒を変更するこの4回やって? – Pikoh

+0

4つのvarオプション= new ConversionOptions()を作成する必要があることを意味します。 ?私はそれについて考えていましたが、これは良い解決策ですか? – Fearcoder

+0

私はこのライブラリを使用していませんが、私にはうってつけの4つの 'var options'と4つの' engine.Convert'があります。 – Pikoh

答えて

0

私は以前このライブラリを使用していませんでしたが、これは私がそれについてどうやって行くのかです。


var inputFile = new MediaFile {Filename = @"C:\Path\To_Video.flv"}; 
var outputName = "C:\Path\To_Save_ExtractedVideo"; 
var outputExtension = ".flv"; 

double t = inputFile.Length/4; //length of parts -- need to use method to get file playtime length 

for(int i=0;i<4;i++){ 

    var engine = new Engine() 
    engine.GetMetadata(inputFile); 

    var options = new ConversionOptions(); 

    // This example will create a 25 second video, starting from the 
    // 30th second of the original video. 
    //// First parameter requests the starting frame to cut the media from. 
    //// Second parameter requests how long to cut the video. 
    options.CutMedia(TimeSpan.FromSeconds(30 + (i*int.Parse(t))), TimeSpan.FromSeconds((i+1)*int.Parse(t))); 

    engine.Convert(inputFile, $"{outputName}_{i.ToString()}{outputExtension}, options); 

    engine.Destroy(); // Need to destroy object or close inputstream. Whichever the library offers 

    } 
} 
+0

お時間をありがとう!このコード行に問題があります。 'double t = inputFile.Length/4;' 'MediaToolkit.Model.MediaFile'に 'Length'の定義が含まれておらず、 'MediaToolkit.Model.MediaFile'タイプの最初の引数を受け入れる拡張メソッド 'Length'が見つかりませんでした(usingディレクティブまたはアセンブリ参照?) – Fearcoder

+0

engine.Destroy()と同じ話 – Fearcoder

+0

@Fearhunterあなたは何か似たものを探す必要があります、私が探していたものをコメントします。私は図書館を一度も使用したことがないので、申し訳ありませんが、私は何を呼び出す必要があるのか​​正確にはわかりません。 'inputFile.Length/4'はファイル/ 4の長さになりますが、これを取得するにはメソッドなどが必要です ' engine.Destroy() 'オブジェクトを破棄する方法や閉じる入力ストリーム。それはあなたがそこでやらなければならないものです。 – artman41

関連する問題