카테고리 없음

iPhone에서 볼수 있도록 mp4에 자막 넣기 (ffmpeg 사용)

수다스런농부 2013. 4. 26. 18:03


요즘 대부분의 영상들이 H.264로 인코딩되어 있어서 영상 자체를 iPhone에서 보는데 그리 무리는 없다.
다만 파일 포멧들이 달라서 읽을수 없거나 오디오코덱이 달라서 들을수 없는정도이다.
그래서 기존 비디오파일에서 오디오부분만 변환 저장해서 봤는데
자막이 있는경우는  iPhone에서 자막을 불 수가 없었다.

여기저기 뒤지면서 찾아봤는데.
퀵타임이 지원하는 자막이 청각장애인용으로 되어있는것과
movie text 를 지원 하는것같다.

smi 같은 자막을 변환하는 방법:
ffmpeg -i <subtitle> <ass>
확장자로 알아서 대부분 변환 되는것같다. 그래서 위처럼 필요한 파일명만 넣으면 알아서 변환된다.

동영상 포멧을 변환 하는 방법:
ffmpeg
-i <inputvideo>
-i <subtitle.ass>
-vcodec copy
-acodec libvo_aacenc -ar 48000 -ac 2 -ab 128k
-scodec mov_text
-y
<output.mp4>

이역시 파일 확장자를 통해서 포멧은 인식한다.
다만 오디오부분은 변환 해야하므로 적절한 코덱이나 비트레이트 등등을 지정하고
자막 역시 필요로 하는 mov_text 로 변환을 해야 한다.
여기서 바로 mov_text 로 변환을 할 수도 있지만
이상하게도 smi를 바로 mov_text 로 변환하면 중간에 나오다가 안나오는 현상이 있다.

위의 경우는 원본 비디오파일에
비디오 하나와 오디오 하나가 있는경우에 대한 내용이다.
그 이상이 있을경우  map 를 이용해서 적절하게 트렉을 잡아 줄 필요가 있다.

ffmpeg
-i <inputvideo>
-i <subtitle.ass>
-vcodec copy
-acodec libvo_aacenc -ar 48000 -ac 2 -ab 128k
-scodec mov_text
 -map 0:0 <-- 처음파일의 0번트렉
 -map 0:3
 -map 1:0 <-- 두번째 파일의 0번 트렉. 여기서는 자막이 된다.
-y
<output.mp4>

좀더 자세한 옵션들이 많지만 알지도 못하고 당장은 필요가 없으므로 여기까지만 한다.

자막파일이나 오디오파일의 언어를 지정하는부분을 아직 모르겠다.
혹 아시는분 있으면 알려달다.