2016-08-03 34 views
0

저는 MediaCodec과 Mp4Parser를 조합하여 (.mp4로 캡슐화하기 위해) 안드로이드에서 (API 16을 사용하여) 짧은 동영상을 녹화, 인코딩 및 제작하려고합니다.Android의 MediaCodec + mp4parser로 인코딩 할 때 재생 속도를 제어하는 ​​것은 무엇입니까?

.mp4의 지속 시간을 제외하고 모든 것이 잘 작동하고 있습니다 : 항상 3 초 길이 - '오른쪽'속도의 약 두 배로 실행됩니다.

  • 인코더로의 입력은 84 프레임 (100ms 걸림)입니다.
  • 마지막 프레임은 'end of stream'플래그를 설정합니다.
  • 은 내가 생각할 수있는 모든 매개 변수를 조정할 것을 시도했다 queueInputBuffer

각 프레임에 대한 프리젠 테이션 시간을 설정 -하지만 아무것도 차이를 만들 것 같다 - 항상 너무 재생 - 영화 3 초 길이 항상 빠른.

그래서 재생 seepd를 관리합니까? '탁월한'속도로 영화를 제작하려면 어떻게해야합니까?

답변

0

알아 냈어 : mp4parser로 캡슐화 할 때 (API < 18을 타겟팅하면 필요함) mp4parser의 API에서 속도를 설정해야합니다. queueInputBuffer에 제공 한 프리젠 테이션 시간은 Android의 내장형 멀티플렉서 (API18에서만 사용 가능)를 사용하지 않는 경우에도 별 차이가 없습니다.

new H264TrackImpl(new FileDataSourceImpl(rawDataFile), "eng", 100, 10); 
  • 마지막 두 개의 매개 변수 (척도와 frameTick가) 'noraml'로 재생 속도를 설정합니다

    나는 다음이 필요 나타냅니다 GitHub의에 this 질문에 비틀 거렸다.
+0

이제 MediaMuxer를 사용하면 재생 시간 DO가 mp4 파일의 재생 속도에 영향을 미치는지 확인할 수 있습니다. – FuzzyAmi