Android4.1에서 키 프레임은 종종 실시간 인코딩 응용 프로그램에서 요청됩니다. 하지만 MediaCodec 객체를 사용하여이를 수행하는 방법은 무엇입니까? 현재 Android4.2 SDK가 지원하지 않는 것 같습니다.Android MediaCodec : 인코딩시 키 프레임을 요청하는 방법
2
A
답변
1
인코더를 구성 할 때 KEY_I_FRAME_INTERVAL 키를 설정하여 주기적 키 프레임을 요청할 수 있습니다. 아래 예에서는 2 초마다 하나씩 요청하고 있습니다. 명확성을 위해 프레임 속도 나 색상 형식과 같은 다른 키는 생략했지만 여전히 포함하려고합니다.
encoder = MediaCodec.createByCodecName(codecInfo.getName());
MediaFormat inputFormat = MediaFormat.createVideoFormat(mimeType, width, height);
/* ..... set various format options here ..... */
inputFormat.setInteger(MediaFormat.KEY_I_FRAME_INTERVAL, 2);
encoder.configure(inputFormat, null, null, MediaCodec.CONFIGURE_FLAG_ENCODE);
encoder.start();
나는 당신이 정말 요구하는 것은 컷 장면의 시작처럼, 인코딩 작업 동안 임의의 키 프레임을 요청하는 방법입니다, 그러나, 생각한다. 불행히도 나는 인터페이스를 보지 못했습니다. 인코더를 중지하고 다시 시작하면 다시 시작할 때 새 키 프레임을 만드는 효과가있을 수 있습니다. 그것을 시도 할 수있는 기회가 생기면 여기에 결과를 게시 할 것입니다.
도움이 되었기를 바랍니다. 비디오를 인코딩 할 때 필요 우연히
이MediaCodec codec = MediaCodec.createDecoderByType(type);
codec.configure(format, ...);
codec.start();
ByteBuffer[] inputBuffers = codec.getInputBuffers();
for (;;) {
int inputBufferIndex = codec.dequeueInputBuffer(timeoutUs);
if (inputBufferIndex >= 0) {
// fill inputBuffers[inputBufferIndex] with valid data
...
codec.queueInputBuffer(inputBufferIndex, 0, inputBuffers[inputBufferIndex].limit(), presentationTime,
isKeyFrame ? MediaCodec.BUFFER_FLAG_SYNC_FRAME : 0);
}
}
임의의 키 프레임을 삽입 할 : -
태드 Phetteplace GLACI, 주식
는
3
당신은 은 입력 버퍼를 대기 할 때 MediaCodec.BUFFER_FLAG_SYNC_FRAME을 지정하여 임의의 키 프레임을 생성 할 수 있습니다 Galaxy Nexus에서 MediaCodec에서 비디오의 시작 부분에 키 프레임을 자동으로 생성하지 않았습니다.
0
MediaCodec에는 setParameters
이라는 구조가 있습니다. 코 틀린에 당신은 좋아하는 수행 할 수 있습니다
fun yieldKeyFrame(): Boolean {
val param = Bundle()
param.putInt(MediaCodec.PARAMETER_KEY_REQUEST_SYNC_FRAME, 0)
try {
videoEncoder.setParameters(param)
return true
} catch (e: IllegalStateException) {
return false
}
}
는 videoEncoder
는 MediaCodec의 인스턴스 인코딩하도록 구성되어 있습니다.
관련 문제
- 1. Android 개발 : 권한을 요청하는 방법?
- 2. Android MediaCodec dequeOutputBuffer는 항상 -1을 반환합니다.
- 3. 불필요한 권한을 요청하는 Android
- 4. 키 프레임을 사용하는 GridLength 애니메이션?
- 5. Android : AnimationDrawable에서 현재 프레임을 얻는 방법
- 6. Android : 미리보기 프레임을 jpeg 이미지로 저장하는 방법?
- 7. H264 스트리밍을 위해 MediaCodec 사용
- 8. Android MediaCodec API 동영상 재생 속도가 너무 빠름
- 9. 아마존 URL에서 정보를 요청하는 방법
- 10. 클라이언트 IP에서 요청하는 방법
- 11. PostMethod : 주어진 주소로 요청하는 방법?
- 12. 데이터 프레임을 키 값을 기반으로하는 목록과 병합하는 효율적인 방법
- 13. CSS3 @ 키 프레임을 사용하여 요소를 원래 위치로 애니메이트하는 방법
- 14. NetStream에서 강제로 키 프레임을 만드는 방법은 무엇입니까?
- 15. 전송 스트림에서 키 프레임을 찾으려면 어떻게합니까?
- 16. 두 번째 키 프레임을 먼저 구현하는
- 17. Android : 비디오를 업로드하는 방법을 요청하는 URL을 얻는 방법?
- 18. Android SDK 설치 : 패키지를 요청하는 패키지가 필요합니까?
- 19. ffmpeg : 비디오 인코딩시 오디오를 어떻게 루프합니까?
- 20. FFMPEG는 인코딩시 사용자 데이터 섹션 삽입을 지원합니까?
- 21. cURL을 Python에 요청하는 방법 language?
- 22. Chrome에서 publish_stream 권한을 요청하는 방법
- 23. NSURLProtocol 내부에서 UIWebView를 요청하는 방법
- 24. 미니언에서 다른 작업을 요청하는 방법
- 25. mvc에서 필드 컬렉션을 요청하는 방법
- 26. 페이지를 요청하는 사용자를 얻는 방법
- 27. PHP에서 원시 데이터를 요청하는 방법?
- 28. 선택적 매개 변수를 요청하는 방법?
- 29. JOptionPane 이후에 FocusInWindow를 요청하는 방법?
- 30. NSStatusItem의 프레임을 얻는 방법