Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Android MediaCodec!
인코딩/디코딩 해보자!
Taehwan (taehwan@thdev.net)
● 회사다닌지 1년 5개월
● 꿈 많은 개발자가 되자! 라는 블로그 운영.
o http://thdev.net
● 아직은 초보 개발자!
● NDK 개발하는걸 좋아합니다.
소개?
순 서
1. 인코딩/디코딩이란?
2. Codec이란?
a. H.264/AVC
b. AAC
3. MediaCodec
4. MediaMuxer
5. 추천사이트
6. Q & A
MediaCodec?
안드로이드에서는 음성, 영상을 녹화해주는
API(MediaRecord)가 있는데 ...
동영상?
동영상은 움직이는 그림!
인코딩? 디코딩?
● 인코딩
o 부호화라고 하며, 원본을 알고리즘에 따라 압축하는 것.
● 디코딩
o 복호화라고 하며, 압축한것을 다시 해제하는것.
1. 인코딩/디코딩 이란?
1. H.264 인코딩/디코딩
디코딩
인코딩
Codec?
Codec은 어떠한 데이터 스트림이나 신호에 대해, 인코딩이나 디코딩, 혹은
둘 다를 할 수 있는 하드웨어나 소프트웨어
일반적으로 코덱 이라고 하면 영상, 음향등 미디어 정보를 압축하는 기술
- 위키백과 :...
H.264/AVC
● ITU-T and MPEG의 JVT 에서 개발한 프로젝트
● ITU-T : H.264
● MPEG : MPEG-4 part 10/AVC(Advanced Video Coding)
2. H.264/AVC
● 대부분의 Bit-Rate 에서 50% 이상의 압축률 고품질 영상
● 에러 복원 기능
● 높은 네트워크 이식성을 가짐
2. H.264/AVC - 특징
➔Profile : 기술적 요소를 규격화 한 것
● Baseline : 저전력 단말기에 최적
● Main : 방송 및 저장용
● Extended : 고화질 스트리밍에 최적
2. H.264/AVC - Profile
● I-Frame(Intra-frame)
● P-Frame(Predictive-frame)
● B-Frame(Bi-directionally-frame)
2. H.264/AVC - Frame
● I-Frame(Intra-frame)
o 가장 기본이 되는 프레임으로 Main에 해당
2. H.264/AVC - Frame
● P-Frame(Predictive-frame)
o 이전 프레임과 현재 프레임과의 차이 값 만을 가지는 프레임.
● B-Frame(Bi-directionally-frame)
o 순방향/역방향 예측과 잡음을 줄이기 위해...
● H.264는 YUV420 색공간을 사용.
o YUV는 밝기 신호, 색차신호를 분리하여 사용.
o YUV를 사용하는 목적은 흑백 TV와의 호환성 때문.
2. H.264/AVC - 색공간
● Android는 2가지 YUV 색공
간 사용.
o I420, NV12
o 사이즈 : width * height * 3 / 2
o 참고 : YUV 색공간 문서
2. H.264/AVC - YUV 색공간
● 특정 시간 단위마다 처리 bit 수 (bit/sec)
● 이 bitrate는 가변적으로 변한다.
2. H.264/AVC - Bitrate
● FPS(Frame per second)
o 1초당 보여주어야 할 화면의 수를 말한다.
● MediaCodec - Frame rate
2. H.264/AVC - Frame rate(FPS)
I-Frame 간의 간격(GOP : Group Of Picture)
● I-Frame과 I-Frame 사이의 간격
o I P P P P I : 5
● MediaCodec - I Frame Interval
o 초 단위로 ...
● 고급 오디오 부호화(Advanced Audio Coding, AAC, ISO/IEC 13818-7)
● 디지털 오디오에서 쓰이는 표준적인 손실 데이터 압축방식
● Sample rate (8~96 Khz)
● chan...
3. MediaCodec
● MediaCodec
● MediaExtractor
● MediaMuxer
● OpenGL ES
● NDK
3. MediaCodec
● Audio/Video를 인코딩/디코딩하는 API
○ Android 4.1에서 추가
○ Surface를 통한 비디오 디코딩 가능
○ Audio는 AudioTrack을 이용하여 재생 가능
● Android 4.3부터
○...
● "video/x-vnd.on2.vp8" - VP8 video (i.e. video in .webm)
● "video/x-vnd.on2.vp9" - VP9 video (i.e. video in .webm)
● "vid...
● MediaCodec codec = MediaCodec.createDecoderByType(type);
// OR
● MediaCodec codec = MediaCodec.createEncoderByType(type)...
● Video 인코딩
o mediaFormat.setInteger(MediaFormat.KEY_COLOR_FORMAT,
MediaCodecInfo.CodecCapabilities.COLOR_FormatYUV420Plan...
ByteBuffer[] inputBuffers = codec.getInputBuffers();
ByteBuffer[] outputBuffers = codec.getOutputBuffers();
3. MediaCodec ...
int inputBufferIndex = codec.dequeueInputBuffer(timeoutUs);
if (inputBufferIndex >= 0) {
// fill inputBuffers[inputBufferI...
int outputBufferIndex = codec.dequeueOutputBuffer(BufferInfo, timeoutUs);
if (outputBufferIndex >= 0) {
// outputBuffer is...
codec.stop();
codec.release();
codec = null;
3. MediaCodec - Codec 종료
● 16 배수로 처리할 것.
● 색상값을 직접 처리하기 보다는 Surface를 사용할 것.
● 색공간 변경시 libYUV 추천(NDK를 이용하여 처리)
● 디코딩 시 Surface를 활용하면 쉽게 랜더링이 가능.
3. ...
4. MediaMuxer
MP4??
MPEG-4 Part 14 또는 MP4 (공식적으로 ISO/IEC 14496-14:2003)는
MPEG-4의 일부로 규정된 멀티미디어 컨테이너 포맷
오디오와 비디오가 포함된 MPEG-4 파일들은 표준 .mp4...
● Android 4.3 에서 추가된 API
● .MP4 파일 생성 가능
● MediaCodec 과 함께 사용
● 참고 : MediaCodec만 사용하는 경우 H.264와 AAC RAW 데이터가 출력
4. MediaMu...
● MediaMuxer muxer = new MediaMuxer("temp.mp4",
OutputFormat.MUXER_OUTPUT_MPEG_4);
4. MediaMuxer - init
// More often, the MediaFormat will be retrieved from MediaCodec.getOutputFormat()
// or MediaExtractor.getTrackFormat().
...
int outputBufferIndex = codec.dequeueOutputBuffer(BufferInfo, timeoutUs);
if (outputBufferIndex >= 0) {
ByteBuffer outputB...
muxer.stop();
muxer.release();
muxer = null;
● Muxer의 stop()을 호출하지 않으면 Head가 써지지 않음
4. MediaMuxer - muxer stop
● Muxer 사용시 2GB 초과시 MP4 Head가 써지지 않음.
o 최신 코드에는 2GB 제한이 사라짐. 다음 버전에 적용 될 듯.
● Audio/Video를 함께 Muxer 하는 경우 1/2채널 사용
● Media...
● MediaCodec 관련 모음 : http://bigflake.com/mediacodec/
● Android Example :
https://android.googlesource.com/platform/cts/+/j...
Taehwan (taehwan@thdev.net)
End
이 저작물에는 크리에이티브 커먼즈 저작자표시 4.0 국제 라이선스가 적용
되어 있습니다. 이 라이선스의 설명을 보고 싶으시면
http://creativecommons.org/licenses/by/4.0/ 을(를) 참조하...
● Google Drive : http://goo.gl/6pFI90
자료 확인
Upcoming SlideShare
Loading in …5
×

Android media codec 사용하기

20,111 views

Published on

  • Download or read that Ebooks here ... ......................................................................................................................... DOWNLOAD FULL PDF EBOOK here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download EPUB Ebook here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download Doc Ebook here { http://bit.ly/2m6jJ5M } ......................................................................................................................... .........................................................................................................................
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Download or read that Ebooks here ... ......................................................................................................................... DOWNLOAD FULL PDF EBOOK here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download EPUB Ebook here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download Doc Ebook here { http://bit.ly/2m6jJ5M } ......................................................................................................................... .........................................................................................................................
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (Unlimited) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download Full EPUB Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... ACCESS WEBSITE for All Ebooks ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download EPUB Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download doc Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (Unlimited) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download Full EPUB Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... ACCESS WEBSITE for All Ebooks ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download EPUB Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download doc Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ..................................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, CookeBOOK Crime, eeBOOK Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (Unlimited) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... Download Full EPUB Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... ACCESS WEBSITE for All Ebooks ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... Download EPUB Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... Download doc Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

Android media codec 사용하기

  1. 1. Android MediaCodec! 인코딩/디코딩 해보자! Taehwan (taehwan@thdev.net)
  2. 2. ● 회사다닌지 1년 5개월 ● 꿈 많은 개발자가 되자! 라는 블로그 운영. o http://thdev.net ● 아직은 초보 개발자! ● NDK 개발하는걸 좋아합니다. 소개?
  3. 3. 순 서 1. 인코딩/디코딩이란? 2. Codec이란? a. H.264/AVC b. AAC 3. MediaCodec 4. MediaMuxer 5. 추천사이트 6. Q & A
  4. 4. MediaCodec? 안드로이드에서는 음성, 영상을 녹화해주는 API(MediaRecord)가 있는데 ...
  5. 5. 동영상? 동영상은 움직이는 그림!
  6. 6. 인코딩? 디코딩?
  7. 7. ● 인코딩 o 부호화라고 하며, 원본을 알고리즘에 따라 압축하는 것. ● 디코딩 o 복호화라고 하며, 압축한것을 다시 해제하는것. 1. 인코딩/디코딩 이란?
  8. 8. 1. H.264 인코딩/디코딩 디코딩 인코딩
  9. 9. Codec? Codec은 어떠한 데이터 스트림이나 신호에 대해, 인코딩이나 디코딩, 혹은 둘 다를 할 수 있는 하드웨어나 소프트웨어 일반적으로 코덱 이라고 하면 영상, 음향등 미디어 정보를 압축하는 기술 - 위키백과 : http://ko.wikipedia.org/wiki/%EC%BD%94%EB%8D%B1
  10. 10. H.264/AVC
  11. 11. ● ITU-T and MPEG의 JVT 에서 개발한 프로젝트 ● ITU-T : H.264 ● MPEG : MPEG-4 part 10/AVC(Advanced Video Coding) 2. H.264/AVC
  12. 12. ● 대부분의 Bit-Rate 에서 50% 이상의 압축률 고품질 영상 ● 에러 복원 기능 ● 높은 네트워크 이식성을 가짐 2. H.264/AVC - 특징
  13. 13. ➔Profile : 기술적 요소를 규격화 한 것 ● Baseline : 저전력 단말기에 최적 ● Main : 방송 및 저장용 ● Extended : 고화질 스트리밍에 최적 2. H.264/AVC - Profile
  14. 14. ● I-Frame(Intra-frame) ● P-Frame(Predictive-frame) ● B-Frame(Bi-directionally-frame) 2. H.264/AVC - Frame
  15. 15. ● I-Frame(Intra-frame) o 가장 기본이 되는 프레임으로 Main에 해당 2. H.264/AVC - Frame
  16. 16. ● P-Frame(Predictive-frame) o 이전 프레임과 현재 프레임과의 차이 값 만을 가지는 프레임. ● B-Frame(Bi-directionally-frame) o 순방향/역방향 예측과 잡음을 줄이기 위해 사용. o 연산량과 메모리가 많이 필요. 2. H.264/AVC - Frame
  17. 17. ● H.264는 YUV420 색공간을 사용. o YUV는 밝기 신호, 색차신호를 분리하여 사용. o YUV를 사용하는 목적은 흑백 TV와의 호환성 때문. 2. H.264/AVC - 색공간
  18. 18. ● Android는 2가지 YUV 색공 간 사용. o I420, NV12 o 사이즈 : width * height * 3 / 2 o 참고 : YUV 색공간 문서 2. H.264/AVC - YUV 색공간
  19. 19. ● 특정 시간 단위마다 처리 bit 수 (bit/sec) ● 이 bitrate는 가변적으로 변한다. 2. H.264/AVC - Bitrate
  20. 20. ● FPS(Frame per second) o 1초당 보여주어야 할 화면의 수를 말한다. ● MediaCodec - Frame rate 2. H.264/AVC - Frame rate(FPS)
  21. 21. I-Frame 간의 간격(GOP : Group Of Picture) ● I-Frame과 I-Frame 사이의 간격 o I P P P P I : 5 ● MediaCodec - I Frame Interval o 초 단위로 지정이 되며 대략 5초를 사용. 2. H.264/AVC - I Frame Interval(GOP)
  22. 22. ● 고급 오디오 부호화(Advanced Audio Coding, AAC, ISO/IEC 13818-7) ● 디지털 오디오에서 쓰이는 표준적인 손실 데이터 압축방식 ● Sample rate (8~96 Khz) ● channel count (1, 2 채널) ● bitrate : Audio 초당 음질 ● 참고 : MPEG-4 Audio 문서 2. AAC
  23. 23. 3. MediaCodec
  24. 24. ● MediaCodec ● MediaExtractor ● MediaMuxer ● OpenGL ES ● NDK 3. MediaCodec
  25. 25. ● Audio/Video를 인코딩/디코딩하는 API ○ Android 4.1에서 추가 ○ Surface를 통한 비디오 디코딩 가능 ○ Audio는 AudioTrack을 이용하여 재생 가능 ● Android 4.3부터 ○ Surface를 통한 인코딩 가능.(OpenGL ES, EGL) ○ MediaMuxer를 통한 MP4 파일 생성 가능 ○ VP8, VP9 인코딩(.WebM) 3. MediaCodec
  26. 26. ● "video/x-vnd.on2.vp8" - VP8 video (i.e. video in .webm) ● "video/x-vnd.on2.vp9" - VP9 video (i.e. video in .webm) ● "video/avc" - H.264/AVC video ● "video/mp4v-es" - MPEG4 video ● "video/3gpp" - H.263 video ● "audio/3gpp" - AMR narrowband audio ● "audio/amr-wb" - AMR wideband audio ● "audio/mpeg" - MPEG1/2 audio layer III ● "audio/mp4a-latm" - AAC audio (note, this is raw AAC packets, not packaged in LATM!) ● "audio/vorbis" - vorbis audio ● "audio/g711-alaw" - G.711 alaw audio ● "audio/g711-mlaw" - G.711 ulaw audio 3. MediaCodec - 지원 codec
  27. 27. ● MediaCodec codec = MediaCodec.createDecoderByType(type); // OR ● MediaCodec codec = MediaCodec.createEncoderByType(type); ● codec.configure(format, …); o public void configure (MediaFormat format, Surface surface, MediaCrypto crypto, int flags); ● codec.start(); 3. MediaCodec - init
  28. 28. ● Video 인코딩 o mediaFormat.setInteger(MediaFormat.KEY_COLOR_FORMAT, MediaCodecInfo.CodecCapabilities.COLOR_FormatYUV420Planar); ➔ 색상값 초기화 참고 : http://thdev.net/576 ● Audio 디코딩 o format.setByteBuffer("csd-0", csd); ➔ Audio byte를 직접 디코딩 할경우 참고 : http://thdev.net/567 3. MediaCodec - MediaFormat
  29. 29. ByteBuffer[] inputBuffers = codec.getInputBuffers(); ByteBuffer[] outputBuffers = codec.getOutputBuffers(); 3. MediaCodec - Codec 사용
  30. 30. int inputBufferIndex = codec.dequeueInputBuffer(timeoutUs); if (inputBufferIndex >= 0) { // fill inputBuffers[inputBufferIndex] with valid data ... codec.queueInputBuffer(inputBufferIndex, ...); } ● public final void queueInputBuffer (int index, int offset, int size, long presentationTimeUs, int flags) 3. MediaCodec - Codec 사용
  31. 31. int outputBufferIndex = codec.dequeueOutputBuffer(BufferInfo, timeoutUs); if (outputBufferIndex >= 0) { // outputBuffer is ready to be processed or rendered. codec.releaseOutputBuffer(outputBufferIndex, true/false); } else if (outputBufferIndex == MediaCodec.INFO_OUTPUT_BUFFERS_CHANGED) { outputBuffers = codec.getOutputBuffers(); } else if (outputBufferIndex == MediaCodec.INFO_OUTPUT_FORMAT_CHANGED) { // Subsequent data will conform to new format. MediaFormat format = codec.getOutputFormat(); 3. MediaCodec - Codec 사용
  32. 32. codec.stop(); codec.release(); codec = null; 3. MediaCodec - Codec 종료
  33. 33. ● 16 배수로 처리할 것. ● 색상값을 직접 처리하기 보다는 Surface를 사용할 것. ● 색공간 변경시 libYUV 추천(NDK를 이용하여 처리) ● 디코딩 시 Surface를 활용하면 쉽게 랜더링이 가능. 3. MediaCodec - 참고
  34. 34. 4. MediaMuxer
  35. 35. MP4?? MPEG-4 Part 14 또는 MP4 (공식적으로 ISO/IEC 14496-14:2003)는 MPEG-4의 일부로 규정된 멀티미디어 컨테이너 포맷 오디오와 비디오가 포함된 MPEG-4 파일들은 표준 .mp4 오디오 전용 MPEG-4 파일들은 일반적으로 .m4a
  36. 36. ● Android 4.3 에서 추가된 API ● .MP4 파일 생성 가능 ● MediaCodec 과 함께 사용 ● 참고 : MediaCodec만 사용하는 경우 H.264와 AAC RAW 데이터가 출력 4. MediaMuxer
  37. 37. ● MediaMuxer muxer = new MediaMuxer("temp.mp4", OutputFormat.MUXER_OUTPUT_MPEG_4); 4. MediaMuxer - init
  38. 38. // More often, the MediaFormat will be retrieved from MediaCodec.getOutputFormat() // or MediaExtractor.getTrackFormat(). // MediaFormat audioFormat = new MediaFormat(...); // MediaFormat videoFormat = new MediaFormat(...); if (outputBufferIndex == MediaCodec.INFO_OUTPUT_FORMAT_CHANGED) { // Subsequent data will conform to new format. videoFormat = codec.getOutputFormat(); int videoTrackIndex = muxer.addTrack(videoFormat); muxer.start(); } 4. MediaMuxer - muxer add
  39. 39. int outputBufferIndex = codec.dequeueOutputBuffer(BufferInfo, timeoutUs); if (outputBufferIndex >= 0) { ByteBuffer outputBuffer = outputBuffers[outputBufferIndex]; muxer.writeSampleData(TrackIndex, outputBuffer, bufferInfo); codec.releaseOutputBuffer(outputBufferIndex,false); } 4. MediaMuxer - muxer write
  40. 40. muxer.stop(); muxer.release(); muxer = null; ● Muxer의 stop()을 호출하지 않으면 Head가 써지지 않음 4. MediaMuxer - muxer stop
  41. 41. ● Muxer 사용시 2GB 초과시 MP4 Head가 써지지 않음. o 최신 코드에는 2GB 제한이 사라짐. 다음 버전에 적용 될 듯. ● Audio/Video를 함께 Muxer 하는 경우 1/2채널 사용 ● MediaCodec에서 동기화 시간을 작성 4. MediaMuxer - 참고
  42. 42. ● MediaCodec 관련 모음 : http://bigflake.com/mediacodec/ ● Android Example : https://android.googlesource.com/platform/cts/+/jb-mr2- release/tests/tests/media/src/android/media/cts ● MediaCodec Example : https://github.com/taehwandev/MediaCodecExample 5. 추천 사이트
  43. 43. Taehwan (taehwan@thdev.net) End
  44. 44. 이 저작물에는 크리에이티브 커먼즈 저작자표시 4.0 국제 라이선스가 적용 되어 있습니다. 이 라이선스의 설명을 보고 싶으시면 http://creativecommons.org/licenses/by/4.0/ 을(를) 참조하세요.
  45. 45. ● Google Drive : http://goo.gl/6pFI90 자료 확인

×