Загрузка видео с PHP форматированием и кодированием на стороне сервера - PullRequest
1 голос
/ 31 октября 2011

В настоящее время мы разработали сайт ExpressionEngine (php) и используем платный JWPlayer для отображения видео, загруженного клиентом.

В настоящее время мы сталкиваемся с рядом проблем, так как клиент:

  1. Загрузка видео не того размера
  2. Загрузка видео случайным образом в формате flv или mp4

И игрок ужасно пыхтит с множественными паузами по всему видео - иногда буферизирует весь клип перед его воспроизведением.

Я знаю, что FFMPEG может быть установлен на стороне сервера, но я не уверен, каким образом это можно сделать, и как он может взаимодействовать между ExpressionEngine и JWPlayer. Я также не уверен насчет форматирования - способность этого автоматизированного процесса кодирования также обрезать / изменять размер видео в соответствии с размерами проигрывателя на сайте.

Нам бы очень хотелось, чтобы видео воспроизводилось на всех браузерах и устройствах iOS.

Вариант HQ также был бы полезен, когда это применимо, но это было бы просто замечательно - поскольку мы в первую очередь боремся с проблемами форматирования / кодирования.

Буду очень признателен за любую помощь в определении лучшего процесса и какие инструменты мне могут понадобиться.

Ответы [ 2 ]

1 голос
/ 29 января 2013

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

Один из способов приблизиться к нему - создать собственный сценарий для обработки видео, загруженных вашим клиентом, с помощью FFmpeg, который фактически может принимать практически любой формат видео, и генерировать правильные выходные форматы и размеры, гарантируя, что Полученное видео подойдет для воспроизведения в Интернете с помощью вашего плеера.

Проблема с буферизацией видео, с которой вы сталкиваетесь, заключается в том, что видеофайл не подготовлен для последовательной загрузки или псевдопотоковой передачи, поэтому вашему браузеру необходимо загрузить все видео перед началом воспроизведения. Эту проблему можно решить с помощью таких программ, как qt-faststart для видеофайлов MP4 и MOV и flvtool2 для файлов FLV. Таким образом, ваш сценарий должен также оптимизировать закодированные видео с помощью этих инструментов.

Также обратите внимание, что если вы используете видеопроигрыватель HTML5 (собственный браузер или JWPlayer недавно), то вы можете наслаждаться случайным поиском видеофайлов без их буферизации.

Если начинать с нуля невозможно, вы можете найти коммерческое решение, такое как транскодер Tremendum , которое также использует FFmpeg и довольно простое в использовании, однако оно делает все, что вам нужно для работы с различные форматы ввода и пропорции автоматически.

Я выполнил несколько настроек таким образом, отделяя часть CMS от части обработки видео, и это избавило меня от головной боли.

1 голос
/ 31 октября 2011

Я бы порекомендовал использовать такой сервис, как zencoder

Я использовал их в прошлом, и независимо от того, какой формат видео я выбрасывал, он прекрасно работает.(PS. Я совсем не связан с ними)

Существует PHP API с множеством вариантов изменения размера, качества и формата.После того, как вы загрузили видео, вы можете отправить его в zencoder, и он через некоторое время отправит вам ответ с успехом или неудачей.

Они могут поместить обработанное видео на Amazon S3 или отправить его по FTP на сервер..

Вам понадобится HTML5-плеер для устройств iOS, если только JWPlayer не прошел долгий путь с тех пор, как я использовал его в последний раз.

Вы можете получить zencoder для вывода в mp4.и тогда вам все еще нужен только mp4 для JWPlayer / flash и версия HTML5 для iOS, если у вас нет проблем с использованием флэш-памяти для всех настольных браузеров.

Что касается проблем с буферизацией, которые у вас возникают -Я обнаружил, что использование CDN-версии SWF для JWPlayer (или любого другого используемого вами проигрывателя) привело к загрузке всего видеофайла перед воспроизведением.Легко исправить, разместив его самостоятельно.

...