2012-05-06 2 views
10

UIWebView을 설정하여 MPJEG 스트림을 검색하는 URL을 통해 웹 카메라의 내용을 표시합니다.UIWebView 및 Keep-Alive?

다른 카메라로 전환하고 싶다면 UIWebView의 전체 내용을 재설정하지 않고 대신로드 한 페이지에서 자바 스크립트 기능을 설정하면 더 부드럽게 보입니다. 이 같은 이미지의 내용 : 나는이 작업을 수행하지 않은 경우, 나는 새로운 URL로 전환마다의 UIWebView가 새로운 콘텐츠까지 1 ~ 2 초 동안 흰색 갔다

<img id='iImage' src='about:blank'> 
<script type='text/javascript'> 
function show(url) 
{ 
    iImage.src = url; 
} 
</script> 

표시 할 준비가되어 있었다 위 코드를 사용하면 내용을 직접 바꿀뿐 화이트 아웃은 없습니다.

그러나 두 비디오 스트림을 앞뒤로 전환하면 어떤 시점에서 UIWebView에 오류가 발생하고 시행 착오를 통해이 현상이 네 번째로 발생한다는 것을 알게되었습니다. 전망. 브라우저 탭에서 4 개의 비디오 스트림을 열려고하면 앞의 세 가지 중 하나를 닫을 때까지 네 번째로로드 사이클이 멈추게됩니다.

이 믿고 날 리드 :

  1. 문제의 카메라는 이전 스트림
을 닫지 않는 <img...> 태그에 src 속성을 변경 동시에
  • 에서 3 개 스트림 서비스를 제공 할 수

    Keepalive에 연결할 수 있습니까? <img...> 태그에 웹 사이트 브라우저를 표시하지 않았더라도 웹킷 브라우저 시스템에서 이전 스트림을 유지할 수 있습니까?

    기본적으로,이 작업을 수행 할 수 있습니다 재현 :

    1. UIWebView
    2. 전화에서 위의 내용이 4 배 설정 : wv.EvaluateJavascript("show(url)")

    4 호에를, 내가 얻을 파란색 물음표 중간에.

    계속 키커가 될 수 있습니까? 그렇다면 제어 할 수 있습니까?

  • +0

    연결 유지 브라우저가 추가 콘텐츠를 얻을 수있는 연결을 재사용 할 수 있도록되어있다.URL을 변경하면 (즉, 동일한 도메인이지만 다른 경로로 가정 함) 이전 연결을 다시 사용해야합니다. 새 소켓이 각 이미지 URL에 대해 열리는 것과 같은 문제가 발생합니다. MJPEG의 WebKit 버그 때문일 수 있습니다. 전체 이미지 HTML 요소를 바꾸어보고 도움이되는지 확인해보십시오. –

    +0

    네, 그게 효과가 있지만, 분명히하고 싶지 않은 일입니다. –

    +0

    왜 그런가요? 이미지 요소를 변경하면 웹보기의 모든 내용을 바꾸는 데 문제가 발생하지 않습니다. –

    답변

    5

    원본이 변경된 경우에도 WebKit에서 이미지 리소스를로드하지 않기 때문에 발생합니다. 이것은 일반적으로 이미지에 문제를 일으키지 않지만 끊이지 않는 스트리밍 이미지는 페이지가 다시로드 될 때까지 놓아 두지 않습니다.

    Chromium에 대해 제기 된 버그로이 문제를 지적합니다. https://code.google.com/p/chromium/issues/detail?id=73395

    댓글 스레드에서 해결 방법은 이미지를 변경하기 전에 window.stop()으로 전화하는 것입니다. 이것은 브라우저에서 중지를 클릭하는 것과 같으며 모든로드 리소스가 중단됩니다. 다행히도, 이것이 페이지를 다시로드하지 않는다는 사실은 흰색 플래쉬를 피할 수 있습니다.

    나는 다음과 같은 시도를 줘야 할 것 :

    <img id='iImage' src='about:blank'> 
    <script type='text/javascript'> 
    function show(url) 
    { 
        window.stop(); 
        iImage.src = url; 
    } 
    </script>