문제

나는 모두 같은 차원 인 비트 맵 디렉토리가 있습니다. 이 비트 맵을 비디오 파일로 변환하고 싶습니다. 비디오 파일 (Codec)이 WMV 또는 AVI인지 상관하지 않습니다. 내 유일한 요구 사항은 프레임 속도를 지정한다는 것입니다. 이것은 크로스 플랫폼, Windows (Vista 및 XP) 일 필요는 없습니다. Windows Media SDK 또는 DirectShow를 사용하는 것에 대한 몇 가지 사항을 읽었지만 코드 샘플 제공에 대한 명백한 것은 없습니다.

누구든지 C#에서이 작업을 수행하는 데 도움이 될 수있는 통찰력이나 귀중한 자원을 제공 할 수 있습니까?

도움이 되었습니까?

해결책

투표 할 위험이 있으므로 가능한 대체 옵션 인 버퍼링 된 비트 맵 애니메이션을 제공하겠습니다.

double framesPerSecond;
Bitmap[] imagesToDisplay;     // add the desired bitmaps to this array
Timer playbackTimer;

int currentImageIndex;
PictureBox displayArea;

(...)

currentImageIndex = 0;
playbackTimer.Interval = 1000 / framesPerSecond;
playbackTimer.AutoReset = true;
playbackTimer.Elapsed += new ElapsedEventHandler(playbackNextFrame);
playbackTimer.Start();

(...)

void playbackNextFrame(object sender, ElapsedEventArgs e)
{
    if (currentImageIndex + 1 >= imagesToDisplay.Length)
    {
            playbackTimer.Stop();

            return;
    }

    displayArea.Image = imagesToDisplay[currentImageIndex++];
}

보기 사용자가 이미지에 액세스 할 수 있고 이미지를 메모리에 유지하기에 충분한 리소스에 액세스 할 수 있고 비디오가 인코딩 될 때까지 기다리지 않으므로 다양한 재생 속도가 필요할 수 있습니다.

... 그냥 거기에 던져.

다른 팁

당신이 사용할 수있는 스플리커 이것을하기 위해.

예제 3을 참조하십시오 http://www.codeplex.com/splicer/wiki/view.aspx?title=news%20feeds&referringtitle=home

편집하다:

using (ITimeline timeline = new DefaultTimeline(25))
{
    IGroup group = timeline.AddVideoGroup(32, 160, 100);

    ITrack videoTrack = group.AddTrack();
    IClip clip1 = videoTrack.AddImage("image1.jpg", 0, 2);
    IClip clip2 = videoTrack.AddImage("image2.jpg", 0, 2);
    IClip clip3 = videoTrack.AddImage("image3.jpg", 0, 2);
    IClip clip4 = videoTrack.AddImage("image4.jpg", 0, 2);

    double halfDuration = 0.5;

    group.AddTransition(clip2.Offset - halfDuration, halfDuration, StandardTransitions.CreateFade(), true);
    group.AddTransition(clip2.Offset, halfDuration, StandardTransitions.CreateFade(), false);

    group.AddTransition(clip3.Offset - halfDuration, halfDuration, StandardTransitions.CreateFade(), true);
    group.AddTransition(clip3.Offset, halfDuration, StandardTransitions.CreateFade(), false);

    group.AddTransition(clip4.Offset - halfDuration, halfDuration, StandardTransitions.CreateFade(), true);
    group.AddTransition(clip4.Offset, halfDuration, StandardTransitions.CreateFade(), false);

    ITrack audioTrack = timeline.AddAudioGroup().AddTrack();

    IClip audio =
        audioTrack.AddAudio("soundtrack.wav", 0, videoTrack.Duration);

    audioTrack.AddEffect(0, audio.Duration,
                        StandardEffects.CreateAudioEnvelope(1.0, 1.0, 1.0, audio.Duration));

    using (
        WindowsMediaRenderer renderer =
            new WindowsMediaRenderer(timeline, "output.wmv", WindowsMediaProfiles.HighQualityVideo))
    {
        renderer.Render();
    }
}

avifil32 라이브러리에서 avi*를 사용할 수 있습니다. 여기에는 예제가 있습니다 (시도되지 않음).
http://www.adp-gmbh.ch/csharp/mandelbrot/index.html

이것은 당신에게 관심이있을 수 있습니다 :
http://bytescout.com/swfslideshowscout_example_c_sharp.html
(C#을 사용하여 JPG 이미지에서 플래시 슬라이드 쇼 제작)

당신이 원하는 것을 달성하기위한 이상적인 기술은입니다 직접 쇼어 편집 서비스. 그러나 이것이 일회성 프로젝트라면 귀찮게하지 않을 것입니다. 학습 곡선은 상당히 가파르게 될 수 있습니다.

MSDN 내외의 일반적인 직접 쇼 샘플이 많이 있지만 DES 샘플 코드를 사용할 수있는 방법은 많지 않습니다. 당신의 목적을 위해 나는 시작하는 것이 좋습니다 여기 정지 이미지를 비디오 소스로 사용하는 기본 설명.

나는 그것을 시도하지 않았지만 윈도우 무비 메이커 사용할 수있는 API 및 XML 파일 형식이 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top