Показать сообщение отдельно
  #2 (permalink)  
Старый 24.04.2015, 13:27
Новичок на форуме
Отправить личное сообщение для fortexich Посмотреть профиль Найти все сообщения от fortexich
 
Регистрация: 23.04.2015
Сообщений: 2

Вот это работает во всех браузерах и на телефоне только в файерфоксе. Что тут не так? Мне нужно чтобы это работало в хроме телефона. Такое ощущение, что объекту видео не удается получить длину блоб объекта. причем если перейти напрямую по ссылке блоба будет ошибка воспроизведения. Если же я не передам в нью блоб, что это видео, то создается ссылка на файл, по переходе на которую я вижу код файла целиком.
<form action="">
    <input type="file" id="file"/>
</form>
        <div id="result"></div>
        <video id="video" style="width:400px;height: 300px;" controls>
            <source id="source"></source>

        </video>
        <script src="js/jquery.min.js"></script>
<script >


    function _base64ToArrayBuffer(base64) {
        var binary_string =  window.atob(base64);
        var len = binary_string.length;
        var bytes = new Uint8Array( len );
        for (var i = 0; i < len; i++)        {
            bytes[i] = binary_string.charCodeAt(i);
        }
        return bytes.buffer;
    }
    //var base64String = btoa(String.fromCharCode.apply(null, new Uint8Array(arrayBuffer)));


    function dataURItoBlob(dataURI) {
        var byteString = atob(dataURI.split(',')[1]);

        var mimeString = dataURI.split(',')[0].split(':')[1].split(';')[0]

        var ab = new ArrayBuffer(byteString.length);
        var ia = new Uint8Array(ab);
        for (var i = 0; i < byteString.length; i++) {
            ia[i] = byteString.charCodeAt(i);
        }

        var bb = new BlobBuilder();
        bb.append(ab);
        return bb.getBlob(mimeString);
    }
$(document).ready(function(){
    $("#file").change(function(event){
        var files = event.target.files;

        var file    =   files[0]
        var fileReader = new FileReader();
        fileReader.onloadend = function(event)
        {
            var content = event.target.result;
            //console.log(content)

            content =   content.split(",")
            content =   content[1]

            var blob = new Blob([_base64ToArrayBuffer(content)],{'type':'video/mp4'});

            bloburl =   URL.createObjectURL(blob)
            $("#result").append("<a href='"+bloburl+"'>"+bloburl+"</a>")
            $("#video").attr('src',bloburl);
           document.getElementById('video').play();


        };

        bloburl =   URL.createObjectURL(files[0])
        $("#result").append("1 - <a href='"+bloburl+"' target='_blank'>"+bloburl+"</a><br>")

                fileReader.readAsDataURL(files[0])
                //fileReader.readAsArrayBuffer(file);
    })
});

</script>

Последний раз редактировалось fortexich, 24.04.2015 в 13:39.
Ответить с цитированием