Java源码示例:com.google.android.exoplayer2.text.TextOutput
示例1
@Override
public Renderer[] createRenderers(
Handler eventHandler,
VideoRendererEventListener videoRendererEventListener,
AudioRendererEventListener audioRendererEventListener,
TextOutput textRendererOutput,
MetadataOutput metadataRendererOutput,
@Nullable DrmSessionManager<FrameworkMediaCrypto> drmSessionManager) {
if (drmSessionManager == null) {
drmSessionManager = this.drmSessionManager;
}
ArrayList<Renderer> renderersList = new ArrayList<>();
buildVideoRenderers(context, drmSessionManager, allowedVideoJoiningTimeMs,
eventHandler, videoRendererEventListener, extensionRendererMode, renderersList);
buildAudioRenderers(context, drmSessionManager, buildAudioProcessors(),
eventHandler, audioRendererEventListener, extensionRendererMode, renderersList);
buildTextRenderers(context, textRendererOutput, eventHandler.getLooper(),
extensionRendererMode, renderersList);
buildMetadataRenderers(context, metadataRendererOutput, eventHandler.getLooper(),
extensionRendererMode, renderersList);
buildMiscellaneousRenderers(context, eventHandler, extensionRendererMode, renderersList);
return renderersList.toArray(new Renderer[renderersList.size()]);
}
示例2
@Override
public Renderer[] createRenderers(
Handler eventHandler,
VideoRendererEventListener videoRendererEventListener,
AudioRendererEventListener audioRendererEventListener,
TextOutput textRendererOutput,
MetadataOutput metadataRendererOutput,
@Nullable DrmSessionManager<FrameworkMediaCrypto> drmSessionManager) {
if (drmSessionManager == null) {
drmSessionManager = this.drmSessionManager;
}
ArrayList<Renderer> renderersList = new ArrayList<>();
buildVideoRenderers(context, drmSessionManager, allowedVideoJoiningTimeMs,
eventHandler, videoRendererEventListener, extensionRendererMode, renderersList);
buildAudioRenderers(context, drmSessionManager, buildAudioProcessors(),
eventHandler, audioRendererEventListener, extensionRendererMode, renderersList);
buildTextRenderers(context, textRendererOutput, eventHandler.getLooper(),
extensionRendererMode, renderersList);
buildMetadataRenderers(context, metadataRendererOutput, eventHandler.getLooper(),
extensionRendererMode, renderersList);
buildMiscellaneousRenderers(context, eventHandler, extensionRendererMode, renderersList);
return renderersList.toArray(new Renderer[renderersList.size()]);
}
示例3
@Override
public Renderer[] createRenderers(Handler eventHandler,
VideoRendererEventListener videoRendererEventListener,
AudioRendererEventListener audioRendererEventListener,
TextOutput textRendererOutput,
MetadataOutput metadataRendererOutput,
@Nullable DrmSessionManager<FrameworkMediaCrypto> drmSessionManager) {
ArrayList<Renderer> renderersList = new ArrayList<>();
buildVideoRenderers(context, drmSessionManager, allowedVideoJoiningTimeMs,
eventHandler, videoRendererEventListener, extensionRendererMode, renderersList);
buildAudioRenderers(context, drmSessionManager, buildAudioProcessors(),
eventHandler, audioRendererEventListener, extensionRendererMode, renderersList);
buildTextRenderers(textRendererOutput, eventHandler.getLooper(), renderersList, subtitleDecoderFactory);
buildMetadataRenderers(metadataRendererOutput, eventHandler.getLooper(),
renderersList);
buildMiscellaneousRenderers();
return renderersList.toArray(new Renderer[renderersList.size()]);
}
示例4
@Override
public void addTextOutput(TextOutput listener) {
if (!currentCues.isEmpty()) {
listener.onCues(currentCues);
}
textOutputs.add(listener);
}
示例5
/**
* Sets an output to receive text events, removing all existing outputs.
*
* @param output The output.
* @deprecated Use {@link #addTextOutput(TextOutput)}.
*/
@Deprecated
public void setTextOutput(TextOutput output) {
textOutputs.clear();
if (output != null) {
addTextOutput(output);
}
}
示例6
@Override
public void onCues(List<Cue> cues) {
currentCues = cues;
for (TextOutput textOutput : textOutputs) {
textOutput.onCues(cues);
}
}
示例7
@Override
public void addTextOutput(TextOutput listener) {
if (!currentCues.isEmpty()) {
listener.onCues(currentCues);
}
textOutputs.add(listener);
}
示例8
/**
* Sets an output to receive text events, removing all existing outputs.
*
* @param output The output.
* @deprecated Use {@link #addTextOutput(TextOutput)}.
*/
@Deprecated
public void setTextOutput(TextOutput output) {
textOutputs.clear();
if (output != null) {
addTextOutput(output);
}
}
示例9
@Override
public void onCues(List<Cue> cues) {
currentCues = cues;
for (TextOutput textOutput : textOutputs) {
textOutput.onCues(cues);
}
}
示例10
@Override
public void addTextOutput(TextOutput listener) {
if (!currentCues.isEmpty()) {
listener.onCues(currentCues);
}
textOutputs.add(listener);
}
示例11
/**
* Sets an output to receive text events, removing all existing outputs.
*
* @param output The output.
* @deprecated Use {@link #addTextOutput(TextOutput)}.
*/
@Deprecated
public void setTextOutput(TextOutput output) {
textOutputs.clear();
if (output != null) {
addTextOutput(output);
}
}
示例12
@Override
public void onCues(List<Cue> cues) {
currentCues = cues;
for (TextOutput textOutput : textOutputs) {
textOutput.onCues(cues);
}
}
示例13
public void prepare(String url, String subTitle, TextOutput textOutput, Map<String, String> mapHeadData, boolean loop, float speed, boolean cache, File cachePath, String overrideExtension) {
Message msg = new Message();
msg.what = HANDLER_PREPARE;
msg.obj = new GSYExoSubTitleModel(url, subTitle, textOutput, mapHeadData, loop, speed, cache, cachePath, overrideExtension);
sendMessage(msg);
if (needTimeOutOther) {
startTimeOutBuffer();
}
}
示例14
public RendererProvider(@NonNull Context context, @NonNull Handler handler, @NonNull TextOutput captionListener, @NonNull MetadataOutput metadataListener,
@NonNull AudioRendererEventListener audioRendererEventListener, @NonNull VideoRendererEventListener videoRendererEventListener) {
this.context = context;
this.handler = handler;
this.captionListener = captionListener;
this.metadataListener = metadataListener;
this.audioRendererEventListener = audioRendererEventListener;
this.videoRendererEventListener = videoRendererEventListener;
}
示例15
@Override
public void addTextOutput(TextOutput listener) {
if (!currentCues.isEmpty()) {
listener.onCues(currentCues);
}
textOutputs.add(listener);
}
示例16
/**
* Sets an output to receive text events, removing all existing outputs.
*
* @param output The output.
* @deprecated Use {@link #addTextOutput(TextOutput)}.
*/
@Deprecated
public void setTextOutput(TextOutput output) {
textOutputs.clear();
if (output != null) {
addTextOutput(output);
}
}
示例17
@Override
public void onCues(List<Cue> cues) {
currentCues = cues;
for (TextOutput textOutput : textOutputs) {
textOutput.onCues(cues);
}
}
示例18
@Override
public void addTextOutput(TextOutput listener) {
if (!currentCues.isEmpty()) {
listener.onCues(currentCues);
}
textOutputs.add(listener);
}
示例19
/**
* Sets an output to receive text events, removing all existing outputs.
*
* @param output The output.
* @deprecated Use {@link #addTextOutput(TextOutput)}.
*/
@Deprecated
public void setTextOutput(TextOutput output) {
textOutputs.clear();
if (output != null) {
addTextOutput(output);
}
}
示例20
@Override
public void onCues(List<Cue> cues) {
currentCues = cues;
for (TextOutput textOutput : textOutputs) {
textOutput.onCues(cues);
}
}
示例21
@Override
public Renderer[] createRenderers(
Handler eventHandler,
VideoRendererEventListener videoRendererEventListener,
AudioRendererEventListener audioRendererEventListener,
TextOutput textRendererOutput,
MetadataOutput metadataRendererOutput,
@Nullable DrmSessionManager<FrameworkMediaCrypto> drmSessionManager) {
if (drmSessionManager == null) {
drmSessionManager = this.drmSessionManager;
}
ArrayList<Renderer> renderersList = new ArrayList<>();
buildVideoRenderers(
context,
extensionRendererMode,
mediaCodecSelector,
drmSessionManager,
playClearSamplesWithoutKeys,
enableDecoderFallback,
eventHandler,
videoRendererEventListener,
allowedVideoJoiningTimeMs,
renderersList);
buildAudioRenderers(
context,
extensionRendererMode,
mediaCodecSelector,
drmSessionManager,
playClearSamplesWithoutKeys,
enableDecoderFallback,
buildAudioProcessors(),
eventHandler,
audioRendererEventListener,
renderersList);
buildTextRenderers(context, textRendererOutput, eventHandler.getLooper(),
extensionRendererMode, renderersList);
buildMetadataRenderers(context, metadataRendererOutput, eventHandler.getLooper(),
extensionRendererMode, renderersList);
buildCameraMotionRenderers(context, extensionRendererMode, renderersList);
buildMiscellaneousRenderers(context, eventHandler, extensionRendererMode, renderersList);
return renderersList.toArray(new Renderer[0]);
}
示例22
@Override
public void removeTextOutput(TextOutput listener) {
textOutputs.remove(listener);
}
示例23
@Override
public void removeTextOutput(TextOutput listener) {
textOutputs.remove(listener);
}
示例24
public VideoManager(PlaybackOverlayActivity activity, View view) {
mActivity = activity;
mSurfaceView = view.findViewById(R.id.player_surface);
mSurfaceHolder = mSurfaceView.getHolder();
mSurfaceHolder.addCallback(mSurfaceCallback);
mSurfaceFrame = view.findViewById(R.id.player_surface_frame);
mSubtitlesSurface = view.findViewById(R.id.subtitles_surface);
if (DeviceUtils.is50()) {
mSubtitlesSurface.setZOrderMediaOverlay(true);
mSubtitlesSurface.getHolder().setFormat(PixelFormat.TRANSLUCENT);
hasSubtitlesSurface = true;
} else {
mSubtitlesSurface.setVisibility(View.GONE);
}
mExoPlayer = new SimpleExoPlayer.Builder(TvApp.getApplication(), new DefaultRenderersFactory(TvApp.getApplication()) {
@Override
protected void buildTextRenderers(Context context, TextOutput output, Looper outputLooper, int extensionRendererMode, ArrayList<Renderer> out) {
// Do not add text renderers since we handle subtitles
}
}).build();
mExoPlayerView = view.findViewById(R.id.exoPlayerView);
mExoPlayerView.setPlayer(mExoPlayer);
mExoPlayer.addListener(new Player.EventListener() {
@Override
public void onPlayerError(ExoPlaybackException error) {
Timber.e("***** Got error from player");
if (errorListener != null) errorListener.onEvent();
stopProgressLoop();
}
@Override
public void onPlayerStateChanged(boolean playWhenReady, int playbackState) {
// Do not call listener when paused
if (playbackState == Player.STATE_READY && playWhenReady) {
if (preparedListener != null) preparedListener.onEvent();
startProgressLoop();
} else if (playbackState == Player.STATE_ENDED) {
if (completionListener != null) completionListener.onEvent();
stopProgressLoop();
}
}
});
}
示例25
@Override
public void removeTextOutput(TextOutput listener) {
textOutputs.remove(listener);
}
示例26
public void addTextOutputPlaying(TextOutput textOutput) {
if(mediaPlayer != null) {
mediaPlayer.addTextOutputPlaying(textOutput);
}
}
示例27
public void removeTextOutput(TextOutput textOutput) {
if(mediaPlayer != null) {
mediaPlayer.removeTextOutput(textOutput);
}
}
示例28
public GSYExoSubTitleModel(String url, String subTitle, TextOutput textOutput, Map<String, String> mapHeadData, boolean loop, float speed, boolean cache, File cachePath, String overrideExtension) {
super(url, mapHeadData, loop, speed, cache, cachePath, overrideExtension);
this.subTitle = subTitle;
this.textOutput = textOutput;
}
示例29
public TextOutput getTextOutput() {
return textOutput;
}
示例30
public void setTextOutput(TextOutput textOutput) {
this.textOutput = textOutput;
}