Воспроизвести короткую часть длинного видеофайла - PullRequest
1 голос
/ 15 ноября 2011

Мне нужно воспроизвести короткую часть длинного видео. Я не могу отредактировать видео, чтобы вырезать нужную часть, потому что у меня будет около 6000 различных сегментов, и создание отдельных файлов заняло бы слишком много времени (и это было бы проблемой с объемом памяти).

Итак, скажем, я хочу начать клип на 120 секунд в видео и воспроизводить его в течение 180 секунд.

Вот мой код:


<!DOCTYPE html>

<html>

<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Video</title>    

    <script src="Backend/build/jquery.js"></script> 
    <script src="Backend/build/mediaelement-and-player.min.js"></script>
    <link rel="stylesheet" href="Backend/build/mediaelementplayer.css" />
</head>

<body>

<video width="720" height="480" id="player1" controls preload="none" >
    <source src="Backend/media/test.mp4" type="video/mp4">
    <source src="Backend/media/test.webm" type="video/webm">    
    <source src="Backend/media/test.ogv" type="video/ogv">
    <object width="720" height="480" type="application/x-shockwave-flash" data="Backend/build/flashmediaelement.swf">
        <param name="movie" value="flashmediaelement.swf" />
        <param name="flashvars" value="controls=true&file=Backend/media/test.mp4" />
    </object>
</video>

<script>
$('video,audio').mediaelementplayer();
</script>

</body>

</html>

Ответы [ 2 ]

0 голосов
/ 15 ноября 2011

Если у вас есть степень контроля над сервером, вы можете искать в медиа-файлах.

Пример: использовать Потоковый модуль H264 (Apache httpd, lighttpd, nginx, IIS). Позиция в потоке указывается в строке запроса. Пример: http://server/media.mp4?position=32 Флеш-плееры с открытым исходным кодом (например, JWPlayer) также поддерживают эту схему.

Обратите внимание, что вам необходимо убедиться, что носитель закодирован дружественным образом, а именно - небольшое расстояние между ключевыми кадрами.

0 голосов
/ 15 ноября 2011

Для видео-тега HTML5 вы можете использовать свойство javascript currentTime для запуска в точке и обработчик события timeupdate для остановки видео.

// Javascript

var starttime = 2000;  // start at 2 seconds
var endtime = 4000;    // stop at 4 seconds

var video = document.getElementById('video');
video.currentTime = starttime;

video.addEventListener("timeupdate", function() {
    if (video.currentTime >= endtime) {
        video.pause();
    }
}, false);

Для флеш-видео все зависит от того, какой флеш-плеер вы используете.

Обратите внимание, что все видео, вероятно, будет загружено, и, учитывая ваш вопрос, я предполагаю, что это довольно большое видео.

...