この質問にはすでに答えがあります。
私はNRECOを使ってビデオコンバータをコーディングしています、そしてffmpegはすべてうまくいきます、しかしそれが進歩時間を得るために来るとき 私はもう試した
pgbConversion.Value = FFMpegConverter.ConvertProgress();
それは不可能ですので、私は得た! ** ** ConvertProgressは偶数です。偶数ハンドラを追加する方法についてはC#のドキュメントを確認してください。****
NRecoから ConvertProgrssがイベントであることを知っているビデオの進行状況を取得する方法
あなたはこれを書きます:
FFMpegConverter.ConvertProgress +=
きみのVisual Studioは、イベントハンドラーコードをConvertProgressイベントに添付することで、ユーザーを支援します。次のようにポップアップが表示されます。俺の私の例では、Visual StudioがイベントハンドラをTimer.Elapsedイベントにアタッチしています。これは、異なるオブジェクト上のまったく異なるイベントです。物事へのイベント:
それから君はTABを押すきみのポップアップで提案を受け入れるビジュアルスタジオ
Visual Studioは基本的なイベントハンドラを足場にしてくれるので、イベントが発生するたびに実行したいコードを追加することができます。これは何ですか俺のタイマーを使って私の例にイベントハンドラを追加している間に私がタブを押したときにvisual studioはしました:
(当然のことながら、私の写真では、VSがTimer.Elapsedのハンドラーを作成しています。FFMpegConverter.ConvertProgressは作成されていません。Timerがありますが、そのFFMpegConverterクラスはありません。」写真は説明のみを目的としています - 私の写真に写っているコードをタイプすることは想定されていません ")
あなたはそれがタイプミスではないとあなたは確信していますか?それらは「イベント」を意味しますか?その場合は、イベントにラムダ式を代入します。または、以下に示すように別のメソッドを参照することもできます。そのため、ドキュメントは次のようになります。ラムダ式、イベント。
ラムダなしの例:
static void Main(string[] args)
{
var ffMpeg = new FFMpegConverter();
ffMpeg.ConvertProgress += FfMpeg_ConvertProgress;
ffMpeg.ConvertMedia("input.mov", "output.mp4", Format.mp4);
}
private static void FfMpeg_ConvertProgress(object sender, ConvertProgressEventArgs e)
{
// Percent complete as a double
pgbConversion.Value = e.Processed.TotalSeconds / e.TotalDuration.TotalSeconds;
}
ラムダ式の例:
static void Main(string[] args)
{
var ffMpeg = new FFMpegConverter();
ffMpeg.ConvertProgress += (s, e) => {
pgbConversion.Value = e.Processed.TotalSeconds / e.TotalDuration.TotalSeconds;
};
ffMpeg.ConvertMedia("input.mov", "output.mp4", Format.mp4);
}
このイベントには、ビデオの合計秒数と処理された秒数しかありません。それらはTimeSpanオブジェクトとしても表されます。これらのそれぞれの合計秒数を取得し(doubleを返す)、次に分割して完了率を取得することをお勧めします。もちろん、あなたはそれらのどちらかを使うことができます期間インスタンスは個別に。