форум vBSupport.ru > vBSupport.ru > Гурушник > Кодер
Register Меню vBsupport Изображения Files Manager О рекламе Today's Posts Search
  • Родная гавань
  • Блок РКН снят
  • Premoderation
  • For English speaking users
  • Каталог Фрилансеров
  • If you want to buy some product or script
  • Администраторам
VBsupport перешел с домена .ORG на родной .RU Ура! Пожалуйста, обновите свои закладки - VBsupport.ru
Блок РКН снят, форум доступен на всей территории России, включая новые терртории, без VPN
На форуме введена премодерация ВСЕХ новых пользователей

Почта с временных сервисов, типа mailinator.com, gawab.com и/или прочих, которые предоставляют временный почтовый ящик без регистрации и/или почтовый ящик для рассылки спама, отслеживается и блокируется, а так же заносится в спам-блок форума, аккаунты удаляются
for English speaking users:
You may be surprised with restriction of access to the attachments of the forum. The reason is the recent change in vbsupport.org strategy:

- users with reputation < 10 belong to "simple_users" users' group
- if your reputation > 10 then administrator (kerk, Luvilla) can decide to move you into an "improved" group, but only manually

Main idea is to increase motivation of community members to share their ideas and willingness to support to each other. You may write an article for the subject where you are good enough, you may answer questions, you may share vbulletin.com/org content with vbsupport.org users, receiving "thanks" equal your reputation points. We should not only consume, we should produce something.

- you may:
* increase your reputation (doing something useful for another members of community) and being improved
* purchase temporary access to the improved category:
10 $ for 3 months. - this group can download attachments, reputation/posts do not matter.
20 $ for 3 months. - this group can download attachments, reputation/posts do not matter + adds eliminated + Inbox capacity increased + files manager increased permissions.

Please contact kerk or Luvilla regarding payments.

Important!:
- if your reputation will become less then 0, you will be moved into "simple_users" users' group automatically.*
*for temporary groups (pre-paid for 3 months) reputation/posts do not matter.
Уважаемые пользователи!

На форуме открыт новый раздел "Каталог фрилансеров"

и отдельный раздел для платных заказов "Куплю/Закажу"

Если вы хотите приобрести какой то скрипт/продукт/хак из каталогов перечисленных ниже:
Каталог модулей/хаков
Ещё раз обращаем Ваше внимание: всё, что Вы скачиваете и устанавливаете на свой форум, Вы устанавливаете исключительно на свой страх и риск.
Сообщество vBSupport'а физически не в состоянии проверять все стили, хаки и нули, выкладываемые пользователями.
Помните: безопасность Вашего проекта - Ваша забота.
Убедительная просьба: при обнаружении уязвимостей или сомнительных кодов обязательно отписывайтесь в теме хака/стиля
Спасибо за понимание
 
 
 
 
kerk
k0t
 
kerk's Avatar
Default Интервал (шаг) сохранения кадров из видеоролика FFMPEG-PHP
3

Собственно сам модуль написан и все работает уже давно, но хотелось бы улучшить алгоритм выдирания кадров из ролика
сейчас шаг расчитывается исходя из нескольких параметров
1. заданные пользователем в форме значения скрин формы
- кол-во сохраняемых картинок (INT)
- с какого кадра начать (INT)
2. полученные из ролика данные
- общее кол-во кадров
- продолжительность ролика
- FrameRate - получаемый одной из функций класса ffmpeg_movie() (или количество кадров разделенное на продолжительность ролика)
затем инициализация класса + задание необходимых переменных полученных из формы

сначала определяем, с какого кадра нужно начать сохранение (получено из формы)
PHP Code:
$frames_left $framecount $start_frame;
$duration_left $frames_left $frame_rate
сам алгоритм расчета шага из оставшихся кадров
PHP Code:
$step intval(($duration_left $save_frames 60) * $frame_rate); 
вывод отладочной информации

Code:
Array
(
    [debug] => Array
        (
            [save_frames] => 5
            [start_frame] => 2240
            [step] => 355
            [frame_rate] => 29.970029830933
            [framecount] => 108814
            [duration] => 3630.7661132812
            [frames_left] => 106574
            [duration_left] => 3556.0191498376
            [1] => 2240
            [2] => 2595
            [3] => 2950
            [4] => 3305
            [5] => 3660
        )
    [imagewidth] => 448
    [imageheight] => 336
    [resource] => Array
        ( /* массив ресурсов изображений из которых скрипт сохраняет картинки на диске*/
            [2240] => Resource id #35
            [2595] => Resource id #37
            [2950] => Resource id #39
            [3305] => Resource id #41
            [3660] => Resource id #43
        )
)
думаю немного переписать шаблон формы, что бы пользователь не счтал кадры, а указывал с какой секунды начать, а скрипт уже посчитает с какого кадра начать сохранение

