반응형


모든 mp4가 그런것은 아니지만 얼마전 부터 avisynth 이용시에 음성과 화면이 싱크가 맞지 않는 영상이 몇개 있더군요.
처음에는 동영상 자체의 문제인줄 알았습니다만....avisynth 를 이용하지 않고 다음팟이나 kmp로 재생시에는 싱크문제가 나타나지 않는 다는것을 알게 되었습니다.

몇가지 테스트 결과 문제를 일으키는 것은 바로 Haali Media Splitter 더군요. 동영상쪽이 문제인건지 Haali 쪽이 문제인건지 모르겠지만 다음팟에서 문제가 없으니 뭐....

그래서 Splitter 를 바꿔보기로 했습니다. 처음엔 kmp 것을 써 볼까 하다가 MPC-HC 의 것을 쓰기로 했습니다.

MediaPlayer Classic - Home Cinema 는 예전의 Media Player Classic 을 기반으로 만들어지는 동영상 재생 프로그램이고, 여러 코덱과 스플리터를 내장하고 있어서 별도의 코덱을 설치할 필요가 없습니다.

또한 해당 필터만 따로 받을 수도 있습니다.

파일 다운 링크

위 링크로 들어 가셔서 MPC-Standalone Filters-xxxxx.zip 파일을 다운받으시면 됩니다. xxx는 버전 번호입니다. 최신으로 받으세요.

필요한것은 MKV와 MP4 의 스플리터 이므로 다운받은 파일의 압축을 풀고 적당한 디렉토리를 만들어서 복사해 넣습니다.
복사할 파일명은 MatroskaSplitter.ax 와 MP4Splitter.ax 입니다.

이제 해당파일을 레지스트리에 등록하면 됩니다. 등록법은 콘솔을 여시고

regsvr32 MatroskaSplitter.ax
regsvr32 MP4Splitter.ax

를 입력하면 됩니다.

단, 비스타나 윈도우7에서 UAC를 쓰시는 경우 그냥하면 에러가 납니다. 관리자 권한이 없기 때문인데....따라서 명령 프롬프트를 관리자 권한으로 열어야 합니다.

명령프롬프트는 시작버튼 -> 모든프로그램 -> 보조프로그램 으로 가면 있습니다.


명령프롬프트에서 오른쪽 버튼을 누르고 '관리자 권한으로 실행' 을 선택해 콘솔을 열고 해당파일이 있는곳으로 이동해서 해당파일을 레지스트리에 등록해주면 잘 등록 될것 입니다.

테스트 해본 결과 일단 해당 동영상 재생은 문제가 없음을 확인했습니다. 하지만 혹시나 다른문제가 발생하지 않을까 해서 현재는 테스트중 입니다. MPC-HC에서 쓰이는 코드라면 문제가 없지 않을까 하고 생각하고 있습니다만...혹시 모르는 일이지요.

비슷한 일을 겪으시는 분들은 한번 시험해 보시길 바랍니다. 다만 전 책임 못집니다. ^^;
어느쪽의 문제인지는 모르겠지만 언젠간 고쳐지겠죠.


반응형
예전에 avisynth를 소개한바가 있는데 avisynth는 영상데이터뿐 아니라 음성데이터도 뽑아 낼 수가 있다.

대표적인 것이 avs2wav 나 bepipe 같은 것 들이다. 나도 최근까지 bepipe를 이용하여 동영상에서 음성데이터를 추출해서 가공하고 있다.

그런데 최근 재미있는 플러그인을 발견했다. 바로 SoundOut이다.

1. 설치

http://forum.doom9.org/showthread.php?t=120025

위의 링크에 다운받을 수 있는 링크가 있다. 사용법은 다운 받아 압축을 푼 다음 avisynth의 설치 디렉토리 밑의 plugin 디렉토리에 dll 2개를 복사해 넣으면 된다. avisynth 설치시 설치위치를 변경하지 않았다면...

'C:\Program Files\AviSynth 2.5\plugins'  에 복사해 넣으면 될것이다.

2. 사용법

