*개발

영상에서 음악을 추출하고 싶었다

㉰짐。 2018. 7. 29. 23:57


간만에 개발기를 남겨야 할 거 같아서 귀찮음을 무릅쓰고 글쓰기창을 켬 (...)


이번 목표는 영상 파일을 긁어서 적절하게 오디오를 빼내는데, 영상에서의 비트레이트를 받아서 mp3를 그 비트레이트로 추출하는 거였다.


이게 옛날 키라라인코더에서는 자동으로 됐던 걸로 기억하는데 언제부턴가 영상 길이랑 mp3 길이랑 이상하게 다르게 출력되더라. 그래서 다음팟인코더로 넘어갔었고 비트레이트는 직접 손으로 지정해주면서 5~6년 썼는데 슬슬 체력의 한계가 왔음....


아무튼 명세를 작성하면

1. 웹 페이지 크롤링, 영상이랑 기타 필요한 데이터를 적절하게 추출한다

2. 적절하게 추출된 데이터 중 영상에서 소리만 추출한다 ← 니코사운드 살아있을 땐 편했는데...

3. 이 때 소리 기준음질은 원 영상 소리의 음질을 따라간다

4. 소리 파일에 적절하게 붙일 수 있는 태그를 MP3Tag로 달아준다. 특히 섬네일.


여기서 당장 써먹을 수 있는 수준으로 만드는 건 사실 2~3번만 해도 괜찮으니까 인터넷에서 관련 라이브러리를 찾는다.


그래서 찾은 해당 라이브러리가 이거


사용법은 라이브러리 루트에 lame.exe랑 mplayer.exe를 때려박은 뒤 명령 프롬프트에다 대고

python mp4tomp3.py [비디오위치] [출력오디오위치] 를 입력하면 결과를 뽑아준다는 것 같다(기본값은 현재 폴더)


다른 기능을 덧붙여야 하니 라이브러리로 만들고 해야 하지만 일단 간단하게 써보자.


...자꾸 최상위에 창이 떠서 엄청나게 방해다.

아무래도 lame이랑 mplayer가 호출될 때마다 최상위에 창이 뜨는 것 같다. 해결할 방법을 찾아보자.


그건 그렇고 비트레이트는 왜이래?!


이걸 해결하기 위해서 소스코드로 돌아간다.



짧은 코드를 이해하질 못해서 한참 돌아돌아가긴 했는데 간단하게 요약하면,

1. 지금 컨버팅하는 거 프린트해준다

2. mplayer를 열어서 영상은 끄고 소리만 녹음해서 wav로 쏴준다

3. lame을 열어다가 wav를 mp3로 압축한다

4. 녹음했던 wav파일을 날린다


이거다. 덤으로 mplayer 문서lame 문서다. 문서에 보니 

Variable Bit Rate (VBR) -v VBR ( alias of -V 4 )

-V n VBR quality setting (0=highest quality, 9.999=lowest)

라는데 자동으로 똑같은 수준으로 들어갔나보다.


lame 설정은 황금귀에 설정 자료가 있으니까 참고하기로 하자. 근데 11년 글이라 지금은 다를지도 모르겠다. 


문제는 Adobe Audition으로 열어서 파형을 찍어봤는데 덤프된 오디오(wav)랑 영상에서 바로 뺀 거랑 서로 달랐다...


일단은 주워둔 것들 저장부터 해두자


[답변 완료] 동영상에서 소리만 뽑아 낼 수 있는 프로그램이??? - 우분투 한국 커뮤니티 포럼

猫한 보스코의 자유 소프트웨어 탐구 :: 동영상에서 사운드 추출 mp3로 변환

Apple AAC를 이용한 mp4 인코딩 - 나긋한 개발

FLAC을 AAC로 변환하기 - 나긋한 개발

Disable the underlying window when a popup is created in Python TKinter - Stack Overflow

AAC-batch-encoder/Batch_AAC_Encoder.py at master · gregmcallister/AAC-batch-encoder

qaac64 커맨드 문서