Показать сообщение отдельно
  #1 (permalink)  
Старый 14.03.2015, 02:57
Аватар для cyber
I am Student
Отправить личное сообщение для cyber Посмотреть профиль Найти все сообщения от cyber
 
Регистрация: 17.12.2011
Сообщений: 4,415

Баги HTML5 <audio> и <video> media bug list
Короче я подумал, что не помешает что типо bug list, по media, что бы можно было сразу учится на чужих граблях, а не изобретать свои.
Тут я предлагаю публиковать изсветные баги, связанные с audio, video..
И так начну я:

1. Конвертация видео, долго не могу нормально конвертнуть видео. Форматы
Решение:
Webm:
ffmpeg -i source.mp4 -pass 1 -codec:v libvpx -b:v 2000k -codec:a libvorbis \
  -b:a 100k -s 1280x720 -f webm -y /dev/null
ffmpeg -i source.mp4 -pass 2 -codec:v libvpx -b:v 2000k -codec:a libvorbis \
  -b:a 100k -s 1280x720 -y output.webm


mp4 (Спасибо за подсказку Илье Кантору):
ffmpeg -i INPUTFILE -c:v libx264 -с:a libfaac -crf 27 -preset veryfast -profile:v main -level 3.1 -movflags +faststart OUT.mp4


2. события canplaythrough и canplay в лисе срабатывают только после вызова play, 100% воспроизводится в лисе 35+ (windows/linux)

function canPlay ( video, callback  ) {
            var i = 0,
            volume = video.volume,
            onCanPlay = function () {
                video.removeEventListener ( "canplaythrough", onCanPlay );
                callback( null );
            };

        //firefox canplay events fix
        video.volume = 0;
        video.play();
        video.pause();
        video.currentTime = 0;
        video.volume = volume;

        if ( video.readyState === video.HAVE_ENOUGH_DATA ) {
            onCanPlay();
        }

        else if ( "oncanplaythrough" in video ) {
          return video.addEventListener ( "canplaythrough", onCanPlay );
        }
        else {
            (function waitCanPlay() {

                if ( video.readyState == video.HAVE_ENOUGH_DATA ) {
                    return callback( null );
                }

                else if ( ++i == 15 ) {
                    return callback ( "Failed download video" );
                }

                setTimeout( waitCanPlay, 300 );
            } () );
        }
    };


3.
Сообщение от Octane
В том же safari не всегда срабатывает canplay, нужно подписываться на canplay и canplaythrough.
canPlayType может вернуть "no" вместо пустой строки.

4.
Сообщение от Octane
В Safari 7-8 если audio/video элемент уже проигрывался и вызвать play синхронно со сменой src, то воспроизведение не начнется.
__________________
Цитата:
Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.

Последний раз редактировалось cyber, 15.03.2015 в 19:28.
Ответить с цитированием