IDL/Object Graphics

비디오 파일 생성 기능 소개

이상우_IDL 2011. 5. 11. 15:28
728x90

이번 IDL 8.1 버전에서는 그래픽 이미지들을 모아서 고화질 동영상 파일을 만들 수 있는 기능이 추가되었습니다. 이 기능은 IDLffVideoWrite라는 객체 클래스를 통하여 구현됩니다. 기본적으로는 AVI나 MP4와 같은 형식들을 지원하지만, 실제 지원 가능한 형식들의 갯수는 훨씬 많으며 그 구체적인 목록은 구동 컴퓨터의 OS나 하드웨어 등에 따라 조금씩 다를 수 있습니다. 그리고 생성될 동영상 파일에는 비디오 뿐만 아니라 오디어 정보도 넣을 수 있습니다. 비디오의 경우는 MPEG-4 등과 같은 여러 코덱들이 지원되고, 오디오의 경우도 AAC 등과 같은 여러 종류의 코덱들이 지원됩니다.


IDL 8.1에서 IDLffVideoWrite 클래스의 도움말을 보면 예제 코드가 하나 있습니다. 지금 첨부된 파일은 이 예제 코드를 이용하여 생성한 MP4 형식의 동영상 파일입니다. 좀 유치한 감이 있지만 오디오도 나오니까 재생시 소리도 한번 들어보시길 바랍니다. 참고로 이 예제 코드의 내용도 아래에 소개합니다(물론 8.1 버전에서만 돌아갑니다)




PRO surfaceVideo_ex

  file = FILEPATH('surface.mp4', /TMP)

  width = 500

  height = 500

  frames = 180

  fps = 30

  speed = 2

  samplerate = 22050L

 

  ; Create object and initialize video/audio streams

  oVid = IDLffVideoWrite(file)

  vidStream = oVid.AddVideoStream(width, height, fps)

  audStream = oVid.AddAudioStream(samplerate)

 

  ; Generate some audio

  audio = FINDGEN(samplerate * frames / fps)

  audio += SIN(audio * 2 * !PI / samplerate) * samplerate / 22

  audio = SIN(audio * 2 * !PI / samplerate * 1000)

  audio = FIX(30000 * audio)

  time = oVid.Put(audStream, audio)

 

  ; Generate video frames

  surf = SURFACE(/TEST, DIMENSIONS=[width,height])

  FOR i = 0, frames-1 DO BEGIN

    time = oVid.Put(vidStream, surf.CopyWindow())

    surf.Rotate, speed

  ENDFOR

  surf.Close

   

  ; Close the file

  oVid.Cleanup

END

LIST