Перейти к основному содержимому

Остановка трансляции

Остановите текущий RTSP- или JPEG-сеанс трансляции устройства и освободите принадлежащие приложению ресурсы проигрывателя, ретрансляции, изображений и интерфейса.

Предварительные условия

  • Целевое устройство соответствует протоколу LiveStreamingAPI.
  • Сохраняйте ссылки на ресурсы отображения, созданные для текущего сеанса.
  • Сделайте обработку остановки идемпотентной, чтобы закрытие экрана и явная команда остановки использовали один путь очистки.

Справочник API

Фреймворк

AIBuds.xcframework

Импорт

Swift
import AIBuds
import AIBudsLiveStream

Метод экземпляра

Swift
/// Stop live streaming
func stopLiveStreaming()

См. stopLiveStreaming.

Параметры

У метода нет параметров.

Возвращаемое значение

Метод не возвращает значение и не принимает обработчик завершения. Итоговые сведения доступны в sessionFinishHandler, переданном при запуске сеанса.

Примеры использования

Demo сначала останавливает необязательную RTMP-ретрансляцию, затем RTSP-воспроизведение и очищает состояние сеанса устройства и интерфейса. Команда устройству и ресурсы приложения имеют отдельные жизненные циклы.

Swift
func stopCurrentLiveStream() {
    // Stop optional host-side relay and playback resources.
    liveStreamer?.stopStreaming()
    liveStreamer = nil
    mediaPlayer?.stop()

    // Stop the RTSP or JPEG session on the connected device.
    (device as? LiveStreamingAPI)?.stopLiveStreaming()

    currentRTSPAddress = nil
    imageView.image = nil
    setStreamingActive(false)
}

Обработка ошибок

Поскольку у stopLiveStreaming() нет обработчика завершения, локальная очистка должна безопасно выполняться повторно. Используйте обратный вызов завершения исходного сеанса, чтобы отличить isUserInitiatedStop от прерывания, а при неожиданном завершении запишите или покажите ошибку.

Рекомендации

  1. Останавливайте трансляцию при закрытии экрана или завершении работы функции.
  2. Вместе с сеансом устройства освобождайте RTMP-ретранслятор, проигрыватель и сохранённый RTSP-адрес.
  3. Не ожидайте завершения остановки: публичный метод не предоставляет такого обратного вызова.
  4. Обработка обратного вызова завершения должна быть идемпотентной, поскольку он может прийти после локальной очистки.

Примечания

  • Один и тот же метод остановки завершает RTSP- и JPEG-сеансы устройства.
  • Остановка только LiveStreamingPlayer не завершает сеанс устройства.
  • Остановка только сеанса устройства не освобождает автоматически принадлежащие приложению объекты воспроизведения или ретрансляции.