기존에 avs 파일을 만들어 본적이 있었는데 그 연장선으로 가보자. 이번에는 s.avi 파일이라고 가정하겠다. .avs 파일내용은 다음과 같다. 또한 avs 파일과 같은 디렉토리에 s.avi 파일이 존재한다고 가정하겠다.

AVISource("s.avi")
BilinearResize(424,240)
ChangeFPS(11.988)
SoundOut()

다른내용은 다음에 설명할 기회가 있을 것이고 맨 아래 SoundOut()  이것이 이번에 소개할 플러그인을 사용하는 방법이다. 일반적 avs파일에 SoundOut() 만 추가해 넣으면 된다. 자....그러면 어떻게 되는가...이 파일을 kmp같은 동영상 재생프로그램으로 재생해 보자. 그러면 다음과 같은 창이 뜬다.
사용자 삽입 이미지
mp3로 저장해 보도록 하자. Save MP3 를 선택한다.

사용자 삽입 이미지
원하는 설정을 설정한뒤 Save As.. 를 선택해 저장하면 된다. 그러면 동영상의 모든 음성부분이 mp3로 저장된다.

또 다른 사용법으로는 .avs 파일에 SoundOut()  대신 아래와 같이 써줘도 된다.  이렇게 하면 위와 같은 설정창이 떠서 물어보지 않고 바로 mp3 파일이 만들어 진다.

SoundOut(output="mp3",filename="C:\s.mp3",autoclose=true,showprogress=true,
mode=2,cbrrate=48)

이 설정은 음성파일을 mp3로 저장하고, 파일이름은 c:\s.mp3 란이름으로 저장될것이고, 파일이 저장되는 과정을 보여주는 다이얼로그 박스를 보여줄 것이고, mp3 파일은 cbr 48k 의 사양으로 저장된다는 설정이다.

3. 글을 마치면서....

이 플러그인을 사용하면 avi든 mkv든 mp4든 avs로 만들어 재생이되면 그 모든 음성부분을 마음에 드는 파일형식으로 따로 저장할 수 가 있게 된다.

자세한 내용은 SoundOut Plugin의 압축파일안에 .html 파일로 사용법이 들어 있으니 참고하기 바란다.


반응형
avisynth는 국내에선 많이 알려진 프로그램은 아닙니다. 하지만 외국포럼에선 심심치 않게 이야기가 되고 있습니다. 그 이유는 여러 동영상 인코딩 프로그램들이 avisynth 로 입력을 받을 수 있게 되어 있기 때문입니다.

가령 예를 들어 보지요. http://x264.nl/ 이 사이트에는 x264.exe 라는 프로그램이 있고 이 프로그램은 x264 코덱으로 영상을 인코딩 해 줍니다. 보통 x264 로 인코딩된 raw 한 데이터의 확장자는  .264 라는 파일로 만들어 줍니다. 그리고 이 프로그램 역시 avisynth의 파일 확장자인 .avs 파일을 입력 받습니다.

avs 파일로 입력을 받는 이유를 알아보도록 하죠. 보통우리가 보는 동영상의 영상은 Divx 같은 코덱으로 압축이 되어 있습니다. 즉 우리가 영상을 보기 위해선
 
압축된 영상 -> 압축을 풀어줌 ->  화면에 표시

와 같은 과정을 거치게 됩니다. avisynth는 저 '압축을 풀어줌' 뒤에 압축이 풀린 데이터를  얻는 겁니다. x264.exe 는 압축을 푸는 역활은 하지 못합니다. 따라서 압축이 풀린 영상 데이터를 입력해 줘야 하는데 그걸 바로 .avs 파일 즉 avisynth가 해 주는 것이죠. 이해를 높이기 위해 간단한 예제를 만들어 보죠.

avisynth 사이트에서 다운로드 링크를 누르고 avisytn를 다운받아 설치합니다. http://avisynth.org
그리고 Xvid 코덱 설치버전 이나 Helix YUV Codec 2중 하나를 설치합니다.

