MediaParser Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Analisa formatos de contêiner de mídia e extrai exemplos de mídia e metadados contidos.
[Android.Runtime.Register("android/media/MediaParser", ApiSince=30, DoNotGenerateAcw=true)]
public sealed class MediaParser : Java.Lang.Object
[<Android.Runtime.Register("android/media/MediaParser", ApiSince=30, DoNotGenerateAcw=true)>]
type MediaParser = class
inherit Object
- Herança
- Atributos
Comentários
Analisa formatos de contêiner de mídia e extrai exemplos de mídia e metadados contidos.
Essa classe fornece acesso a uma bateria de analisadores de contêiner de mídia de baixo nível. Cada instância dessa classe está associada a uma implementação específica do analisador de mídia que é adequada para extração de um formato de contêiner de mídia específico. A atribuição de implementação do analisador de mídia depende do método de fábrica (ver #create e #createByName) usado para criar a instância.
Os usuários devem implementar o seguinte para usar essa classe.
<ul><li>InputReader: fornece os bytes do contêiner de mídia para analisar.
<li>OutputConsumer: Fornece um coletor para todos os dados e metadados extraídos.
</ul>
O snippet de código a seguir inclui um exemplo de uso:
MyOutputConsumer myOutputConsumer = new MyOutputConsumer();
MyInputReader myInputReader = new MyInputReader("www.example.com");
MediaParser mediaParser = MediaParser.create(myOutputConsumer);
while (mediaParser.advance(myInputReader)) {}
mediaParser.release();
mediaParser = null;
O snippet de código a seguir fornece uma implementação de exemplo rudimentar OutputConsumer que extrai e publica todos os exemplos de vídeo:
class VideoOutputConsumer implements MediaParser.OutputConsumer {
private byte[] sampleDataBuffer = new byte[4096];
private byte[] discardedDataBuffer = new byte[4096];
private int videoTrackIndex = -1;
private int bytesWrittenCount = 0;
@Override
public void onSeekMapFound(int i, @NonNull MediaFormat mediaFormat) {
// Do nothing.
}
@Override
public void onTrackDataFound(int i, @NonNull TrackData trackData) {
MediaFormat mediaFormat = trackData.mediaFormat;
if (videoTrackIndex == -1 &&
mediaFormat
.getString(MediaFormat.KEY_MIME, /* defaultValue= */ "")
.startsWith("video/")) {
videoTrackIndex = i;
}
}
@Override
public void onSampleDataFound(int trackIndex, @NonNull InputReader inputReader)
throws IOException {
int numberOfBytesToRead = (int) inputReader.getLength();
if (videoTrackIndex != trackIndex) {
// Discard contents.
inputReader.read(
discardedDataBuffer,
/* offset= */ 0,
Math.min(discardDataBuffer.length, numberOfBytesToRead));
} else {
ensureSpaceInBuffer(numberOfBytesToRead);
int bytesRead = inputReader.read(
sampleDataBuffer, bytesWrittenCount, numberOfBytesToRead);
bytesWrittenCount += bytesRead;
}
}
@Override
public void onSampleCompleted(
int trackIndex,
long timeMicros,
int flags,
int size,
int offset,
@Nullable CryptoInfo cryptoData) {
if (videoTrackIndex != trackIndex) {
return; // It's not the video track. Ignore.
}
byte[] sampleData = new byte[size];
int sampleStartOffset = bytesWrittenCount - size - offset;
System.arraycopy(
sampleDataBuffer,
sampleStartOffset,
sampleData,
/* destPos= */ 0,
size);
// Place trailing bytes at the start of the buffer.
System.arraycopy(
sampleDataBuffer,
bytesWrittenCount - offset,
sampleDataBuffer,
/* destPos= */ 0,
/* size= */ offset);
bytesWrittenCount = bytesWrittenCount - offset;
publishSample(sampleData, timeMicros, flags);
}
private void ensureSpaceInBuffer(int numberOfBytesToRead) {
int requiredLength = bytesWrittenCount + numberOfBytesToRead;
if (requiredLength > sampleDataBuffer.length) {
sampleDataBuffer = Arrays.copyOf(sampleDataBuffer, requiredLength);
}
}
}
Java documentação para android.media.MediaParser.
Partes desta página são modificações baseadas no trabalho criado e compartilhado pelo Project Open Source do Open Source e usadas de acordo com os termos descritos na Creative Commons 2.5.
Campos
| Nome | Description |
|---|---|
| ParameterAdtsEnableCbrSeeking |
Define se a busca de taxa de bits constante deve ser habilitada para análise do ADTS. |
| ParameterAmrEnableCbrSeeking |
Define se a busca de taxa de bits constante deve ser habilitada para AMR. |
| ParameterFlacDisableId3 |
Define se a faixa ID3 deve ser desabilitada para FLAC. |
| ParameterMatroskaDisableCuesSeeking |
Define se a análise de Matroska deve evitar procurar o elemento de indicações. |
| ParameterMp3DisableId3 |
Define se a faixa ID3 deve ser desabilitada para MP3. |
| ParameterMp3EnableCbrSeeking |
Define se a busca de taxa de bits constante deve ser habilitada para MP3. |
| ParameterMp3EnableIndexSeeking |
Define se a análise MP3 deve gerar um mapeamento de tempo para byte. |
| ParameterMp4IgnoreEditLists |
Define se a análise mp4 deve ignorar listas de edição. |
| ParameterMp4IgnoreTfdtBox |
Define se a análise MP4 deve ignorar a caixa tfdt. |
| ParameterMp4TreatVideoFramesAsKeyframes |
Define se a análise MP4 deve tratar todos os quadros de vídeo como quadros-chave. |
| ParameterTsAllowNonIdrAvcKeyframes |
Define se o TS deve tratar exemplos que consistem em fatias de IDR que não sejam de IDR como exemplos de sincronização (quadros-chave). |
| ParameterTsDetectAccessUnits |
Define se a análise de TS deve dividir o fluxo do AVC em unidades de acesso com base em cabeçalhos de fatia. |
| ParameterTsEnableHdmvDtsAudioStreams |
Define se a análise de TS deve lidar com fluxos de áudio DTS do HDMV. |
| ParameterTsIgnoreAacStream |
Define se a análise de TS deve ignorar fluxos elementares do AAC. |
| ParameterTsIgnoreAvcStream |
Define se a análise de TS deve ignorar fluxos elementares do AVC. |
| ParameterTsIgnoreSpliceInfoStream |
Define se a análise de TS deve ignorar fluxos de informações de junção. |
| ParameterTsMode |
Define o modo de operação para análise de TS. |
| ParserNameAc3 |
Analisador para o formato de contêiner AC-3, conforme definido no Padrão de Compactação de Áudio Digital (AC-3). |
| ParserNameAc4 |
Analisador para o formato de contêiner AC-4, conforme definido pelo Dolby AC-4: Entrega de áudio para serviços de entretenimento de última geração. |
| ParserNameAdts |
Analisador para o formato de contêiner do ADTS, conforme definido em ISO/IEC 13818-7. |
| ParserNameAmr |
Analisador para o formato de contêiner AMR, conforme definido no RFC 4867. |
| ParserNameFlac |
Analisador para o formato de contêiner FLAC, conforme definido na especificação. |
| ParserNameFlv |
Analisador para o formato de contêiner FLV, conforme definido na Especificação de Formato de Arquivo de Vídeo Do Adobe Flash. |
| ParserNameFmp4 |
Analisador de arquivos fragmentados usando o formato de contêiner MP4, conforme definido em ISO/IEC 14496-12. |
| ParserNameMatroska |
Analisador para o formato de contêiner Matroska, conforme definido na especificação. |
| ParserNameMp3 |
Analisador para o formato de contêiner MP3, conforme definido em ISO/IEC 11172-3. |
| ParserNameMp4 |
Analisador para arquivos não fragmentados usando o formato de contêiner MP4, conforme definido em ISO/IEC 14496-12. |
| ParserNameOgg |
Analisador para o formato de contêiner OGG, conforme definido no RFC 3533. |
| ParserNamePs |
Analisador para o formato de contêiner PS, conforme definido em ISO/IEC 11172-1. |
| ParserNameTs |
Analisador para o formato de contêiner TS, conforme definido em ISO/IEC 13818-1. |
| ParserNameUnknown |
Nome do analisador retornado |
| ParserNameWav |
Analisador para o formato de contêiner WAV, conforme definido em Interface de Programação Multimídia e Especificações de Dados. |
| SampleFlagDecodeOnly |
Obsoleto.
Indica que o exemplo deve ser decodificado, mas não renderizado. |
| SampleFlagEncrypted |
Obsoleto.
Indica que o exemplo é (pelo menos parcialmente) criptografado. |
| SampleFlagHasSupplementalData |
Obsoleto.
Indica que o exemplo tem dados complementares. |
| SampleFlagKeyFrame |
Obsoleto.
Indica que o exemplo contém um exemplo de sincronização. |
| SampleFlagLastSample |
Obsoleto.
Indica que o exemplo é conhecido por conter o último exemplo de mídia do fluxo. |
Propriedades
| Nome | Description |
|---|---|
| Class |
Retorna a classe de runtime deste |
| Handle |
O identificador para a instância subjacente do Android. (Herdado de Object) |
| JniIdentityHashCode |
Obtém o código de hash de identidade atribuído a esse par Java pelo runtime de interoperabilidade. (Herdado de Object) |
| JniManagedPeerState |
Analisa formatos de contêiner de mídia e extrai exemplos de mídia e metadados contidos. (Herdado de JavaObject) |
| JniPeerMembers |
Analisa formatos de contêiner de mídia e extrai exemplos de mídia e metadados contidos. |
| LogSessionId |
Analisa formatos de contêiner de mídia e extrai exemplos de mídia e metadados contidos. |
| ParserName |
Retorna o nome da implementação do analisador de backup. |
| PeerReference |
Obtém a referência de objeto JNI para este par Java. (Herdado de Object) |
| ThresholdClass |
Essa API dá suporte à infraestrutura do Mono para Android e não se destina a ser usada diretamente do seu código. (Herdado de Object) |
| ThresholdType |
Essa API dá suporte à infraestrutura do Mono para Android e não se destina a ser usada diretamente do seu código. (Herdado de Object) |
Métodos
| Nome | Description |
|---|---|
| Advance(MediaParser+ISeekableInputReader) |
Faz progressos na extração do fluxo de mídia de entrada, a menos que o final da entrada tenha sido atingido. |
| Clone() |
Cria e retorna uma cópia desse objeto. (Herdado de Object) |
| Construct(JniObjectReference, JniObjectReferenceOptions) |
Analisa formatos de contêiner de mídia e extrai exemplos de mídia e metadados contidos. (Herdado de JavaObject) |
| Create(MediaParser+IOutputConsumer, String[]) |
Cria uma instância cujo analisador de backup será selecionado detectando o conteúdo durante a primeira |
| CreateByName(String, MediaParser+IOutputConsumer) |
Cria uma instância apoiada pelo analisador com o determinado |
| Dispose() |
Libera os recursos mantidos por esse par Java. (Herdado de Object) |
| Dispose(Boolean) |
Libera os recursos mantidos por esse par Java. (Herdado de Object) |
| DisposeUnlessReferenced() |
Analisa formatos de contêiner de mídia e extrai exemplos de mídia e metadados contidos. (Herdado de JavaObject) |
| Equals(Object) |
Analisa formatos de contêiner de mídia e extrai exemplos de mídia e metadados contidos. (Herdado de JavaObject) |
| Equals(Object) |
Indica se algum outro objeto é "igual a" este. (Herdado de Object) |
| GetHashCode() |
Retorna um valor de código hash para o objeto. (Herdado de Object) |
| GetParserNames(MediaFormat) |
Retorna uma lista imutável com os nomes dos analisadores adequados para formatos de contêiner com o determinado |
| JavaFinalize() |
Chamado pelo coletor de lixo em um objeto quando a coleta de lixo determina que não há mais referências ao objeto. (Herdado de Object) |
| Notify() |
Ativa um único thread que está aguardando no monitor deste objeto. (Herdado de Object) |
| NotifyAll() |
Ativa todos os threads que estão aguardando no monitor deste objeto. (Herdado de Object) |
| Release() |
Libera todos os recursos adquiridos. |
| Seek(MediaParser+SeekPoint) |
Procura dentro do contêiner de mídia que está sendo extraído. |
| SetHandle(IntPtr, JniHandleOwnership) |
Define a propriedade Handle (Herdado de Object) |
| SetParameter(String, Object) |
Define parâmetros específicos do analisador que permitem personalizar o comportamento. |
| SetPeerReference(JniObjectReference, JniObjectReferenceOptions) |
Analisa formatos de contêiner de mídia e extrai exemplos de mídia e metadados contidos. (Herdado de JavaObject) |
| SupportsParameter(String) |
Retorna se o determinado |
| ToArray<T>() |
Cria uma matriz gerenciada com base nesse wrapper de matriz Java. (Herdado de Object) |
| ToString() |
Retorna uma representação de cadeia de caracteres do objeto. (Herdado de Object) |
| UnregisterFromRuntime() |
Cancela o registro desse par Java do runtime de interoperabilidade. (Herdado de Object) |
| Wait() |
Faz com que o thread atual aguarde até ser despertado, normalmente por ser <notificado/em> ou <em>interrompido</em>.<> (Herdado de Object) |
| Wait(Int64, Int32) |
Faz com que o thread atual aguarde até que ele seja despertado, normalmente por ser <>notificado</em> ou <em>interrompido</em>, ou até que uma determinada quantidade de tempo real tenha decorrido. (Herdado de Object) |
| Wait(Int64) |
Faz com que o thread atual aguarde até que ele seja despertado, normalmente por ser <>notificado</em> ou <em>interrompido</em>, ou até que uma determinada quantidade de tempo real tenha decorrido. (Herdado de Object) |
Implantações explícitas de interface
| Nome | Description |
|---|---|
| IJavaPeerable.Disposed() |
Analisa formatos de contêiner de mídia e extrai exemplos de mídia e metadados contidos. (Herdado de JavaObject) |
| IJavaPeerable.Finalized() |
Analisa formatos de contêiner de mídia e extrai exemplos de mídia e metadados contidos. (Herdado de JavaObject) |
| IJavaPeerable.JniObjectReferenceControlBlock |
Analisa formatos de contêiner de mídia e extrai exemplos de mídia e metadados contidos. (Herdado de JavaObject) |
| IJavaPeerable.SetJniIdentityHashCode(Int32) |
Analisa formatos de contêiner de mídia e extrai exemplos de mídia e metadados contidos. (Herdado de JavaObject) |
| IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
Analisa formatos de contêiner de mídia e extrai exemplos de mídia e metadados contidos. (Herdado de JavaObject) |
| IJavaPeerable.SetPeerReference(JniObjectReference) |
Analisa formatos de contêiner de mídia e extrai exemplos de mídia e metadados contidos. (Herdado de JavaObject) |
Métodos de Extensão
| Nome | Description |
|---|---|
| GetJniTypeName(IJavaPeerable) |
Obtém o nome JNI do tipo da instância |
| JavaAs<TResult>(IJavaPeerable) |
Tente coagir a digitar |
| JavaCast<TResult>(IJavaObject) |
Executa uma conversão de tipo marcada por runtime do Android. |
| JavaCast<TResult>(IJavaObject) |
Analisa formatos de contêiner de mídia e extrai exemplos de mídia e metadados contidos. |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
Tente coagir a digitar |