Mencoder 를 이용한 PSP 인코딩 (자막 포함)

먼저 이 글은 어디까지나 다른 분들의 글을 정리한 것에 불과하다는 것을 밝힙니다.
제가 참조한 글은 다음 2개입니다.
[url=http://khmirage.tistory.com/151:3fjs6gqu]Mencoder를 이용한 PSP용 Video 인코딩 방법[/url:3fjs6gqu]
[url=http://zaurusian.nmain.net/zbxe/lecture/108269/page/4:3fjs6gqu]별거아닌 동영상 인코딩 팁…(…정말로 인생에 별 필요없는…-.-)[/url:3fjs6gqu]

리눅스용 PSP 인코딩으로 고민하던 저에게, 위와 같은 좋은 글로 저의 필요를 채워주신 "환상경"님과 "새벽녁의흡혈양파"님께 감사를 드립니다.


리눅스(우분투)에서 주로 사용하는 인코딩 엔진은 mencoder와 ffmpeg 이 있습니다.

ffmpeg 은 winff 라는 프론트엔드가 우분투 기본 저장소에 있어 설치와 사용이 쉬웠습니다만…
왠일인지 알 수 없는 코덱이라는 에러를 보이며 인코딩을 할 수 없게 하였습니다.

그렇다면 mencoder 에 도전해 보자.
mencoder도 gmencoder 라는 프론트엔드가 있기는 하지만 우분투 기본 저장소에는 없습니다.

그런데 조금 사용해 보니 ffmpeg 도 그렇고 mencoder도 그렇고 그냥 터미널에서 명령어를 입력하는 것이 더 편하더군요. (그냥 위 화살표로 예전 명령 불러내어 사용)


잡다한 이야기는 그만 두고 본론으로 들어가겠습니다.

먼저, mencoder를 설치합니다.

[code:3fjs6gqu]$ sudo apt-get install mencoder[/code:3fjs6gqu]

자막을 입히기 위해서는 mencoder.conf 파일을 생성해야 합니다. ("새벽녁의흡혈양파"님의 글)

[code:3fjs6gqu]$ gedit ~/.mplayer/mencoder.conf[/code:3fjs6gqu]
다음 내용을 삽입하십시오.

[quote:3fjs6gqu]font = "/usr/share/fonts/truetype/unfonts/UnDotumBold.ttf" [color=#FF0000:3fjs6gqu]# bitmap글꼴만 가능합니다.[/color:3fjs6gqu]
subfont-text-scale=3
subcp=cp949[/quote:3fjs6gqu]

마지막으로 인코딩 명령입니다. ("환상경"님의 글)

[code:3fjs6gqu]$ mencoder 원본동영상.avi -o 인코딩영상.mp4 -sws 9 -vf-add crop=1280:720:-1:-1 -vf-add scale=480:272 -vf-add expand=480:272:-1:-1:1 -ofps 30.000 -oac faac -faacopts br=128:mpeg=4:object=2:raw -srate 48000 -channels 2 -mc 0 -ovc x264 -x264encopts qp=24:subq=7:global_header:partitions=all:trellis=1:level_idc=3
0:threads=2 -of lavf -lavfopts format=psp -sub 원본동영상.smi[/code:3fjs6gqu]


저 개인적으로는 이렇게 활용하고 있습니다.
먼저 계정 홈디렉토리에 인코딩할 원본동영상과 자막을 복사합니다.
그리고 파일 이름을 input.avi 와 input.smi 로 바꿉니다.
그리고 다음 명령을 복사-붙이기 하여 실행합니다.

[code:3fjs6gqu]$ mencoder input.avi -o output.mp4 -sws 9 -vf-add crop=1280:720:-1:-1 -vf-add scale=480:272 -vf-add expand=480:272:-1:-1:1 -ofps 30.000 -oac faac -faacopts br=128:mpeg=4:object=2:raw -srate 48000 -channels 2 -mc 0 -ovc x264 -x264encopts qp=24:subq=7:global_header:partitions=all:trellis=1:level_idc=3
0:threads=2 -of lavf -lavfopts format=psp -sub input.smi[/code:3fjs6gqu]
output.mp4 파일을 내가 원하는 파일 이름.mp4 파일로 바꿉니다.
(이렇게 하는 이유는 긴 명령어를 수정하기 귀찮아서…)


아니면 좀 더 수준 높게 스크립트를 이용하는 방법도 있습니다. ("새벽녁의흡혈앙파"님의 글)

이건 제가 잘 모르는 분야라서… 죄송 ^^;:wink: [color=#FF0000:3fjs6gqu]밑 댓글에 스크립트 추가하였습니다.[/color:3fjs6gqu]


mencoder !!
속도도 빠르고 화질도 아주 마음에 듭니다.
[attachment=1:3fjs6gqu]KimiKiss_01.png[/attachment:3fjs6gqu][attachment=0:3fjs6gqu]KimiKiss_02.png[/attachment:3fjs6gqu]보너스 스샷!
24편 내내 너무 흥미진진하게 보았던 키미키스… (하지만…아내는… 너무 시시하다고… 뭔 남자가 저런 애들 애니를 좋아하냐고… ㅠㅠ)
저 개인적으로는 후타미와 아이하라의 사랑이 가장 마음에 와 닿았습니다. ^^

굿 하노스님 좋은 팁 정리입니다.

스크립트 랄꺼는 없고 그냥 긴 명령어 줄여 쓰기군요 ^^
sudo gedit /usr/local/bin/convavi

[code:3ebcbwb3]#!/bin/sh
mencoder -noodml $1.avi -o $1-con.avi -ofps 24.000 -vf-add crop=0:0:-1:-1 -vf-add scale=640:480 -vf-add expand=640:480:-1:-1:1 -srate 44100 -of mpeg -ovc lavc -lavcopts vcodec=mpeg2video -lavcopts vbitrate=600 -vf-add rotate=1 -oac mp3lame -lameopts vbr=0 -lameopts br=128 -lameopts vol=0 -lameopts mode=0 -lameopts aq=5 -lameopts padding=3 -sub $1.smi -subpos 90 -af volnorm[/code:3ebcbwb3]

sudo chmod 755 /usr/local/bin/convavi

사용 : convavi 동영상파일이름

그리고 gmemcoder 입니더
[attachment=0:3ebcbwb3]gmencoder_0.1.0-1_i386.deb[/attachment:3ebcbwb3]

[quote="강분도":3ce4cff5]/usr/local/bin/[/quote:3ce4cff5]그렇군요. 이곳에 스크립트가 있어야 실행이 되나보군요. (저는 제 홈 디렉토리에 만들었더니 실행이 안되더라구요. ^^)

강분도 님의 보충설명에 힘입어 스크립트를 완성하였습니다.

sudo gedit /usr/local/bin/pspencoder

[code:3ce4cff5]#!/bin/sh
mencoder $1.avi -o $1-psp.mp4 -sws 9 -vf-add crop=1280:720:-1:-1 -vf-add scale=480:272 -vf-add expand=480:272:-1:-1:1 -ofps 30.000 -oac faac -faacopts br=128:mpeg=4:object=2:raw -srate 48000 -channels 2 -mc 0 -ovc x264 -x264encopts qp=24:subq=7:global_header:partitions=all:trellis=1:level_idc=30:threads=2 -sub $1.smi -of lavf -lavfopts format=psp[/code:3ce4cff5]

sudo chmod 755 /usr/local/bin/pspencoder

사용 : $ pspencoder 동영상파일이름 [color=#FF0000:3ce4cff5](확장자가 .avi 여야 함.)[/color:3ce4cff5]

결과: 동영상파일이름-psp.mp4 라는 PSP용 동영상파일이 생성됨.


수정: [color=#0000FF:3ce4cff5][size=85:3ce4cff5]줄바꿈 삭제[/size:3ce4cff5][/color:3ce4cff5]

하노스님, 강분도님 고맙습니다.
덕분에 리눅스에서도 동영상 변환이 쉬워졌군요.

그런데,
맨 마지막에 적어주신 하노스님 소스에 불필요한 줄바꿈이 하나 들어가는 바람에…
자막이 영상에 붙지 않는 현상이 있습니다!

다시 말해서,

[code:3tm7nb63]#!/bin/sh
mencoder $1.avi -o $1-psp.mp4 -sws 9 -vf-add crop=1280:720:-1:-1 -vf-add scale=480:272 -vf-add expand=480:272:-1:-1:1 -ofps 30.000 -oac faac -faacopts br=128:mpeg=4:object=2:raw -srate 48000 -channels 2 -mc 0 -ovc x264 -x264encopts qp=24:subq=7:global_header:partitions=all:trellis=1:level_idc=3
0:threads=2 -of lavf -lavfopts format=psp -sub $1.smi[/code:3tm7nb63]

위의 코드에 보면, 거의 끝쯤에 level_idc=3 하고 줄바꿈되어 있습니다. 전 저 코드를 그대로 복사해서 gedit에 붙여넣고 스크립트를 만들었는데, 실행하면 영상은 제대로 보이는데 자막은 들어가지 않더군요.

하노스 님이 올리신 코드를 복사/붙여넣기 하실 분들은 줄바꿈을 지우시든가, 아니면 아래 스크립트를 복사/붙여넣기 하시면 잘 될 겁니다.

[code:3tm7nb63]
#!/bin/sh
mencoder $1.avi -o $1-psp.mp4 -sws 9 -vf-add crop=1280:720:-1:-1 -vf-add scale=480:272 -vf-add expand=480:272:-1:-1:1 -ofps 30.000 -oac faac -faacopts br=128:mpeg=4:object=2:raw -srate 48000 -channels 2 -mc 0 -ovc x264 -x264encopts qp=24:subq=7:global_header:partitions=all:trellis=1:level_idc=30:threads=2 -of lavf -lavfopts format=psp -sub $1.smi
[/code:3tm7nb63]

하노스님께서 최종 붙여넣기 하실 때 뭔 이윤지 줄바꿈 문자가 추가된 듯 합니다.

덧붙여,
실행코드(파일)은 ~/bin 에 넣어도 됩니다.
이 디렉토리는 기본으로 만들어지지는 않는데요. 일단 만든 후에 로그아웃하고, 다시 로그인 하면 실행 경로(path)에 잡히게 되면서 여기에 넣어둔 스크립트등은 아무 곳에서나 실행할 수 있습니다.

감사합니다. 제 원본 텍스트 파일에는 이상이 없었는데 이곳으로 옮기다가 줄바꿈이 실수로 첨가되었나 보네요.
[color=#0000FF:1g7cuuix]수정하겠습니다.[/color:1g7cuuix]

[quote="nemonein":1g7cuuix]실행코드(파일)은 ~/bin 에 넣어도 됩니다.[/quote:1g7cuuix]그렇군요. 저도 되도록이면 ~/ (홈디렉토리) 에서 모든 것을 해결하는 것을 원칙으로 하고 있는데
~/bin 폴더를 만들면 되는군요.

좋은 정보 감사합니다.

옵션을 약간 수정하였습니다.

[code:wbbxr0o5] #!/bin/sh
mencoder $1.avi -o $1_psp.mp4 -sws 9 -vf-add crop=1280:720:-1:-1 -vf-add scale=480:272 -vf-add expand=480:272:-1:-1:1 -ofps 30.000 -oac faac -faacopts br=192:object=2:raw -srate 48000 -channels 2 -mc 0 -ovc x264 -x264encopts qp=24:partitions=all:subq=7:trellis=1:threads=2:global_header -sub $1.smi -of lavf -lavfopts format=mp4 [/code:wbbxr0o5]

싱글코어일 경우… threads=1 로 수정 요함.
쿼드코어일 경우… threads=4 로 수정 권장.

늘 느끼는거지만 맨코더는 잘 만든 것 같습니다(아니 잘 만들었습니다.)

그리고 쓰레드는 몇개까지 가능한지 궁금하군요…(옥타코어-4coreX2인 경우?)