Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 17.11.2014, 16:27
Аспирант
Отправить личное сообщение для desperado Посмотреть профиль Найти все сообщения от desperado
 
Регистрация: 26.08.2014
Сообщений: 51

Аудио визуализация градиентом
Всем привет, народ, кто подскажет, почему Safari не хочет рисовать линерал градиенты, вот код, может кто сталкивался:

function AnalyserApp(audio, context){
    
    var context = context;    
    var audioAnimation;
    var audioBuffer;
    var sourceNode;
    var analyser;
    var audio = audio;

    audio.src = window.document.audio_path_real;

    // get the context from the canvas to draw on
    var canvas = document.getElementById('songcanvas');
    var ctx = canvas.getContext("2d");
console.log(ctx);
    var gradient = ctx.createLinearGradient(0, 0, 0, canvas.height);
    gradient.addColorStop(1, '#550000');
    gradient.addColorStop(0.75, '#ff0000');
    gradient.addColorStop(0.25, '#ffff00');
    gradient.addColorStop(0, '#ffff00');

    ctx.fillStyle = gradient;

    function setupAudioNodes(audio) {
        
        analyser = (analyser || context.createAnalyser());
        analyser.smoothingTimeConstant = 0.8;
        analyser.fftSize = 512;
        
        sourceNode = context.createMediaElementSource(audio);
        sourceNode.connect(analyser);
        sourceNode.connect(context.destination);
        audio.play();
        drawSpectrum();
    }

    function drawSpectrum() {
        var WIDTH = canvas.width,
            HEIGHT = canvas.height,

        array = new Uint8Array(analyser.frequencyBinCount);
        analyser.getByteFrequencyData(array);

        ctx.clearRect(0, 0, WIDTH, HEIGHT);
        audioAnimation = requestAnimationFrame(drawSpectrum);
        for (var i = 0; i < (array.length) ; i++) {
            var value = array[i];
            ctx.fillRect(i * 5, HEIGHT - value, 3, HEIGHT);
        }
    }
    
    if (!$.browser.mozilla)setupAudioNodes(audio);
}


Основная функция тут drawSpectrum () она рисует такой спектр при воспроизведении аудио файла (в Хроме и Опере):


Почему это не работает в Сафари, подскажите плз.

window.onload = function () {
                var ctx = document.getElementById("canvas").getContext("2d");
                var audioContext = new (window.AudioContext
                    || window.webkitAudioContext || window.mozAudioContext)();

                var analyser = audioContext.createAnalyser();
                analyser.fftSize = 512;
                analyser.minDecibels = -200
                analyser.smoothingTimeConstant = 0;
                analyser.connect(audioContext.destination);
                var frequencyBins = new Uint8Array(analyser.frequencyBinCount);

                var osc = audioContext.createOscillator();
                osc.connect(analyser);
                osc.start(audioContext.currentTime + 2);
                osc.frequency.setTargetAtTime(1000, audioContext.currentTime + 2, 0.4);
                osc.stop(audioContext.currentTime + 6);

                var WIDTH = 512;
                var HEIGHT = 100;
                var value, h, w;

                function draw() {
                    ctx.clearRect(0, 0, WIDTH, HEIGHT);

                    for (var i = 0; i < frequencyBins.length; i++) {
                        value = frequencyBins[i];
                        h = HEIGHT * (value / 255);
                        w = WIDTH / frequencyBins.length;
                        ctx.fillRect(i * w, HEIGHT - 1, w, -h);
                    }
                };

                function animate() {
                    analyser.getByteFrequencyData(frequencyBins);
                    draw();
                    requestAnimationFrame(animate);
                }

                requestAnimationFrame(animate);
            };


Нашел решение для Сафари, как только это все соеденить....подскажите плз, с меня пиво.

Последний раз редактировалось desperado, 17.11.2014 в 18:59.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Пути к файлам аудио maxvolodya Events/DOM/Window 4 19.02.2014 19:41
Воспроизвести два аудио файла по очереди VadimD Internet Explorer 1 29.03.2013 00:03
Буферизация аудио tropiko Events/DOM/Window 3 11.12.2012 12:22
jquery аудио плеер: плейлист не отображается в firefox roy-aron jQuery 0 27.06.2012 17:20