Programming(199)
-
REST API를 사용한 폼 베이스 인증(Form Base Authentication)에 다이제스트 인증(Digest Authentication)을 적용하기 #1
주의: 폼 베이스 인증과 다이제스트 인증을 동시에 적용하는 건 큰 의미는 없다.특히 NGINX 등에서 제공하는 기본 인증방식(BASIC/DIGEST)을 사용할 시, 브라우저에서 제공하는 로그인 창이 출력되지 않게 하려면 사용자가 입력한 ID와 패스워드가 URL에 그대로 노출되게된다. 그러니 이러한 구현사항을 요청받았다면, 천천히 포기할 수 있게끔 설득해보도록 하자. 로그인 창으로 ID와 패스워드를 입력하면, 서버에서 임의의 세션값을 생성하여 사용자를 추적하게끔 설계되어있는 시스템이 있다. 즉, 폼 베이스 인증 방식을 사용하고 있었다. 이 시스템에 보안상의 문제가 있다며, 다이제스트 인증 방식을 사용하게끔 해달라는 요청이 들어왔다. 당장 폼 베이스 인증 방식이라는 말이 떠오르지 않았던 나는 잠시 정신이 아..
2019.06.24 -
cURL을 Android에서 사용하기 위해 Shared Library(libcurl.so)로 빌드하기(32bits/64bits/without-ssl)
2019년 8월부터 64bits를 지원하지 않는 앱은 구글 플레이에 등록할 수 없다. 그래서 지금 앱에서 어떤 라이브러리를 사용하고 있는지 확인하니, ffmpeg와 curl을 비롯하여 꽤 많은 라이브러리를 사용하고 있었다. ffmpeg을 어떻게건 빌드하긴 했는데, 64bits 라이브러리를 전부 포함하지 않아서 그런지 정상적으로 영상이 재생되지 않았다. 일단 할 수 있는건 curl을 포함한 나머지 라이브러리를 크로스컴파일하는 방법밖에 없었기에, 무작정 시작해봤다. 이 글에서는 Static Library에 대해서는 다루지 않는다. Android/iOS에서 사용하기 위한 curl을 Static Library로 빌드하기 위해서는, curl-android-ios, gcesarmza 깃허브를 참조하도록 하자. 체크..
2019.06.13 -
[삽질기록] RAW H.264(AVC)에 MP4컨테이너 씌우기 #4 / FFmpeg 재빌드(64bits)
RTP로 전달된 h264, h265 파일을 차곡차곡 RAW데이터로 저장한 뒤, FFmpeg를 이용해서 Muxing해보니 정상적으로 mp4파일이 생성됐다. 재생도 잘 된다. 파일이 생성되지 않는 것 같아서 잠시 당황했었는데, LG G5에서 PC에 파일 전송모드로 연결했을 때 파일을 제대로 표시하지 못하는 문제가 있었다. File Explorer 앱을 이용해서 확인해보니 파일 생성 및 Muxing에는 문제가 없어서, 일단 기능구현이 완성된 후 고민하기로 했다. 2019년 8월부터 64bits를 지원하지 않는 앱은 구글 플레이에 등록 및 업데이트가 불가능하기 때문에, FFmpeg를 다시 빌드하기로 했다. 이전의 빌드 스크립트에서 수정해야 할 곳은 다음과 같다. 이전의 빌드스크립트는 [삽질기록] RAW H.26..
2019.06.10 -
[삽질기록] RAW H.264(AVC)에 MP4컨테이너 씌우기 #3 / 테스트 코드를 이용하여 MP4 컨테이너 씌우기
MediaMuxer를 대신해서 FFmpeg를 사용하여 MP4 컨테이너를 씌우는 예제를 검색하다가, 깃허브에서 [ffmpeg-muxer, Akagi201](https://github.com/Akagi201/ffmpeg-muxer/blob/master/main.c) 코드를 발견했다. 정확히 Muxing을 하는 코드여서, 이 코드를 사용하여 테스트해보기로 한다. [삽질기록] RAW H.264(AVC)에 MP4컨테이너 씌우기 #2 / FFmpeg 빌드에서 muxer/demuxer모듈이 추가된 ffmpeg 라이브러리를 적용하고 빌드하니, 중간에 Got signal 에러를 뱉고는 앱이 멈춰버린다. 원인을 보니 오디오 파일을 입력하지 않았는데, 이로 인해서 코드 중간에 오동작이 발생해서 앱이 크러쉬되는 것이었다. 위..
2019.06.03 -
[삽질기록] RAW H.264(AVC)에 MP4컨테이너 씌우기 #2 / FFmpeg 빌드
ffmpeg를 사용해서 muxing을 하기 위해 파일을 여니, ffmpeg avcodec_open2 returns -22 if I change my speaker configuration, stackoverflow의 글처럼, avcodec_open2에서 -22를 리턴하는 상황이 발생했다. 차이점이라면 Stackoverflow의 글에서는 스피커와 관련된 설정을 변경했다고 하고, 나의 경우에는 아무런 설정의 변경이 없었다는 것 정도. 알고보니 ffmpeg에 mux/demux관련된 모듈이 빠져있어서 발생하는 문제로, ffmpeg를 다시 빌드해야 해결할 수 있을 것 같았다. 일단 기본적인 내용은 ffmpeg for android 빌드, not to be programmer 글과 윈도우에서 AndroidStudi..
2019.06.03 -
[삽질기록] RAW H.264(AVC)에 MP4컨테이너 씌우기 #1
h264는 코덱이고 mp4는 컨테이너이다. 컨테이너와 코덱의 차이점에 대해서는 코덱이 뭔가요? (코덱과 컨테이너의 차이) by Michael Fitzer, 교양있는 교양채널에 잘 기술되어있으니 참조하도록 하자. 단순하게 말하면 h264로 압축된 데이터를 mp4파일로 만들기 위해서는, mp4컨테이너 파일을 만들어주기만 하면 된다. 몹시 심플한 얘기처럼 들리지만, 생각보다 산 넘어 산인 상황이 반복되고 있다. 이 내용을 기록해두면 언젠가 쓸모있을 것 같아서, 시간이 날 때마다 조금씩 기록하기로 했다. Android의 MediaCodec, MediaExtractor, MediaMuxer. 컨테이너를 생성하고, 컨테이너에 영상과 오디오 데이터를 집어넣는 과정을 먹싱(Muxing)이라고 한다. 먹싱에 대한 자세한..
2019.05.29