|
3 / 3 / 2
Регистрация: 16.01.2013
Сообщений: 471
|
||||||||||||||||
Заливка файла+конвертация видео в реальном времени20.09.2018, 15:23. Показов 2525. Ответов 12
Метки нет (Все метки)
Здравствуйте, уважаемые форумчане.
На сайте администратор при помощи редактора bbcode создает новости. Иногда требуется к новости прикрепить видеофайл с устройства. Для этого реализована заливка файла средствами php+ajax+jquery - после заливки вернет в поле редактора уже готовый файл в виде плейера(см.скриншоты). Проблема вся в том, что видеофайл нужно конвертировать(уменьшить его вес+адаптировать под различные устройства) Делаю через:
Пробовал увеличивать лимит в php max_execution_time = 1000 но это не помогает, хотя
Но тем не менее 504 выдается в среднем через 3 минуты после начала заливки файла. Возможно nginx обрывает соединение, я вроде бы увеличил, но не знаю как проверить срабатывает это в реальности или нет
Возможно как-то можно просто периодически посылать запросы какие-то пока не получишь нужный ответ(допустим скриптом отслеживать процесс конвертирования)? Есть вариант отдельно конвертировать видео после заливки файла, но тогда функционал теряет свой смысл. Ведь администратору удобно делать все в одном окне и то что видео само после всех процессов подгружается в редактор новости и администратору остается только нажать "Опубликовать новость". Короче говоря, я жду от вас советов - прошу не проходите мимо ))
0
|
||||||||||||||||
| 20.09.2018, 15:23 | |
|
Ответы с готовыми решениями:
12
data() php в реальном времени Переменная в реальном времени Уведомления в реальном времени на сайте |
|
Нет ТЗ - давай досвидания
|
|
| 21.09.2018, 02:54 | |
|
Нужно запустить другой процесс, где все это будет конвертироваться. Есть разные службы очередей, можно и без них самому реализовать через БД.
Ну, естественно, куда-то нужно лить статусы о ходе работы и слушать их. Опять же, через БД.
0
|
|
|
3 / 3 / 2
Регистрация: 16.01.2013
Сообщений: 471
|
||
| 21.09.2018, 09:49 [ТС] | ||
|
0
|
||
|
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
|
|
| 21.09.2018, 11:21 | |
|
1) Загрузили видео, добавили в очередь задание (запись в MySQL, PostgreSQL, Redis и т.п.).
2) Нужен слушатель очереди (простой вариант: запуск команды с помощью cron; но запускать в виде daemon лучше). 3) В запускаемом скрипте выбираете задания и выполняете. Пишите статус задания куда-нибудь.
1
|
|
|
3 / 3 / 2
Регистрация: 16.01.2013
Сообщений: 471
|
|
| 21.09.2018, 11:44 [ТС] | |
|
Para bellum, А есть какие-то примеры как вообще это все делается. Суть я понял, а вот с реализацией туго, потому как никогда с этим еще не сталкивался
Добавлено через 3 минуты Para bellum, Я понял что после заливки видео нужно как-то запустить задание на конвертацию. Далее в БД нужно создать запись какую-то про это задание и поле со статусом иметь.(в редакторе средствами ajax отслеживать изменение этого поле, которое менять будет скрипт, когда конвертация закончится). Основная проблема в том, как правильно создать этот скрипт с моей командой и как проверять его статус, чтобы еще потом можно было заносить изменения в БД... Так я смысл понял?
0
|
|
|
3 / 3 / 2
Регистрация: 16.01.2013
Сообщений: 471
|
|
| 24.09.2018, 08:01 [ТС] | |
|
Para bellum, тема еще актуальна, прошу помощи. Очень надо разобраться. Вы хоть напишите у меня правильный ход мысли и это возможно?
0
|
|
|
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
|
||||||
| 24.09.2018, 10:31 | ||||||
Сообщение было отмечено MirDj как решение
Решение
1) Пользователь загружает видео, пишите данные о нём в БД и возвращаете ID записи.
2) Клиент обращается к серверу, чтобы проверить статус записи. Если конвертация завершена, сервер возвращает нужные данные. 3) Пишите примерно такой бесконечный скрипт:
nohup, если Linux).Если запустили и нужно изменить код, не забывайте убить текущий процесс. Не забывайте, что процесс может умереть при перезагрузке системы и некоторых других обстоятельствах. Видео может конвертироваться долго, поэтому нужно что-то придумывать в редакторе, чтобы пользователь понимал, чего ждёт. P.S. Это, конечно, простой пример, для донесения сути. Можно на Github поискать нормальную реализацию системы очередей, которая сможет принимать любые задания, а не только по видеофайлам работать.
1
|
||||||
|
3 / 3 / 2
Регистрация: 16.01.2013
Сообщений: 471
|
||
| 24.09.2018, 11:12 [ТС] | ||
|
Para bellum, спасибо за пример. Смысл понятен.
Т.е в вашем примере скрипт запускается один раз на сервере через консоль и постоянно работает с интервалом между итерациями в 5 минут? Про то что пользователю выводить индикацию что конвертирование идет это однозначно делать и это не проблема аяксом получать статус из БД и дальше пользователю выводить что надо. Тут вопрос созревает такого плана, что если пользователь загрузил видео, а скрипт конвертации приостановлен на 5 минут (только что был запуск) то он будет ожидать 5 минут пока видео не начнет конвертироваться+само время на конвертацию? Да и еще... Запускать конвертацию сразу нескольких видео одновременно, боюсь что сервер ляжет. Тут задумка не в массовом видео-хостинге, а просто небольшого файлового хранилища. Оттуда и конечно задача запускать конвертирование видео сразу, а не по таймеру несколько одновременно И вот еще что подумал... данная реализация это же все-равно php. Значит и запускать надо будет командой php файл? Тогда можно создать задачу в крон чтобы этот файл запускался с каким-то промежутком времени? И опять же, если это будет php, то не будет ли скрипт возвращать ошибки, сбрасывать конвертирование, если оно слишком долго идет? Это чтобы понимать статус чего мы меняем. Видео началось конвертироваться и чтобы избежать повторный запуск конвертации (если видео конвертируется дольше чем запуск итераций) мы ему устанавливаем статус что конвертация запущена. Или это статус что конвертирование завершено?
0
|
||
|
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
|
||||||||||||||||
| 24.09.2018, 11:21 | ||||||||||||||||
/usr/bin/php это путь к интерпретатору PHP-кода.Да, задержка между проверками на наличие видео 5 минут (исключая время на саму конвертацию). Задержку можете вообще убрать, суть не в ней. Второй начнёт конвертироваться сразу после завершения конвертации первого. Cron назапускает кучу процессов, которые забьют ресурсы. По Cron можно запускать, если убрать вечный цикл:
1
|
||||||||||||||||
|
3 / 3 / 2
Регистрация: 16.01.2013
Сообщений: 471
|
|
| 24.09.2018, 11:23 [ТС] | |
|
Para bellum, Все понял. Я там успел дополнить еще свой ответ вопросами, в тот момент пока вы отвечали.
0
|
|
|
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
|
|||||
| 24.09.2018, 11:25 | |||||
1
|
|||||
|
3 / 3 / 2
Регистрация: 16.01.2013
Сообщений: 471
|
||
| 24.09.2018, 11:29 [ТС] | ||
max_execution_time?
0
|
||
|
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
|
|
| 24.09.2018, 11:32 | |
|
1
|
|
| 24.09.2018, 11:32 | |
|
Помогаю со студенческими работами здесь
13
Сайт местоположение в реальном времени
Группа пользователей в реальном времени Как сделать чат в реальном времени? Ведение лога и просмотр в реальном времени Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|