ffmpeg 이용하여 MOV에서 AVI로 변환

Nikon 디카를 사용하는데 동영상을 찍으면 QuickTime으로 저장됩니다. PC에서 보는거야 코덱깔면 문제없지만, 사용중인 디빅 플레이어인 랩소디에서 재생이 안됩니다. 그리고 엑박에서도 재생이 안됐었던거 같네요.

바닥 프로그램에서는 변환은 되지만, 뭐가 문제인지 소리가 안나더군요. 몇가지 변환 프로그램을 구해서 써봤는데 대부분 mencoder나 ffmpeg를 내부엔진으로 사용하는듯하더군요. 바닥이 mencoder 기반이라 ffmpeg로 직접 변환을 해보니 문제 없이 변환이 되네요.

ffmpeg은 http://ffdshow.faireal.net/mirror/ffmpeg/ 에서 최신 버전을 구했으며, python으로 간단히 프로그램을 짜서 여러 파일들을 한꺼번에 변환했습니다. 처음에는 msmpeg4v2, msmpeg4, mpeg4 등의 비디오 코덱으로 변환했는데 랩소디에서 xvid가 가장 무리없이 재생이 되는군요. video bitrate는 1500, audio는 lame mp3로 변환합니다. 640×480, 15 frames/sec QuickTime에서 avi로 변환하면 약 반에서 3분의 1 정도로 줄고 화질은 약간 나빠지는 정도입니다.

변환하는 파일명에 공백등이 포함되면 변환이 안되는 버그가 생겨서 os.system대신 os.spawnv를 사용했습니다. os.system에 여러곳에 “따옴표”를 쓰면 실행파일 경로를 제대로 인식못하는 버그가 있는거 같습니다.

[code type=python]
import os
import glob

ffmpeg_path = ‘C:/Program Files/Free/ffmpeg.rev12665/ffmpeg’

def converted_name(filename):
  filename = filename.replace(“.MOV”, “.AVI”)
  filename = filename.replace(“.mov”, “.avi”)
  return filename

def convert(filename):
  aviname = converted_name(filename)
  if os.path.exists(aviname):
   print “skipping %s” % filename
   return
  args = ‘-i “%s” -g 15 -b 1500k -vcodec libxvid -acodec libmp3lame -ab 64k -ar 22050 “%s”‘ % (filename, aviname)
  os.spawnv(os.P_WAIT, ffmpeg_path, [‘”%s”‘ % ffmpeg_path, args])

def main():
  filelist = glob.glob(“*/*.mov”)
  for filename in filelist:
   convert(filename)

if __name__==’__main__':
  main()
[/code]

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>