이제는 a.avs 파일을 만들어 보죠. 그리고 시험삼아 동영상을 하나 준비 합시다.
제 경우는 wmv 파일이라. DirectShowSource 명령을 썼는데 avi 인 경우 AVISource(filename)
이런식으로 해도 됩니다.

a.avs의 파일 내용은 다음과 같습니다.

DirectShowSource("mgs4.wmv",fps=119.88,convertfps=true)

그리고 KMP에서 그 avs 파일을 재생해 봅시다. 그와 함께tab을 눌러서 영상정보를 캡쳐 해 봤습니다.
사용자 삽입 이미지

Codec 부분이 좀 이상하죠?
사용자 삽입 이미지

avs 파일이 아닌 원래 파일의 정보는 이렇습니다.
즉 avs 로 입력을 받을 경우 압축이 풀린 데이터를 쉽게 얻을 수 있다는 겁니다. 그래서 대부분 외국에서 만들어진 인코딩 프로그램들은 avs 파일을 입력(open) 할수 있도록 만들어져 있습니다. 예전에 많이 썼던 virtualdub 도 잘 보시면 avs파일을 입력받을 수 있게 되어 있죠.

단 여기엔 조건이 있습니다. 위에서 말했듯이

압축된 영상 -> 압축을 풀어줌 ->  화면에 표시

이런 과정을 거치려면 어디선가 압축을 풀어줘야 합니다. 위에 보면 DirectShowSource 라는 명령을 썼었죠. 즉 윈도우에 설치된 코덱들을 이용하는 겁니다.

KMP같은 경우 윈도우 내부의 코덱들을 이용하지 않습니다. 대부분의 코덱들을 KMP가 내장하고 있습니다. 그런이유로 윈도우 기본 동영상 재생프로그램인 미디어플레이어에서 재생안되는 동영상이 KMP에선 재생이 되는 것 입니다.

즉 위의 2가지를 종합하면 윈도우의 미디어 플레이어에서 재생이 안되는 동영상의 경우 avisynth로 압축이 풀린 데이터를 얻을 수 없다는 결론에 이르게 됩니다. 따라서 avisynth를 이용하려면 흔히쓰는 코덱모음팩 같은걸 쓰거나 http://x264.nl/ 이곳의 ffdshow를 설치하여야 합니다. 또한 spliter도 설치해야 되고요.

즉 바로 위 사이트에서 ffdshow와 matroska splitter를 받아 설치하면 거의 대부분의 동영상을 avs입력을 지원하는 프로그램으로 재 인코딩할 수 있습니다.

avisynth를 쓰는 이유는 단순히 이런 이유외에도 영상의 크기를 바꾸는 resize, 일부를 잘라내는 crop, 프레임 조정....화면의 노이즈를 제거하는 작업등....여러 영상을 가공하는 작업을 할 수 있습니다.

요즘엔 좀 더 편리한 프로그램등이 나와 있어서 보통의 사람들이 avisynth를 쓰는 경우는 많지 않을 것 입니다. 곰인코더 같은 경우 일정 금액을 지불하고 인코딩을 할 수도 있고요.

또한 avisynth는 일일이 .avs 파일을 만들어서 인코딩 해야 하므로 불편함도 있고 이런저런 프로그램을 설치해야 하는 번거로움도 있습니다.

하지만 만일 프로그램을 하실 줄 안다면 간단한 스크립트로 인코딩 프로그램을 작성해서 쉽게 사용하실 수는 있겠죠.

마지막으로 avisynth를 이용하기 위한 대략적인 프로그램 리스트를 적도록 하겠습니다.

avisynth
Xvid 코덱 설치버전 or Helix YUV Codec
ffdshow 와 matroska splitter

전에도 이야기 했지만 http://x264.nl/ 이 사이트의 MeGUI는 이러한 동영상 인코딩을 쉽게 해주는 프로그램이고 avs파일 작성을 도와주는 도구도 내장을 하고 있으니 관심이 있으시면 사용해 보시기 바랍니다. 저는 MeGUI에 대한 설명은 일단은 안하겠습니다. ^^


+ Recent posts