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;
}