За последние 24 часа нас посетили 54152 программиста и 1723 робота. Сейчас ищут 873 программиста ...

ffmpeg + перекодировка видео + flashplayer

Тема в разделе "Прочее", создана пользователем Elkaz, 7 янв 2010.

  1. Elkaz

    Elkaz Старожил
    Команда форума Модератор

    С нами с:
    26 июн 2006
    Сообщения:
    3.373
    Симпатии:
    0
    Адрес:
    Баку, Азербайджан
    Нужно организовать потоковое (streaming) вещание на сайте.
    Сайт - VDS на данный момент, но думаю потянет несколько десятков клиентов онлайн. В любом случае, вопрос сейчас не в этом. Нужны ваши советы по следующим вопросам:

    а) Как перекодировать видео в формате avi в flv?
    У меня ОС Ubuntu, следовательно можно попробовать через консоль вызвать:
    Код (Text):
    1.  
    2. elkaz@elkaz-desktop:/var/www/trash$ ffmpeg -i sg1.avi sg1.flv
    3. FFmpeg version SVN-r19352-4:0.5+svn20090706-2ubuntu2, Copyright (c) 2000-2009 Fabrice Bellard, et al.
    4.   configuration: --extra-version=4:0.5+svn20090706-2ubuntu2 --prefix=/usr --enable-avfilter --enable-avfilter-lavf --enable-vdpau --enable-bzlib --enable-libgsm --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libvorbis --enable-pthreads --enable-zlib --disable-stripping --disable-vhook --enable-gpl --enable-postproc --enable-swscale --enable-x11grab --enable-libdc1394 --extra-cflags=-I/build/buildd/ffmpeg-0.5+svn20090706/debian/include --enable-shared --disable-static
    5.   libavutil     49.15. 0 / 49.15. 0
    6.   libavcodec    52.20. 0 / 52.20. 0
    7.   libavformat   52.31. 0 / 52.31. 0
    8.   libavdevice   52. 1. 0 / 52. 1. 0
    9.   libavfilter    0. 4. 0 /  0. 4. 0
    10.   libswscale     0. 7. 1 /  0. 7. 1
    11.   libpostproc   51. 2. 0 / 51. 2. 0
    12.   built on Oct 13 2009 22:15:16, gcc: 4.4.1
    13. Input #0, avi, from 'sg1.avi':
    14.   Duration: 01:32:58.76, start: 0.000000, bitrate: 954 kb/s
    15.     Stream #0.0: Video: msmpeg4, yuv420p, 640x360, 25 tbr, 25 tbn, 25 tbc
    16.     Stream #0.1: Audio: mp3, 48000 Hz, mono, s16, 96 kb/s
    17. File 'sg1.flv' already exists. Overwrite ? [y/N] y
    18. Output #0, flv, to 'sg1.flv':
    19.     Stream #0.0: Video: flv, yuv420p, 640x360, q=2-31, 200 kb/s, 90k tbn, 25 tbc
    20.     Stream #0.1: Audio: adpcm_swf, 48000 Hz, mono, s16, 64 kb/s
    21. Stream mapping:
    22.   Stream #0.0 -> #0.0
    23.   Stream #0.1 -> #0.1
    24. [adpcm_swf @ 0x850f410]Sample rate must be 11025, 22050 or 44100
    25. Error while opening codec for output stream #0.1 - maybe incorrect parameters such as bit_rate, rate, width or height
    Гугление по сабжу проблему решить не помогло.

    б) Второй вопрос собственно по самому player'у и способу отдачи ролика через РНР. Я помню где-то год назад поднималась тема по этому вопросу, но что-то я не смог найти. Плюс думаю, что за год многое могло поменяться. В данный момент я просто зашёл на сайт, где есть один из подобных плееров, посмотрел информацию о нём (название), вбил в гугл и скачал собственно сам плеер. Но может кто-нибудь посоветует другой?
     
  2. Alost

    Alost Активный пользователь

    С нами с:
    7 фев 2009
    Сообщения:
    335
    Симпатии:
    0
    Адрес:
    Город вокруг невы
    Недавно начал изучать Flash.Насколько я понял все эти плееры просто оболочка для родного компонента отображения видео.
     
  3. Elkaz

    Elkaz Старожил
    Команда форума Модератор

    С нами с:
    26 июн 2006
    Сообщения:
    3.373
    Симпатии:
    0
    Адрес:
    Баку, Азербайджан
    Первый вопрос отпадает - Олег помог.
    Alost, ну да, я оболочку и ищу :)

    Вопросы решены, спасибо Олегу :)
    Тема закрыта
     
  4. Elkaz

    Elkaz Старожил
    Команда форума Модератор

    С нами с:
    26 июн 2006
    Сообщения:
    3.373
    Симпатии:
    0
    Адрес:
    Баку, Азербайджан
    Теперь встал такой вопрос - нужно каким-то образом учитывать количество просмотренных видео (т.е вести счёт, было просмотрено видео или нет). На сайте плеера я не нашёл никакой информации, о возможности подобного расширения функционала. Следовательно, надо решать как-то по другому. Единственное решение, которое я вижу - в div, внутри которого находится видео установить onclick событие, которое будет звать php файл. Хотя есть ещё вариант, который бы вызвал этот файл где-то на середине фильма (т.е при помощи setInterval/setTimeout функций).
     
  5. Silicium

    Silicium Активный пользователь

    С нами с:
    1 апр 2008
    Сообщения:
    205
    Симпатии:
    0
    Адрес:
    Киев
    А можно посмотреть сайт плеера? Вопросы решены, а как? ;)
     
  6. Alost

    Alost Активный пользователь

    С нами с:
    7 фев 2009
    Сообщения:
    335
    Симпатии:
    0
    Адрес:
    Город вокруг невы
    Elkaz
    Вижу несколько вариантов.Первый это контролировать отдачу файлов, кому сколько раз ушли они.
    Второй это допилить исходник плеера, дописать функции анализатора просмотра.
     
  7. Elkaz

    Elkaz Старожил
    Команда форума Модератор

    С нами с:
    26 июн 2006
    Сообщения:
    3.373
    Симпатии:
    0
    Адрес:
    Баку, Азербайджан
    Alost
    Ты имеешь ввиду через access.log контролировать?
    Второй вариант совсем не айс, потому что я не знаю, где надыбать его исходники :)

    Silicium
    Есть такой добрый человек - Горбунов Олег :) Все вопросы к нему :)
     
  8. Volt(220)

    Volt(220) Активный пользователь

    С нами с:
    11 июн 2009
    Сообщения:
    1.640
    Симпатии:
    1
    Кмк, можно файл и php скриптом отдавать.
     
  9. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
  10. ты пробовал отдавать видео поток пхп файлом? сразу скажу - лучше не пробуй.
     
  11. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    я пробовал.
    исключительно в познавательных целях. после изрядной доли пивка.

    прикольно...

    гыгыгы...

    Када файл 1.4Г

    буагага...
     
  12. nimistar

    nimistar Активный пользователь

    С нами с:
    30 май 2007
    Сообщения:
    919
    Симпатии:
    0
    440Hz - гм раздавал файлы по 700 метров - проблем больших не увидел ... раздавал-то по кусочкам .. зачем сразу вес жрать ?

    но к сабжу это не относится .. все таки пхп не для того ...
     
  13. Костян

    Костян Активный пользователь

    С нами с:
    12 ноя 2009
    Сообщения:
    1.724
    Симпатии:
    1
    Адрес:
    адуктО
    этот неплохой вариант, если точность измерения не сильно строгая....
    Только вот насчет апдейста в середине фильна - это фигня.
    Как понять количество "простомтров"?
    Если я смотрю и перемотнул 2 секунды, 5 мин, пол часа - это я посмотрел или не посмотрел?
    А если я открыл страницу и увидел один кадр - кадр предпросмотра: это я посмотрел или нет?
    Так что тут может даже и не в клике то дело....
     
  14. Alost

    Alost Активный пользователь

    С нами с:
    7 фев 2009
    Сообщения:
    335
    Симпатии:
    0
    Адрес:
    Город вокруг невы
    Elkaz
    Flash это интерпретатор,и в swf файлах лежит исходный код.Достается легко с использованием "декомпиляторов".

    По поводу access.log
    Если радачей файлов апач занят, то его логи контролировать.
    если ngix, то его можно настроить на логирование запросов на файл.

    Лично я склоняюсь к контролю со стороны плеера.Запрос файла не значит что его посмотрели, это значит что нажали клавишу play.
     
  15. Elkaz

    Elkaz Старожил
    Команда форума Модератор

    С нами с:
    26 июн 2006
    Сообщения:
    3.373
    Симпатии:
    0
    Адрес:
    Баку, Азербайджан
    Volt(220)
    Не айс

    Simpliest
    Нет, погляжу, спасибо.
    А там есть, то что мне нужно, или просто дал ссылку на посмотреть? :)

    Костян
    Я вот тоже не знаю, как с этим быть. По сути конец файла - это когда закончилось видео. Но могут найтись особо умные, которые не будут просматривать титры и просто будут переходить к следующему видео. А мне критично знать сколько видео просмотрел конкретный пользователь.
     
  16. пользователь получил 70% контента = посмотрел.
    тогда возможно и есть резон
    причом необязательно что бы это делал именно пхп. можно сделать маленькое CGI чиста для отдачи.
     
  17. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    Т.е. я включил его и пошел в туалет и мне зачтется просмотр? :)

    Я же не знаю что тебе нужно. По ссылке настраиваемый флеш-плейер. Причем на сайте говорят что есть АПИ для работы с яваскриптом. Но сам я с видео вообще не работал.
     
  18. Alost

    Alost Активный пользователь

    С нами с:
    7 фев 2009
    Сообщения:
    335
    Симпатии:
    0
    Адрес:
    Город вокруг невы
    Elkaz
    Если интересна статистика то, изучать надо что пользователь видел.
    К примеру на стороне клиента, в плеере бьем timeline на N ко-лво частей,и логируем во сколько по времени текущий кадр попал очередной "кусок".Если за 2 секунды по всем прошелся, значит пробежались по быстрому и все.Если время перехода совпадает с длительностью "кусков" то все ок. и так далее по этому принципу.

    Киньте ссылку на ваш плеер, поковыряю его на предмет добавления такого функционала.

    Вот кстати на сайте что дал Simpliest ветка форума о логировании действий пользователя http://flowplayer.org/forum/3/13127
    Также там есть плагин для логирования в ГуглАНалитикс.
     
  19. Костян

    Костян Активный пользователь

    С нами с:
    12 ноя 2009
    Сообщения:
    1.724
    Симпатии:
    1
    Адрес:
    адуктО
    я думаю, если кто-то нажал Play и поток пошел и пофиг что потом случилось значит посмотрел и всё тут...
     
  20. Alost

    Alost Активный пользователь

    С нами с:
    7 фев 2009
    Сообщения:
    335
    Симпатии:
    0
    Адрес:
    Город вокруг невы
    Костян
    Не правильно,я включаю, смотрю первые 10-15 сек, мотаю в середину, смотрю если не УГ, то смотрю сначала, иначе закрываю.
    Еще бывает отматываю ролик к концу, чтоб сразу ввелся список других роликов.
    Смотря ролики в ленте новостей, я их по мере пролистования врубаю и ставлю на паузу, чтоб начали скачиваться.Потом повторяютсья дествия описаные ранее.
     
  21. Костян

    Костян Активный пользователь

    С нами с:
    12 ноя 2009
    Сообщения:
    1.724
    Симпатии:
    1
    Адрес:
    адуктО
    Alost
    ну и что, что то не понял???
     
  22. Alost

    Alost Активный пользователь

    С нами с:
    7 фев 2009
    Сообщения:
    335
    Симпатии:
    0
    Адрес:
    Город вокруг невы
    Костян
    Загрузил еще не значит что посмотрел.
     
  23. Костян

    Костян Активный пользователь

    С нами с:
    12 ноя 2009
    Сообщения:
    1.724
    Симпатии:
    1
    Адрес:
    адуктО
    ну можно по % трафика судить тогда 30 есть значит +1
     
  24. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    Alost
    плейер промотался до конца. Но я не видел ничего кроме титров :)
     
  25. Alost

    Alost Активный пользователь

    С нами с:
    7 фев 2009
    Сообщения:
    335
    Симпатии:
    0
    Адрес:
    Город вокруг невы
    Simpliest
    Все относительно.

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

    1.Есть обращение к файлу.значит ролик посмотрели.
    2.Скачали N процентов ролика,значит ролик посмотрели.
    3.Ползунок текущего кадра прошел через N процентов абстрактных частей ролика(или проще общее время воспроизведения ролика).

    Так вот, ваш поход в туалет создает ошибку в результата любого из вариантов.
    Мое поведение даст ошибку в 1м и 2м методе.
    Случайный клик на плеер даст ошибку в 1м методе.

    Составив несколько моделей поведения пользователей, можно проверить какой из методов меньше врет.