так вот, не знаю почему, но мне не очень нравится этот алгоритм =)
может кто то предложит другой алгоритм расчета шага?

в новой версии файловика, планирую добавить этот модуль в дистрибутив
Bot
Yandex Bot Yandex Bot is online now
 
Join Date: 05.05.2005
Реклама на форуме А что у нас тут интересного? =)
 
 
Svetlana
Эксперт
 
Svetlana's Avatar
Default
0

kerk, а возможно ли сделать захват текущего кадра? А далее количество кадров от выбранной "точки отсчёта". Мне кажется, секунды в данном случае в принципе не имеют смысла, мы выбираем нужный кадр вручную.
 
 
Smalesh
В Черном списке
Default
0

kerk, ну а если так
PHP Code:
$start_frame 0.05*$framecount
$frames_left 
$framecount $start_frame
$duration_left $frames_left $frame_rate
Т.е. по умолчанию брать не фиксированный кадр, а 0.05 от всех кадров, а остальные 0.95 делить на части как и задумано.

Quote:
Originally Posted by Svetlana View Post
Мне кажется, секунды в данном случае в принципе не имеют смысла, мы выбираем нужный кадр вручную.
А там разве есть секунды? Насколько я понял, там все в кадрах. Но вот перевести их в секунды не помешало бы, это будет куда более понятно для рядового пользователя.

Словом, хорошо бы начало первого кадра в секундах и первоначальное значение пусть зависит от длины самого видео. А если нужно захватить первым кадром название видео, смотрим время, указываем в настройках. Очень желательно, что бы это редактировалось после сохранения видео, с возможностью заново пересоздать изображения с новыми настройками. Имхо.
 
 
Sellrion
Kernel panic
 
Sellrion's Avatar
Default
0

Quote:
Originally Posted by kerk View Post
не знаю почему, но мне не очень нравится этот алгоритм =)
Почему же он тебе не нравится?)) Кстати забавно, что кому-то вообще в голову пришла идея заставить пользователя считать кадры. Это гениально.))
 
 
kerk
k0t
 
kerk's Avatar
Default
0

Quote:
Originally Posted by Smalesh View Post
А там разве есть секунды?
да, есть, $this->duration как раз кол-во секунд, я просто не указал это в первом посте
переделал я форму в шаблоне, теперь узер может выбрать не с какого кол-ва кадров начать выборку, а именно секунды



если поле "начать" пустое или ноль, начинается с первой секунды
Quote:
Originally Posted by Smalesh View Post
Очень желательно, что бы это редактировалось после сохранения видео
картинки можно выдрать в любое время* и с разными значениями полей формы
Quote:
Originally Posted by Svetlana View Post
возможно ли сделать захват текущего кадра?
посмотреть текущее время и задать его в форме, правда минуты придется перевести в секунды, да, это несколько неудобно, но в противном случае, если распарсить весь ролик и делать раскадровку без сохранения, это дикая нагрузка
там и так функция выдирающая ресурс из ролика, тяжелая ппц
почитал в инете об этом расширении, народ ругается на тормоза в функции $frame->toGDImage(), советуют переходить на бинарники и другое расширение PHP-FFMPEG (не путать с этим FFMPEG-PHP )

вобщем пока сделал так, но тормоза все равно остались, функция не пропускает кадры до следующего нужного, а читает стрим дальше
PHP Code:
// $start_at - начинать с секунды
// $frame_rate - fps
$start_frame round($start_at $frame_rate);
$frames_left $framecount $start_frame;
$calc = array('start' => $start_frame'step' => intval($frames_left $save_frames));
// $calc['start'] - начать сохранение с фрейма
// $calc['step'] - интервал
// затем в другой функции, в цикле собираем массив
$next $calc['start'];
$count 0;
while((
$key_frame $this->movie->getFrame($next)) != false AND ++$count <= $this->save_frames)
{
      
$data['resource']["{$this->movie->getFrameNumber()}"] = $key_frame->toGDImage();
      
$next += $calc['step'];
}
return 
$data
т.е. делим оставшиеся кадры на кол-во сохраняемых картинок, получаем интервал
прикручивал и слайдер от YUI с двумя ползунками, что бы можно было выбирать "откуда начать" и "где закончить", но потом снес нафик, если ролик длинный, то шкала-ползунок вылезает за края экрана
а делать с overflow: hidden тоже криво получается

