이 질문에는 이미 답변이 있습니다.
NRECO 및 ffmpeg를 사용하여 비디오 변환기를 코딩 중이지만 모든 작업이 진행되지만 진행 시간을 얻으려면 난 노력 했어
pgbConversion.Value = FFMpegConverter.ConvertProgress();
하지만 불가능 해요! ** ** ConvertProgress는 균일합니다. 짝수 처리기를 추가하는 방법에 대한 C #문서를 확인하십시오. ****
NReco에서 제발 어떻게 ConvertProgrss 이벤트 알면서 비디오 진행률을 얻을 수 있습니다
당신은 이것을 씁니다 :
FFMpegConverter.ConvertProgress +=
너의Visual Studio는 이벤트 처리기 코드를 ConvertProgress 이벤트에 연결하여 제공합니다. 다음과 같은 팝업이 표시됩니다.나의Visual Studio가 여기에서하고 있습니다.이 스크린 샷은 다른 객체에 완전히 다른 이벤트 인 Timer.Elapsed 이벤트에 이벤트 핸들러를 연결하는 것입니다. 시각적 인 스튜디오가 어떻게 도움을 주는지 보여주기 위해 예제로 사용하고 있습니다. 사물에 대한 사건 :
그때당신에서 TAB을 누르세요.너의비주얼 스튜디오는 팝업에서 제안을 수락
Visual Studio는 기본 이벤트 처리기를 비계 할 것이므로 이벤트가 발생할 때마다 실행되도록 코드를 추가 할 수 있습니다. 여기에나의비주얼 스튜디오는 타이머를 사용하여 예제에 이벤트 처리기를 추가하는 동안 탭을 눌렀을 때 수행했습니다.
(당연히 내 사진은 Timer.Elapsed 대신 FFMpegConverter.ConvertProgress가 아니라 Timer.Elapsed에 대한 핸들러를 만드는 것을 보여줍니다. 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 개체로도 표시됩니다. 나는 이들 각각의 초 수 (합계를 구하는 것)를 얻은 다음 나누어서 백분율을 얻는 것이 좋습니다. 물론 둘 중 하나를 사용할 수 있습니다.시간 범위인스턴스를 개별적으로.