MOV или M4V видео встраивания (данные, полученные из базы данных MySQL через PHP) - PullRequest
1 голос
/ 15 мая 2011

Я разрабатываю сайт для рекламной компании, которая хочет загружать видео с поиском местоположения и кастингом.Я выяснил, как получить данные из sql и в браузер с правильными заголовками.

Теперь моя проблема - каков наилучший способ отображения видео в настоящее время.Мне нужно, чтобы он работал на iPhone, iPad, Safari и Firefox.Меня не волнует IE.

Я не против ограничить их загрузкой только в одном видеоформате, если это поможет.Значение только Quicktime .mov или только .m4v - все, что работает.Не могу использовать Flash, так как в этом участвуют iPhone и iPad.

У меня также нет проблем с размещением в каждом браузере разного кода.Мне просто нужно знать, какой метод лучше всего подходит для какой платформы / браузера.

РЕДАКТИРОВАТЬ:

Я выяснил, как отображать видео из базы данных в браузерах компьютера, о которых я забочусь (исключаяMSIE).Теперь мне нужно выяснить iPhone.Чтобы проверить, я поместил файлы в файловую систему сервера, и все они воспроизводятся оттуда через тег видео html5.Таким образом, iPhone способен воспроизводить форматы клипов.Очевидно, проблема заключается в передаче этих данных в iPhone из mySQL ... В настоящее время мой php-файл, который извлекает двоичные данные и отправляет их в браузер, задает следующие заголовки:

header("Content-length: $audioLength");  
header('Content-Range: bytes 0-'.$audioLength.'/'.$audioLength);  
header("Content-type: ".$mimeType);

, где $ audioLength - эторазмер файла в байтах, полученный при загрузке
$ mimeType - это тип mime, сообщаемый браузером при загрузке - оба значения передаются в сценарий retrieve_audio.php из базы данных вместе с двоичными данными.

Чтодругие заголовки могут быть необходимы?Как узнать, в чем разница между получением файла из файловой системы и базой данных?

Возможно, проблема в том, что iPhone не получает данные, пока вы не нажмете кнопку воспроизведения?В крайнем случае, я мог бы сделать так, чтобы код PHP записывал файлы в файловую систему, но это дублирование данных, которого я хотел бы избежать, если это возможно ...

Спасибо,

M

Ответы [ 2 ]

2 голосов
/ 15 мая 2011

Проверьте http://diveintohtml5.ep.io/video.html для получения отличной информации о видео HTML5 и различных форматах.

Упрощенный краткий ответ: Firefox 4 поддерживает Ogg (Theora / Vorbis) и WebM; Safari (настольный и мобильный) поддерживает MP4 (H.264 / AAC). Попробуйте использовать тег HTML5 <video> следующим образом:

<video width="320" height="240" controls>
    <source src="pr6.mp4"  type='video/mp4; codecs="avc1.42E01E, mp4a.40.2"'>
    <source src="pr6.webm" type='video/webm; codecs="vp8, vorbis"'>
    <source src="pr6.ogv"  type='video/ogg; codecs="theora, vorbis"'>
</video>

(Пример с сайта, на который ссылаются выше. Серьезно, это действительно хорошее чтение, и он также скажет вам, как убедиться, что ваше видео работает в IE, Chrome и т. Д.)

РЕДАКТИРОВАТЬ Если вам абсолютно необходимо использовать только один формат видео, вам лучше всего выбрать MP4 / M4V с видео H.264 и аудио AAC. Safari (настольный и мобильный) может воспроизводить его в теге <video>, а Firefox сможет воспроизводить его в контейнере Flash. Это не идеально, потому что я думаю, что вам придется немного понюхать браузер, чтобы убедиться, что iOS не получает Flash и Firefox, но вам нужно что-то вроде этого:

<!-- Safari and iOS -->
<video width="320" height="240" poster="poster.jpg" controls>
    <source src="video.mp4" type='video/mp4; codecs="avc1.42E01E, mp4a.40.2"'>
</video>

<!-- Firefox / other -->
<object width="320" height="240" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000">
    <param value="player.swf">
    <param value="true" name="allowfullscreen">
    <param value="always" name="allowscriptaccess">
    <param value="file=video.mp4&amp;image=poster.jpg" name="flashvars">
    <embed
        width="320"
        height="240"
        flashvars="file=video.mp4&amp;image=poster.jpg"
        allowfullscreen="true"
        allowscriptaccess="always"
        src="player.swf"
        type="application/x-shockwave-flash"
    >
</object>

Однако, даже если вы пойдете по этому пути, я все равно прочитал бы страницу Dive Into HTML5 для получения дополнительной информации о подходящих кодеках для использования, о том, как кодировать видео, и о различных проблемах, на которые следует обратить внимание.

0 голосов
/ 15 мая 2011

К сожалению, не существует единого формата, который бы хорошо работал на таком разнообразном устройстве.Вам нужно будет взять любой загруженный формат и преобразовать его во множество различных форматов.Возможно, вы захотите заглянуть в службу типа http://www.livetranscoding.com/, чтобы выполнить тяжелую работу (обратите внимание, я не пользовался их услугами и не знаю, можно ли заставить ее работать с не-живыми потоками).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...