안드로이드 FFmpeg 빌드 
 이번 예제 의 시작 은 집안 에 굴러다니 던 아주 오래 된 IP Camera 에서부터 시작 되 었 습니다 . ^^ 취미 로 안드로이드 공부 를 하 고 있 던 어느 날 서랍 을 정리 하 고 있 는데 예전 에 한참 유행 했 던 IP 카메라 가 하나 나오 더라고요 . 보통 밖 에서 집안 의 상황 을 볼 때 사용 했 던 녀석 인데 그 동안 저 도 모르 게 무슨 수난 을 겪 었 는지 이 모양 이 됐 네요 . ㅎ 
 뼈대 만 앙상 하 게 남 아 있 지만 4 ~ 5 년 전 에 는 나름 대로 괜찮 았 던 LW 130 W 라는 모델 의 IP Camera 입니다 . 
 여하튼 그렇게 우연히 발견 된 이 IP Camera 를 스마트폰 에서 볼 수 있 는 안드로이드 앱 을 하나 만들 어 보 고 싶 어 지 더라고요 . 물론 이 카메라 를 볼 수 있 는 전용 App 이 있 습니다 . 하지만 호기심 이 발동 해서 직접 한 번 만들 어 보 고 싶 어 졌 고 . ... 저 의 삽질 은 그렇게 시작 되 었 습니다 . 그리고 어찌어찌 해서 성공 을 했 는데요 . 
 ( 혹시 이 글 을 보 는 분 들 이 계신 다면 . .... 초보 가 다른 분 들 의 자료 들 을 보 면서 겨우 따라 만든 거 라서 전문 성 은 없 습니다 . 그냥 초보 의 노트 정리 라고 생각 하 고 보 시 면 좋 을 거 같 고 . ... 부족 한 부분 은 제 가 보 고 따라 한 분 ( http : / / dev 2 . prompt . co . kr / 77 ) 의 글 을 참고 하 시 면 도움 이 될 거 예요 . ) 
 그래도 이 앱 을 만들 어 보 면서 그동안 한 번 도 접해 보 지 못한 android NDK 도 조금 익히 고 FFmpeg 에 대해서 도 조금 은 알 수 있 는 계기 가 되 었 답니다 . 처음 에 는 단순 하 게 URL 주소 를 가져와서 SurfaceView 와 MediaPlayer 를 이용 해서 화면 에 뿌리 면 되 겠 구나 생각 했 는데 무지 한 초보 의 어리석 은 생각 이 었 습니다 . 그렇게 쉽 게 될 리 가 없 죠 . ㅎㅎ 
 그래서 이 IP 카메라 의 접근 형식 을 보 니 . .. 
 이런 식 으로 프로토콜 은 RTSP , Path 는 / Master - 0 으로 접근 을 해야 하 더군요 . 개인 적 으로 영상 관련 쪽 으로 는 아 는 게 전혀 없 고 지금 도 저것 들 의 장단점 은 모르 지만 앞 으로 하나 씩 익혀 보 기 로 하 고 일단 가장 유용 하 다고 만 알 고 있 는 FFMPEG 로 접근 해 보 기 로 했 습니다 . 그리고 ffmpeg 를 사용 하 기 위해서 는 Android NDK 를 사용 해야 한다는 것 도 처음 알 게 됐 고 일단 NDK 설치 와 FFmpeg 빌드 를 시도 해 보 기 로 했 습니다 . 
 1 . OS 는 Mac 10 . 13 . 3 이 고 요 . 
 2 . Android Studio 는 3 . 0 . 1 을 사용 하 고 있 습니다 . 
 3 . NDK 는 13 이 고 FFmpeg 는 3 . 2 입니다 . 
 우선 Android NDK 13 을 내려 받 았 습니다 . 
 그리고 FFmpeg 는 3 . 2 버전 을 받 았 고요 . 
 각각 압축 을 푼 다음 ffmpeg 를 NDK 폴더 의 Sources 안 에 넣 습니다 . 
 이제 ffmpeg 폴더 안 으로 들어가 서 파일 하나 를 약간 수정 하 고 새로운 파일 도 하나 만들 어야 합니다 . 
 수정 할 파일 의 이름 은 Configure 입니다 . 
 Configure 중간 부분 에 SLIBNAME _ WITH _ MAJOR 부터 SLIB _ INSTALL _ LINKS 까지 네 줄 을 그림 과 같이 바꿔 주 면 됩니다 . ( 혹시 필요 하 신 분 들 이 계실지 몰라서 수정 할 부분 과 생성 할 파일 은 아래 텍스트 파일 로 첨부 해 놓 을게요 . 복사 해서 사용 하 시 면 될 거 예요 . ) 
 아마 처음 에 는 위 와 같이 되 어 있 을 거 에요 . 이걸 아래 내용 으로 바꿔 줍니다 . 
 다음 은 안드로이드 빌드 를 위한 새로운 sh 파일 을 하나 만들 어야 하 는데요 . 파일 의 이름 은 build _ android . sh 로 만들 었 으며 내용 은 다음 과 같 고 아래 파일 받 아 복사 해서 사용 하 셔요 . 
 첨부 파일 . txt 
 맨 위 에 NKD 경로 만 현재 컴퓨터 에 저장 된 경로 를 지정 해 주 면 됩니다 . 그리고 앞 에서 도 잠깐 언급 했 지만 이 파일 은 NDK 13 에서 만 제 가 원 하 던 결과 가 나오 더라고요 . 저 는 처음 에 NDK 15 버전 으로 진행 하 다가 안 돼서 적 지 않 은 시간 을 허비 했 네요 . ㅠ . ㅠ ( 빌드 는 되 는데 보 고 따라 하 는 글 과 다른 결과 가 나와서 . .. ㅎㅎ 어떤 내용 인지 는 아래쪽 에서 확인 하 기 로 하 고요 . ) 
 그렇 게 수정 과 생 성 을 마친 뒤 에 각각 저장 을 하 고 터미널 을 열 고 이 파일 이 있 는 폴더 로 이동 을 합니다 . 
 그리고 chmod + x buiild _ android . sh 명령어 를 입력 해서 앞 에서 작성 한 파일 에 권한 주 고요 . 
 ./ build _ android . sh 명령어 를 실행 해서 빌드 를 시작 합니다 . 여기 까지 했 으면 잠깐 쉬 다고 오 셔요 . ㅎㅎ 이 빌드 과정 이 컴퓨터 성능 에 따라 다르 겠 지만 딸리 는 제 컴퓨터 에서 는 거의 20 분 가까이 소요 되 더라고요 . ㅎ PC 앞 에서 끝 나기 를 기다리 면 시간 아까워 요 . ^^ 
 그렇게 한참 의 시간 동안 빌드 를 진행 한 후 에 는 ffmpeg 폴더 안 에 . ... 아까 는 안 보이 던 android 라는 새로운 폴더 가 하나 생성 됩니다 . 
 그 android 안 에 는 arm 폴더 가 있 고 또 안 에 는 include , lib 폴더 가 생성 된 걸 확인 할 수 있 습니다 . NDK 15 에서 도 앞 에서 만든 sh 파일 로 빌드 는 되 더군요 . 그런데 이 폴더 가 생기 지 않 아서 좀 당황 했 어요 . ㅎㅎ 
 다른 분 들 이 정리 해 놓 은 글 을 보 고 따라 하 는 수준 의 실력 에서 그분 들 과 다르 게 실행 되 니까 어떻게 해야 할지 막막 하 더라고요 . 물론 지금 은 약간 대처 ( ? ) 할 수 있 을 거 같 기 는 한데 처음 따라 할 때 이 폴더 가 안 생겨서 많 은 시간 을 허비 했 던 게 생각나 서 저 처럼 공부 하 시 는 분 들 중 아까운 시간 을 허비 하 는 분 들 이 없 기 를 바라 는 마음 에 앞 에서 자꾸 언급 을 했었 네요 . 될 수 있 으면 각각 의 버전 ( NDK 13 , FFmpeg 3 . 2 ) 을 맞춰서 해 보 시 고요 . 
 이번 글 은 여기 서 마무리 하 고 다음 글 에서 이어서 정리 를 할게요 . 수고 하 셨 습니다 . 
 TAG ffmpeg , IPCamera , RTSP , 안드로이드 
 Prev 1 · · · 13 14 15 16 17 18 19 20 21 · · · 920 Next