Java 类com.google.android.exoplayer2.extractor.mp4.FragmentedMp4Extractor 实例源码

项目:Exoplayer2Radio    文件:DefaultExtractorsFactory.java   
@Override
public synchronized Extractor[] createExtractors() {
  Extractor[] extractors = new Extractor[FLAC_EXTRACTOR_CONSTRUCTOR == null ? 11 : 12];
  extractors[0] = new MatroskaExtractor(matroskaFlags);
  extractors[1] = new FragmentedMp4Extractor(fragmentedMp4Flags);
  extractors[2] = new Mp4Extractor();
  extractors[3] = new Mp3Extractor(mp3Flags);
  extractors[4] = new AdtsExtractor();
  extractors[5] = new Ac3Extractor();
  extractors[6] = new TsExtractor(tsMode, tsFlags);
  extractors[7] = new FlvExtractor();
  extractors[8] = new OggExtractor();
  extractors[9] = new PsExtractor();
  extractors[10] = new WavExtractor();
  if (FLAC_EXTRACTOR_CONSTRUCTOR != null) {
    try {
      extractors[11] = FLAC_EXTRACTOR_CONSTRUCTOR.newInstance();
    } catch (Exception e) {
      // Should never happen.
      throw new IllegalStateException("Unexpected error creating FLAC extractor", e);
    }
  }
  return extractors;
}
项目:K-Sonic    文件:DefaultSsChunkSource.java   
/**
 * @param manifestLoaderErrorThrower Throws errors affecting loading of manifests.
 * @param manifest The initial manifest.
 * @param elementIndex The index of the stream element in the manifest.
 * @param trackSelection The track selection.
 * @param dataSource A {@link DataSource} suitable for loading the media data.
 * @param trackEncryptionBoxes Track encryption boxes for the stream.
 */
public DefaultSsChunkSource(LoaderErrorThrower manifestLoaderErrorThrower, SsManifest manifest,
    int elementIndex, TrackSelection trackSelection, DataSource dataSource,
    TrackEncryptionBox[] trackEncryptionBoxes) {
  this.manifestLoaderErrorThrower = manifestLoaderErrorThrower;
  this.manifest = manifest;
  this.elementIndex = elementIndex;
  this.trackSelection = trackSelection;
  this.dataSource = dataSource;

  StreamElement streamElement = manifest.streamElements[elementIndex];

  extractorWrappers = new ChunkExtractorWrapper[trackSelection.length()];
  for (int i = 0; i < extractorWrappers.length; i++) {
    int manifestTrackIndex = trackSelection.getIndexInTrackGroup(i);
    Format format = streamElement.formats[manifestTrackIndex];
    int nalUnitLengthFieldLength = streamElement.type == C.TRACK_TYPE_VIDEO ? 4 : 0;
    Track track = new Track(manifestTrackIndex, streamElement.type, streamElement.timescale,
        C.TIME_UNSET, manifest.durationUs, format, Track.TRANSFORMATION_NONE,
        trackEncryptionBoxes, nalUnitLengthFieldLength, null, null);
    FragmentedMp4Extractor extractor = new FragmentedMp4Extractor(
        FragmentedMp4Extractor.FLAG_WORKAROUND_EVERY_VIDEO_FRAME_IS_SYNC_FRAME
        | FragmentedMp4Extractor.FLAG_WORKAROUND_IGNORE_TFDT_BOX, null, track);
    extractorWrappers[i] = new ChunkExtractorWrapper(extractor, format);
  }
}
项目:videoPickPlayer    文件:DefaultSsChunkSource.java   
/**
 * @param manifestLoaderErrorThrower Throws errors affecting loading of manifests.
 * @param manifest The initial manifest.
 * @param elementIndex The index of the stream element in the manifest.
 * @param trackSelection The track selection.
 * @param dataSource A {@link DataSource} suitable for loading the media data.
 * @param trackEncryptionBoxes Track encryption boxes for the stream.
 */
