2021. 11. 16. 08:20ㆍMultimedia
- 목차
1. playlist 생성
1) ExoPlayerImplInternal.prepare -> MediaSourceList.prepare
HLS prepare 시,
1. master playlist parsing
HlsMasterPlaylist
2. media playlist parsing
이후 ts file들의 위치 정보들을 지니게 될 것임
MediaSourceHolder
timeline 유지
각 holder들은 연속적인 timeline에 대응
Media source를 MaskingMediaSource로 관리
active period 관리
playlist parsing
HlsDataSourceFactory(interface임)가 생 성한 DataSource를 parsingLoadable에 주입
DefaultHlsDataSourceFactory
HlsMediaSource는 createMediaSource에서 다음을 가지고 생성됨
mediaItem + hlsDataSourceFactory + extractorFactory
+ drmSessionManager + playlistTrackerFactory가 createTracker로 생성한 factory
prepare 시,
playlistTracker를 start 함 (event dispatcher를 연결)
master play list를 parsing 하고 live stream인지 여부를 파악
hls media source의 timeline
primary playlist가 갱신 되면,
onLoadCompleted ->
processLoadedPlaylist -> onPlaylistUpdated ->
onPrimaryPlaylistRefreshed ->
createTimelineForLive에서
1. SinglePeriodTimeline를 생성
2. refreshSourceInfo에 넣음
media source caller들에게 onSourceInfoRefreshed(this, timeline)으로 알림
MediaSourceCaller caller는 preparesource에서 등록
mediasourcelist의 prepareChildSource에서
caller를 생성
w/ mediaSourceListInfoListener.onPlaylistUpdateRequested() 를 호출하는
lambda function
media source caller
위처럼 media source 별로 등록되는 media source caller는
HlsMediaSource.onPrimaryPlaylistRefresh가 호출되면, 호출됨
2. do some work
1) do some work event 발생
2) do some work
playing period holder가 준비되면,
playing period holder의 media period 내 buffer를 버리고, renderer들에 대해 rendering 수행
player는
window와 period, media clock을 유지함
playback thread를 사용해 looper로 사용하여 event 처리
'Multimedia' 카테고리의 다른 글
영상 품질 측정 기법 (0) | 2022.04.16 |
---|---|
ExoPlayer 지원 codec 및 A/V rendering (0) | 2022.01.05 |
ExoPlayer build & streaming media source 생성 (0) | 2021.11.14 |
ExoPlayer 동작 분석 (prepare) (0) | 2021.11.14 |
GStreamer pwg: ch. 19 QoS (0) | 2021.10.11 |