MediaSync Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Класс MediaSync можно использовать для синхронного воспроизведения аудио- и видеопотоков.
[Android.Runtime.Register("android/media/MediaSync", ApiSince=23, DoNotGenerateAcw=true)]
public sealed class MediaSync : Java.Lang.Object
[<Android.Runtime.Register("android/media/MediaSync", ApiSince=23, DoNotGenerateAcw=true)>]
type MediaSync = class
inherit Object
- Наследование
- Атрибуты
Комментарии
Класс MediaSync можно использовать для синхронного воспроизведения аудио- и видеопотоков. Его также можно использовать для воспроизведения аудио или видеопотока.
MediaSync обычно используется следующим образом:
MediaSync sync = new MediaSync();
sync.setSurface(surface);
Surface inputSurface = sync.createInputSurface();
...
// MediaCodec videoDecoder = ...;
videoDecoder.configure(format, inputSurface, ...);
...
sync.setAudioTrack(audioTrack);
sync.setCallback(new MediaSync.Callback() {
{@literal @Override}
public void onAudioBufferConsumed(MediaSync sync, ByteBuffer audioBuffer, int bufferId) {
...
}
}, null);
// This needs to be done since sync is paused on creation.
sync.setPlaybackParams(new PlaybackParams().setSpeed(1.f));
for (;;) {
...
// send video frames to surface for rendering, e.g., call
// videoDecoder.releaseOutputBuffer(videoOutputBufferIx, videoPresentationTimeNs);
// More details are available as below.
...
sync.queueAudio(audioByteBuffer, bufferId, audioPresentationTimeUs); // non-blocking.
// The audioByteBuffer and bufferId will be returned via callback.
// More details are available as below.
...
...
}
sync.setPlaybackParams(new PlaybackParams().setSpeed(0.f));
sync.release();
sync = null;
// The following code snippet illustrates how video/audio raw frames are created by
// MediaCodec's, how they are fed to MediaSync and how they are returned by MediaSync.
// This is the callback from MediaCodec.
onOutputBufferAvailable(MediaCodec codec, int bufferId, BufferInfo info) {
// ...
if (codec == videoDecoder) {
// surface timestamp must contain media presentation time in nanoseconds.
codec.releaseOutputBuffer(bufferId, 1000 * info.presentationTime);
} else {
ByteBuffer audioByteBuffer = codec.getOutputBuffer(bufferId);
sync.queueAudio(audioByteBuffer, bufferId, info.presentationTime);
}
// ...
}
// This is the callback from MediaSync.
onAudioBufferConsumed(MediaSync sync, ByteBuffer buffer, int bufferId) {
// ...
audioDecoder.releaseBuffer(bufferId, false);
// ...
}
Клиенту необходимо настроить соответствующий приемник, задав Surface и (или) AudioTrack в зависимости от типа потока, который будет воспроизводиться.
Для видео клиент должен вызвать , #createInputSurface
чтобы получить поверхность, на которой он будет отображать видеокадры.
Для аудио клиент должен правильно настроить звуковую дорожку, например с помощью AudioTrack#MODE_STREAM
. Звуковые буферы отправляются в MediaSync напрямую через #queueAudio
и возвращаются клиенту через Callback#onAudioBufferConsumed
асинхронно. Клиент не должен изменять звуковой буфер, пока он не будет возвращен.
При необходимости клиент может предварительно заполнить буферы звука и видео, установив скорость воспроизведения 0,0, а затем передать аудио- и видео буферы в соответствующие компоненты. Это может сократить возможный начальный запуск.
Документация по Java для android.media.MediaSync
.
Части этой страницы являются изменениями, основанными на работе, созданной и совместно используемой проектом Android и используемой в соответствии с условиями, Creative Commons 2.5 Attribution License.
Конструкторы
MediaSync() |
Конструктор классов. |
Свойства
Class |
Возвращает класс среды выполнения данного объекта |
Handle |
Дескриптор базового экземпляра Android. (Унаследовано от Object) |
JniIdentityHashCode |
Класс MediaSync можно использовать для синхронного воспроизведения аудио- и видеопотоков. (Унаследовано от Object) |
JniPeerMembers |
Класс MediaSync можно использовать для синхронного воспроизведения аудио- и видеопотоков. |
PeerReference |
Класс MediaSync можно использовать для синхронного воспроизведения аудио- и видеопотоков. (Унаследовано от Object) |
PlaybackParams |
Возвращает частоту воспроизведения с помощью |
SyncParams |
Возвращает режим синхронизации A/V. -или- Задает режим синхронизации A/V. |
ThresholdClass |
Этот API поддерживает инфраструктуру Mono для Android и не предназначен для использования непосредственно из кода. (Унаследовано от Object) |
ThresholdType |
Этот API поддерживает инфраструктуру Mono для Android и не предназначен для использования непосредственно из кода. (Унаследовано от Object) |
Timestamp |
Получение текущей позиции воспроизведения. |
Методы
Clone() |
Создает и возвращает копию этого объекта. (Унаследовано от Object) |
CreateInputSurface() |
Запрашивает устройство Surface для использования в качестве входных данных. |
Dispose() |
Класс MediaSync можно использовать для синхронного воспроизведения аудио- и видеопотоков. (Унаследовано от Object) |
Dispose(Boolean) |
Класс MediaSync можно использовать для синхронного воспроизведения аудио- и видеопотоков. (Унаследовано от Object) |
Equals(Object) |
Указывает, равен ли какой-то другой объект этому объекту. (Унаследовано от Object) |
Flush() |
Очищает все буферы из объекта синхронизации. |
GetHashCode() |
Возвращает значение хэш-кода для объекта. (Унаследовано от Object) |
JavaFinalize() |
Вызывается сборщиком мусора для объекта , когда сборка мусора определяет, что больше нет ссылок на объект . (Унаследовано от Object) |
Notify() |
Пробуждает один поток, ожидающий монитора этого объекта. (Унаследовано от Object) |
NotifyAll() |
Пробуждает все потоки, ожидающие на мониторе этого объекта. (Унаследовано от Object) |
QueueAudio(ByteBuffer, Int32, Int64) |
Помещает звуковые данные в очередь асинхронно для воспроизведения (AudioTrack должен находиться в режиме потоковой передачи). |
Release() |
Убедитесь, что вы вызываете этот метод, когда все готово, чтобы освободить любой открытый экземпляр компонента, а не полагаться на сборщик мусора, чтобы сделать это в какой-то момент в будущем. |
SetAudioTrack(AudioTrack) |
Задает звуковую дорожку для MediaSync. |
SetCallback(MediaSync+Callback, Handler) |
Задает асинхронный обратный вызов для событий MediaSync с действиями. |
SetHandle(IntPtr, JniHandleOwnership) |
Задает свойство Handle. (Унаследовано от Object) |
SetOnErrorListener(MediaSync+IOnErrorListener, Handler) |
Задает асинхронный обратный вызов для событий ошибок. |
SetSurface(Surface) |
Задает выходную поверхность для MediaSync. |
ToArray<T>() |
Класс MediaSync можно использовать для синхронного воспроизведения аудио- и видеопотоков. (Унаследовано от Object) |
ToString() |
Возвращает строковое представление объекта. (Унаследовано от Object) |
UnregisterFromRuntime() |
Класс MediaSync можно использовать для синхронного воспроизведения аудио- и видеопотоков. (Унаследовано от Object) |
Wait() |
Вызывает ожидание текущего потока, пока он не пробудится, как правило, из-за <уведомления><<> или>прерывания или прерывания.>< (Унаследовано от Object) |
Wait(Int64) |
Вызывает ожидание текущего потока, пока он не пробудится, как правило, путем <уведомления><<> или>прерывания или прерывания<> или до истечения определенного количества реального времени. (Унаследовано от Object) |
Wait(Int64, Int32) |
Вызывает ожидание текущего потока, пока он не пробудится, как правило, путем <уведомления><<> или>прерывания или прерывания<> или до истечения определенного количества реального времени. (Унаследовано от Object) |
Явные реализации интерфейса
IJavaPeerable.Disposed() |
Класс MediaSync можно использовать для синхронного воспроизведения аудио- и видеопотоков. (Унаследовано от Object) |
IJavaPeerable.DisposeUnlessReferenced() |
Класс MediaSync можно использовать для синхронного воспроизведения аудио- и видеопотоков. (Унаследовано от Object) |
IJavaPeerable.Finalized() |
Класс MediaSync можно использовать для синхронного воспроизведения аудио- и видеопотоков. (Унаследовано от Object) |
IJavaPeerable.JniManagedPeerState |
Класс MediaSync можно использовать для синхронного воспроизведения аудио- и видеопотоков. (Унаследовано от Object) |
IJavaPeerable.SetJniIdentityHashCode(Int32) |
Класс MediaSync можно использовать для синхронного воспроизведения аудио- и видеопотоков. (Унаследовано от Object) |
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
Класс MediaSync можно использовать для синхронного воспроизведения аудио- и видеопотоков. (Унаследовано от Object) |
IJavaPeerable.SetPeerReference(JniObjectReference) |
Класс MediaSync можно использовать для синхронного воспроизведения аудио- и видеопотоков. (Унаследовано от Object) |
Методы расширения
JavaCast<TResult>(IJavaObject) |
Выполняет преобразование типа, проверенного средой выполнения Android. |
JavaCast<TResult>(IJavaObject) |
Класс MediaSync можно использовать для синхронного воспроизведения аудио- и видеопотоков. |
GetJniTypeName(IJavaPeerable) |
Класс MediaSync можно использовать для синхронного воспроизведения аудио- и видеопотоков. |