public DefaultSsChunkSource(LoaderErrorThrower manifestLoaderErrorThrower, SsManifest manifest,
    int elementIndex, TrackSelection trackSelection, DataSource dataSource,
    TrackEncryptionBox[] trackEncryptionBoxes) {
  this.manifestLoaderErrorThrower = manifestLoaderErrorThrower;
  this.manifest = manifest;
  this.elementIndex = elementIndex;
  this.trackSelection = trackSelection;
  this.dataSource = dataSource;

  StreamElement streamElement = manifest.streamElements[elementIndex];

  extractorWrappers = new ChunkExtractorWrapper[trackSelection.length()];
  for (int i = 0; i < extractorWrappers.length; i++) {
    int manifestTrackIndex = trackSelection.getIndexInTrackGroup(i);
    Format format = streamElement.formats[manifestTrackIndex];
    int nalUnitLengthFieldLength = streamElement.type == C.TRACK_TYPE_VIDEO ? 4 : 0;
    Track track = new Track(manifestTrackIndex, streamElement.type, streamElement.timescale,
        C.TIME_UNSET, manifest.durationUs, format, Track.TRANSFORMATION_NONE,
        trackEncryptionBoxes, nalUnitLengthFieldLength, null, null);
    FragmentedMp4Extractor extractor = new FragmentedMp4Extractor(
        FragmentedMp4Extractor.FLAG_WORKAROUND_EVERY_VIDEO_FRAME_IS_SYNC_FRAME
        | FragmentedMp4Extractor.FLAG_WORKAROUND_IGNORE_TFDT_BOX, track, null);
    extractorWrappers[i] = new ChunkExtractorWrapper(extractor, format, false, false);
  }
}
项目:transistor    文件:DefaultExtractorsFactory.java   
@Override
public synchronized Extractor[] createExtractors() {
  Extractor[] extractors = new Extractor[FLAC_EXTRACTOR_CONSTRUCTOR == null ? 11 : 12];
  extractors[0] = new MatroskaExtractor(matroskaFlags);
  extractors[1] = new FragmentedMp4Extractor(fragmentedMp4Flags);
  extractors[2] = new Mp4Extractor(mp4Flags);
  extractors[3] = new Mp3Extractor(mp3Flags);
  extractors[4] = new AdtsExtractor();
  extractors[5] = new Ac3Extractor();
  extractors[6] = new TsExtractor(tsMode, tsFlags);
  extractors[7] = new FlvExtractor();
  extractors[8] = new OggExtractor();
  extractors[9] = new PsExtractor();
  extractors[10] = new WavExtractor();
  if (FLAC_EXTRACTOR_CONSTRUCTOR != null) {
    try {
      extractors[11] = FLAC_EXTRACTOR_CONSTRUCTOR.newInstance();
    } catch (Exception e) {
      // Should never happen.
      throw new IllegalStateException("Unexpected error creating FLAC extractor", e);
    }
  }
  return extractors;
}
项目:transistor    文件:DefaultSsChunkSource.java   
/**
 * @param manifestLoaderErrorThrower Throws errors affecting loading of manifests.
 * @param manifest The initial manifest.
 * @param elementIndex The index of the stream element in the manifest.
 * @param trackSelection The track selection.
 * @param dataSource A {@link DataSource} suitable for loading the media data.
 * @param trackEncryptionBoxes Track encryption boxes for the stream.
 */
public DefaultSsChunkSource(LoaderErrorThrower manifestLoaderErrorThrower, SsManifest manifest,
    int elementIndex, TrackSelection trackSelection, DataSource dataSource,
    TrackEncryptionBox[] trackEncryptionBoxes) {
  this.manifestLoaderErrorThrower = manifestLoaderErrorThrower;
  this.manifest = manifest;
  this.elementIndex = elementIndex;
  this.trackSelection = trackSelection;
  this.dataSource = dataSource;

  StreamElement streamElement = manifest.streamElements[elementIndex];

  extractorWrappers = new ChunkExtractorWrapper[trackSelection.length()];
  for (int i = 0; i < extractorWrappers.length; i++) {
    int manifestTrackIndex = trackSelection.getIndexInTrackGroup(i);
    Format format = streamElement.formats[manifestTrackIndex];
    int nalUnitLengthFieldLength = streamElement.type == C.TRACK_TYPE_VIDEO ? 4 : 0;
    Track track = new Track(manifestTrackIndex, streamElement.type, streamElement.timescale,
        C.TIME_UNSET, manifest.durationUs, format, Track.TRANSFORMATION_NONE,
        trackEncryptionBoxes, nalUnitLengthFieldLength, null, null);
    FragmentedMp4Extractor extractor = new FragmentedMp4Extractor(
        FragmentedMp4Extractor.FLAG_WORKAROUND_EVERY_VIDEO_FRAME_IS_SYNC_FRAME
        | FragmentedMp4Extractor.FLAG_WORKAROUND_IGNORE_TFDT_BOX, null, track, null);
    extractorWrappers[i] = new ChunkExtractorWrapper(extractor, streamElement.type, format);
  }
}
项目:K-Sonic    文件:DashUtil.java   
private static ChunkExtractorWrapper newWrappedExtractor(Format format) {
  String mimeType = format.containerMimeType;
  boolean isWebm = mimeType.startsWith(MimeTypes.VIDEO_WEBM)
      || mimeType.startsWith(MimeTypes.AUDIO_WEBM);
  Extractor extractor = isWebm ? new MatroskaExtractor() : new FragmentedMp4Extractor();
  return new ChunkExtractorWrapper(extractor, format);
}
项目:transistor    文件:DashUtil.java   
private static ChunkExtractorWrapper newWrappedExtractor(int trackType, Format format) {
  String mimeType = format.containerMimeType;
  boolean isWebm = mimeType.startsWith(MimeTypes.VIDEO_WEBM)
      || mimeType.startsWith(MimeTypes.AUDIO_WEBM);
  Extractor extractor = isWebm ? new MatroskaExtractor() : new FragmentedMp4Extractor();
  return new ChunkExtractorWrapper(extractor, trackType, format);
}
项目:Exoplayer2Radio    文件:DefaultExtractorsFactory.java   
/**
 * Sets flags for {@link FragmentedMp4Extractor} instances created by the factory.
 *
 * @see FragmentedMp4Extractor#FragmentedMp4Extractor(int)
 * @param flags The flags to use.
 * @return The factory, for convenience.
 */
public synchronized DefaultExtractorsFactory setFragmentedMp4ExtractorFlags(
    @FragmentedMp4Extractor.Flags int flags) {
  this.fragmentedMp4Flags = flags;
  return this;
}
项目:transistor    文件:DefaultExtractorsFactory.java   
/**
 * Sets flags for {@link FragmentedMp4Extractor} instances created by the factory.
 *
 * @see FragmentedMp4Extractor#FragmentedMp4Extractor(int)
 * @param flags The flags to use.
 * @return The factory, for convenience.
 */
public synchronized DefaultExtractorsFactory setFragmentedMp4ExtractorFlags(
    @FragmentedMp4Extractor.Flags int flags) {
  this.fragmentedMp4Flags = flags;
  return this;
}