-1

이 질문에는 이미 답변이 있습니다.

NRECO 및 ffmpeg를 사용하여 비디오 변환기를 코딩 중이지만 모든 작업이 진행되지만 진행 시간을 얻으려면 난 노력 했어

pgbConversion.Value = FFMpegConverter.ConvertProgress();

하지만 불가능 해요! ** ** ConvertProgress는 균일합니다. 짝수 처리기를 추가하는 방법에 대한 C #문서를 확인하십시오. ****

NReco에서 제발 어떻게 ConvertProgrss 이벤트 알면서 비디오 진행률을 얻을 수 있습니다


  • '이벤트'를 의미하지 않는다고 확신합니까? 그리고 심지어? 어떤 경우에 나는 람다 (lambda)를 사용하여 표현식을 할당 할 필요가있는 속성을 볼 수 있습니다. 이 프레임 워크에 익숙하지 않지만 버튼 클릭 이벤트에 함수를 추가하려는 경우 button.onClick + = (s, e) = > DoSomething (); - Kirkland

2 답변


2

당신은 이것을 씁니다 :

FFMpegConverter.ConvertProgress +=

너의Visual Studio는 이벤트 처리기 코드를 ConvertProgress 이벤트에 연결하여 제공합니다. 다음과 같은 팝업이 표시됩니다.나의Visual Studio가 여기에서하고 있습니다.이 스크린 샷은 다른 객체에 완전히 다른 이벤트 인 Timer.Elapsed 이벤트에 이벤트 핸들러를 연결하는 것입니다. 시각적 인 스튜디오가 어떻게 도움을 주는지 보여주기 위해 예제로 사용하고 있습니다. 사물에 대한 사건 :

enter image description here

그때당신에서 TAB을 누르세요.너의비주얼 스튜디오는 팝업에서 제안을 수락

Visual Studio는 기본 이벤트 처리기를 비계 할 것이므로 이벤트가 발생할 때마다 실행되도록 코드를 추가 할 수 있습니다. 여기에나의비주얼 스튜디오는 타이머를 사용하여 예제에 이벤트 처리기를 추가하는 동안 탭을 눌렀을 때 수행했습니다.

enter image description here

(당연히 내 사진은 Timer.Elapsed 대신 FFMpegConverter.ConvertProgress가 아니라 Timer.Elapsed에 대한 핸들러를 만드는 것을 보여줍니다. Timer가 있기 때문에 FFMpegConverter 클래스는 없습니다. "사진은 그림 용으로 만 사용됩니다.- 내 그림에서 볼 수있는 코드를 입력하지 않아도됩니다. ")


  • 답변을 주셔서 감사합니다,하지만이 줄에 오류가 발생합니다. - DevFranzBeta
  • FFMpegConverter.ConvertProgress + = 새 System.Timers.Timer (). 경과 된 + = Program_Elapsed; - DevFranzBeta
  • 내 직책의 마지막 줄을 읽었 니? - Caius Jard
  • 비 정적 필드, 메소드 또는 속성의 개체 참조는 FFMpegConverter.ConvertProgress ' 암시 적으로 ' void ' ~ .... - DevFranzBeta
  • 죄송합니다. 읽지 않으신 후에 시도해 보겠습니다. - DevFranzBeta

1

오타가 아니며 "이벤트"를 의미하는 것이 확실합니까? 어떤 경우에는 람다 표현식을 이벤트에 할당하거나 아래에 표시된 다른 메서드를 참조 할 수 있으므로 문서가 여기에 있습니다.람다 식,이벤트.

람다가없는 예 :

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 개체로도 표시됩니다. 나는 이들 각각의 초 수 (합계를 구하는 것)를 얻은 다음 나누어서 백분율을 얻는 것이 좋습니다. 물론 둘 중 하나를 사용할 수 있습니다.시간 범위인스턴스를 개별적으로.


  • 고마워, 제발 여기에 eror가 : pgbConversion.Value = 그것이 비 정적임을 보여줍니다. - DevFranzBeta
  • 코드를 추가 할 수 있습니까? pgbConversion이 .NET 라이브러리의 표준 부분을 인스턴스화하는 클래스입니까? - Kirkland
  • 왜 당신은 람다 버전을 사용하지 않기로 전환 했습니까? 나는 그것이 아주 산뜻하다고 생각했다. - Caius Jard
  • 질문과 직접적으로 관련이 없습니다. 답변의 기술적 인 수준에 대해 구체적으로 묻는 질문에 우선 순위를두기를 원했습니다. 그러나 요청 했으므로 추가 할 수 있습니다. :) - Kirkland

연결된 질문


관련된 질문

최근 질문