Остановка трансляции
Остановите текущий RTSP- или JPEG-сеанс трансляции устройства и освободите принадлежащие приложению ресурсы проигрывателя, ретрансляции, изображений и интерфейса.
Предварительные условия
- Целевое устройство соответствует протоколу
LiveStreamingAPI. - Сохраняйте ссылки на ресурсы отображения, созданные для текущего сеанса.
- Сделайте обработку остановки идемпотентной, чтобы закрытие экрана и явная команда остановки использовали один путь очистки.
Справочник API
Фреймворк
AIBuds.xcframework
Импорт
- Swift
- Objective-C
import AIBuds
import AIBudsLiveStream#import <AIBuds/AIBuds-Swift.h>
#import <AIBuds/AIBuds.h>
#import <AIBudsLiveStream/AIBudsLiveStream-Swift.h>Метод экземпляра
- Swift
- Objective-C
/// Stop live streaming
func stopLiveStreaming()/// Stop live streaming
- (void)stopLiveStreaming;См. stopLiveStreaming.
Параметры
У метода нет параметров.
Возвращаемое значение
Метод не возвращает значение и не принимает обработчик завершения. Итоговые сведения доступны в sessionFinishHandler, переданном при запуске сеанса.
Примеры использования
Demo сначала останавливает необязательную RTMP-ретрансляцию, затем RTSP-воспроизведение и очищает состояние сеанса устройства и интерфейса. Команда устройству и ресурсы приложения имеют отдельные жизненные циклы.
- Swift
- Objective-C
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)
}- (void)stopCurrentLiveStream {
// Stop optional host-side relay and playback resources.
[self.liveStreamer stopStreaming];
self.liveStreamer = nil;
[self.mediaPlayer stop];
// Stop the RTSP or JPEG session on the connected device.
id<AIBudsLiveStreamingAPI> streamingDevice = (id<AIBudsLiveStreamingAPI>)self.device;
if ([streamingDevice conformsToProtocol:@protocol(AIBudsLiveStreamingAPI)]) {
[streamingDevice stopLiveStreaming];
}
self.currentRtspAddress = nil;
self.imageView.image = nil;
[self setStreamingActive:NO];
}Обработка ошибок
Поскольку у stopLiveStreaming() нет обработчика завершения, локальная очистка должна безопасно выполняться повторно. Используйте обратный вызов завершения исходного сеанса, чтобы отличить isUserInitiatedStop от прерывания, а при неожиданном завершении запишите или покажите ошибку.
Рекомендации
- Останавливайте трансляцию при закрытии экрана или завершении работы функции.
- Вместе с сеансом устройства освобождайте RTMP-ретранслятор, проигрыватель и сохранённый RTSP-адрес.
- Не ожидайте завершения остановки: публичный метод не предоставляет такого обратного вызова.
- Обработка обратного вызова завершения должна быть идемпотентной, поскольку он может прийти после локальной очистки.
Примечания
- Один и тот же метод остановки завершает RTSP- и JPEG-сеансы устройства.
- Остановка только
LiveStreamingPlayerне завершает сеанс устройства. - Остановка только сеанса устройства не освобождает автоматически принадлежащие приложению объекты воспроизведения или ретрансляции.