*в правах группы кол-во разрешенных картинок к файлу должно быть 0 (неограничено)
 
 
kerk
k0t
 
kerk's Avatar
Default
0

Sellrion,
сарказм хорош в меру
а по теме?
 
 
Svetlana
Эксперт
 
Svetlana's Avatar
Default
1

Quote:
Originally Posted by Smalesh View Post
А там разве есть секунды? Насколько я понял, там все в кадрах. Но вот перевести их в секунды не помешало бы, это будет куда более понятно для рядового пользователя.
Я не код имею в виду, а логику пользователя. Ловить нужный кадр, ориентируясь на секунды - всё равно что пытаться определить положение рисового зёрнышка, пользуясь метровой линейкой.
Можно, конечно, задать с её помощью нужную область поиска, но дальше - искать другие измерительные устройства.

Svetlana добавил 04.01.2015 в 16:11
Quote:
Originally Posted by kerk View Post
переделал я форму в шаблоне, теперь узер может выбрать не с какого кол-ва кадров начать выборку, а именно секунды
Да, так и представлялось.

Svetlana добавил 04.01.2015 в 16:31
Я использую (довольно примитивно) AVS Video Editor, пользователь там оперирует временем, но время указано до тысячной секунды. При этом всё равно при редактировании есть опция "на 1 кадр вперёд/назад" (кнопки со стрелками). Если бы использовала только время, растерялась бы.

Last edited by Svetlana : 01-04-2015 at 05:32 PM. Reason: Добавлено сообщение
 
 
kerk
k0t
 
kerk's Avatar
Default
1

Quote:
Originally Posted by Svetlana View Post
но время указано до тысячной секунды.
можно и в форме сделать тысячные, но это будет только путать пользователя =)
за 1 секунду в среднем проскакивает 25-30 кадров (fps - frames per second)
так вот как лучше все таки?
посекундно делать выбор в форме или покадрово?
 
 
Sellrion
Kernel panic
 
Sellrion's Avatar
Default
3

kerk, да не сарказм это был.) Кроме того, что пользователю предлагается считать кадры, я не понимаю чем тебя не устраивает первый алгоритм. Вообще, я бы подумал над другим вопросом: это все зачем?) Цель в том, чтобы где-то в интерфейсе показывать несколько кадров из загруженного ролика? Тогда зачем вообще пользователю эти настройки времени, кадров и д.р.? Пользователь, на мой взгляд, должен иметь возможность показывать или не показывать кадры у себя где-то там в видео галерее. Все. Если он включил показ кадров, то какую прикладную задачу решает возможность указать стартовый фрейм и количество кадров? С таким же успехом это может произойти автоматически. Если говорить о прикладных задачах, то пользователю может быть предложено выбрать обложку для видео из нескольких выбранных автоматически кадров или пользователю может быть предложено вообще самостоятельно указать необходимые кадры для отображения, тогда, как показано в посте @Svetlana, нужно показывать плеер с пошаговой прокруткой и т.д.

Исходя из вышесказанного, такие настройки целесообразны для админки глобально. С какого кадра выбирать, сколько кадров показывать у каждого и через какой шаг.
 
 
Smalesh
В Черном списке
Default
3

Quote:
Originally Posted by kerk View Post
посекундно делать выбор в форме или покадрово?
Оффтоп

Quote:
Originally Posted by Svetlana View Post
пользователь там оперирует временем, но время указано до тысячной секунды.
А номера кадра там нет?

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

Smalesh добавил 04.01.2015 в 17:01
Quote:
Originally Posted by Sellrion View Post
может быть предложено вообще самостоятельно указать необходимые кадры для отображения
Под каждым изображением поле с указанием времени, с возможностью задать свое значение и кнопка сохранить? А первоначально кадры разбивать автоматом по настройкам админки?

Last edited by Smalesh : 01-04-2015 at 06:02 PM. Reason: Добавлено сообщение
 


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off




All times are GMT +4. The time now is 12:28 PM.


Powered by vBulletin® Version zEdition
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.