Видео/потоковая передача аудио не останавливается, даже если UIWebView закрывается - iPad

Я вижу эту проблему только о iPad. То же самое работает как ожидалось над iPhone.

Я открытие URL из своего приложения в UIWebView. Если URL является нормальной веб-страницей, он хорошо работает как ожидалось. Но если URL является URL удаленного видео/звукового файла, UIWebView открывает плеер по умолчанию, который снова хорош.

Теперь то, когда я распускаю UIWebView (путем нажатия на кнопку Done на плеере), потоковая передача не останавливается, и аудио/видео продолжает играть в фоновом режиме (я не вижу его, но это действительно продолжает играть в фоновом режиме, может услышать его). UIViewController, в котором был создан webview, также dealloced (я вставил оператор журнала в dealloc методе), но потоковая передача не останавливается.

Кто-то может выручить меня на том, почему это могло происходить? И как я могу остановить аудио/потоковую передачу видео, когда UIWebView закрывается?

Спасибо.

33
задан lostInTransit 27 April 2010 в 06:53
поделиться

3 ответа

У меня та же проблема, о которой говорилось, но в этом случае видео, которое не перестает воспроизводиться, является видео Youtube, встроенным с помощью метода object / embed.

Я долго пытался понять, как остановить воспроизведение видео, и единственным решением, которое я нашел, было указать UIWebView загрузить пустую страницу перед закрытием просмотра:

    [self.webContent loadRequest:NSURLRequestFromString(@"about:blank")];

Изменить (2015-05- 12): Как упоминается ниже @chibimai, этот ответ от alloc_iNit работает по тем же принципам , но поскольку мой ответ дан 5 лет назад - а его всего 4 года - связанный ответ может быть более применимым. Я больше не занимаюсь разработкой iPhone, поэтому не могу определить, что лучше.

53
ответ дан 27 November 2019 в 18:08
поделиться

Я работаю над той же проблемой. Я обнаружил, что если вы определите что-то подобное в своем теге скрипта:

function stopVideo(){ video.pause(); }
window.onunload = stopVideo;

Затем в вашем UIViewController добавьте:

-(void)viewWillDisappear:(BOOL)animated{
    [webView stringByEvaluatingJavaScriptFromString:@"window.onunload();"];
    [super viewWillDisappear:animated];
}

Кажется, что вы пытаетесь приостановить / остановить видео на несколько секунд, но затем вы слышите звук продолжай играть!


Обновить!

Это общая ошибка медиаплеера. Вы должны установить время воспроизведения на -1, чтобы оно действительно остановилось.

2
ответ дан 27 November 2019 в 18:08
поделиться

Благодаря вашей теме по этой проблеме мне удалось найти решение, которое полностью устраняет проблему, и я протестировал его на своем IPad, а не только симулятор. Это также решает проблему с воспроизведением звука. Это не постоянное решение, а эффективный обходной путь.

Обзор подхода:

В основном все, что нужно, - это отправить короткий аудиофайл в webView. Я сделал копию файла IMac submarine.m4v, вызвал ping.m4v и добавил его в свой проект xcode в папке ресурсов.

Затем, когда я хочу, чтобы видео / аудио остановилось, я делаю следующие шаги:

webView.hidden = TRUE;
NSString *mimeType = [[NSString alloc] initWithString:@"video/x-m4v"];
NSData *PingData = [NSData alloc];
PingData = [NSData dataWithContentsOfFile:PingFilePath];

[webView loadData:PingData MIMEType:mimeType textEncodingName:nil baseURL:[NSURL URLWithString:PingFilePath]];

Теперь вам также нужно обработать ошибку «204». Ошибка 204 кажется просто предупреждением о том, что webView будет обрабатывать этот аудиофайл. Чтобы обработать ошибку, я добавил эту единственную строку (см. >>>) в didFailLoadWithError

(void)webView:(UIWebView *)BHwebView didFailLoadWithError:(NSError *)error
{

    NSLog(@"Error %i", error.code);
    if (error.code == NSURLErrorCancelled) return; // this is Error -999    
        if (error.code == 204) return; // this is Error 204 - for audio player in webview.

Наконец, я переворачиваю webView.hidden = FALSE прямо перед отображением моего следующего аудио / видео. Таким образом, небольшая полоса воспроизведения звукового файла не будет отображаться на дисплее. Раздается тихий пинг ... подойдет любой аудиофайл ...

Надеюсь, это поможет ...

0
ответ дан 27 November 2019 в 18:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: