- Итак, timeshift устойчиво работает, однако для его демонстрации надо активно допиливать плеер. Штатные flowplayer и т.п. итак очень плохо работают с RTMP и точно не справятся с этой задачей.#609627from Adium91170111, 22 months ago
Replies (75)
- @kutu:пишу тестовый плеер чтобы смотреть как работает обычный fms и твой сервер с тестовым видео video.mp4
есть такой момент:
— стартим видео
— плей пауза работают нормально
— если видео остановить, затем попытаться снова запустить, то режим в плэй переходит но видео не идет, выход либо нажать пауза+плэй, либо перемотать куда-нибудь
— и при stop, сервер не шлет сигнал seek в 0, то есть fms сам меня перемотает в ноль
video.ts я вообще не могу остановить, оно вроде как стопится, но продолжает играть без звука
посмотри пример kutu182.narod.ru
вверху три кнопки выбираешь ими что смотреть
я использую osmf библиотеку, которая уже становится стандартом для написания плееров#609627/1from E8578AE4, 22 months ago - @maxlapshin:@kutu О, круто, обязательно посмотрю. Я знаю, что поведение erlyvideo отличается от FMS-а из-за недокументированности RTMP#609627/2from Adium327F4675, 22 months ago, in reply to /1
- @kutu:@maxlapshin это понятно, просто нужно максимально подражать поведению, иначе только хаками решать проблемы, либо писать свой костыль из NetConnection и NetStream, но после релиза osmf этим заниматься уже никто не захочет, а релиз уже скоро
вобщем если понравится плеер, то можем потом допиливать его под твои нужды#609627/3from E8578AE4, 22 months ago, in reply to /2 - @maxlapshin:@kutu Конечно, поведение FMS — эталонное и нравится или не нравится, буду приближаться к нему.#609627/4from Adium327F4675, 22 months ago, in reply to /3
- @maxlapshin:@7thsky проще всего воспользоваться новым синтаксисом для rewrite: erlyvideo.org
timeshift задается в милисекундах#609627/6from Adium327F4675, 22 months ago, in reply to /5 - @7thsky:@maxlapshin я про seek спрашиваю, новый стрим открывать?#609627/7from android7d96040ddf89, 22 months ago, in reply to /6
- @maxlapshin:@7thsky нет, в текущем нетстриме seek назад. Сейчас штатный плеер делает seek исходя из NetStream.time#609627/8from Adium327F4675, 22 months ago, in reply to /7
- @maxlapshin:@kutu плеер мне, конечно понравился, раз он на чём-то стандартном построен. Если ты не против, то вполне можно включить его в штатную поставку вместо моего плеера#609627/9from Adium327F4675, 22 months ago, in reply to /3
- @7thsky:@maxlapshin Нет, я про проигрывание с таймшифтом, например я проигрываю с таймшифт скажем в 30 минут, хочу переместится на 15 минут, у клиента я должен открыть новый стрим или будет работать через стандартную команду seek, если да то какой параметр туда задать#609627/10from Adium6CAD9185, 22 months ago, in reply to /8
- @maxlapshin:@7thsky stream = new NetStream(...);
stream.play("camera");
stream.seek(-300000); — сдвинется на 5 минут назад от того места, где начали смотреть.
Очевидно, надо что бы буфер таймшифта уже наполнился.#609627/11from Adium327F4675, 22 months ago, in reply to /10 - @kutu:@maxlapshin вообщем первая версия готова kutu182.narod.ru
через flashvars параметр url, задает "что играть" по умолчанию, см html
ссылка на swf kutu182.narod.ru
проблемы которые я нашел:
1. mp4, play + stop + play, не играет видео
2. mp4, по окончании видео, нет seek в 0, не срабатывает complete
3. ts, play + stop, видео продолжает играть#609627/13from E7430785, 22 months ago, in reply to /9 - @maxlapshin:@kutu а ты не хочешь исходники добавить в erlyvideo?#609627/14from AdiumD68652D3, 22 months ago, in reply to /13
- @maxlapshin:@kutu можешь дать мне, я выложу. Могу научить пользоваться гитхабом.#609627/16from AdiumD68652D3, 22 months ago, in reply to /15
- @kutu:@maxlapshin лучше уж научится, если будем дальше его доделывать, у меня венда#609627/17from E7430785, 22 months ago, in reply to /16
- @maxlapshin:@kutu erlyvideo.org туда дополню. Ещё точно надо поставить putty для генерации ключей. После этого надо зарегаться на гитхабе#609627/19from AdiumD68652D3, 22 months ago, in reply to /18
- @kutu:@maxlapshin git установлен, putty есть
регился на гите спросил меня ssh ключ, ничего не ввел, так как можно было не вводить#609627/20from E7430785, 22 months ago, in reply to /19 - @maxlapshin:@kutu Надо теперь с помощью putty сгенерить приватный и публичный ключ. Публичный залить на гитхаб#609627/21from AdiumD68652D3, 22 months ago, in reply to /20
- @maxlapshin:@kutu теперь отфоркни github.com и залей новый плеер в wwwroot/player#609627/23from AdiumD68652D3, 22 months ago, in reply to /22
- @maxlapshin:@maxlapshin с гитом сам разберешься или подсказать?#609627/24from AdiumD68652D3, 22 months ago, in reply to /23
- @kutu:@maxlapshin ковыряюсь
— нажал кнопку форк
— склонировал себе свой форк хотя он ругнулся вот так
Initialized empty Git repository in d:/git/erlyvideo/.git/
The authenticity of host 'github.com (207.97.227.239)' can't be established.
RSA key fingerprint is 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48.
Are you sure you want to continue connecting (yes/no)?
— удалил что есть в player, залил туда свои сорсы и swf
— сделал commit, затем push
на сайте папки player теперь не видать#609627/25from E7430785, 22 months ago, in reply to /24 - @maxlapshin:@kutu github.com тебе надо теперь сделать git add player#609627/26from AdiumD68652D3, 22 months ago, in reply to /25
- @maxlapshin:@kutu круто! Я тогда завтра вмерджу. И ещё: habrahabr.ru#609627/28from AdiumD68652D3, 22 months ago, in reply to /27
- @kutu:@maxlapshin а мне index.html тоже править или это ты сам будешь?
и если я щас поставлю настройки crlf false, то он заново закоммитит файлы?#609627/29from E7430785, 22 months ago, in reply to /28 - @maxlapshin:@kutu RTMP имеет механизм оповещения о конце стрима, точнее сразу три механизма, Адоб не мог по-другому: это посылка metadata onPlayStatus: NetStream.Play.Complete, вызов функции onStatus с кодом NetStream.Play.Stop и посылка control сообщения STREAM_END.
Последнее самое главное. Надо послать его на том же стриме, что и заканчивается сейчас. Проблема оказалась в том, что я слал его не по тому же каналу, что и видео. В итоге буфер ещё не доигран, а флеш уже останавливается. Оказалось, что надо посылать его на том же канале и желательно в режиме SAME_SOURCE, т.е. с указанием нулевой дельты времени.#609627/30from AdiumB743D6A3, 22 months ago, in reply to /13 - @kutu:@maxlapshin я сделал симлинк на папку-проект, чтобы не копировать каждый раз файлики, поэтому теперь swf будет лежать в bin-release
могу ли я билдить проект прямо в моем гит репозитории, не будет он потом билденные файлы заливать на сервер?#609627/31from 23D7B4A2, 22 months ago, in reply to /30 - @kutu:@7thsky mp4 проблема перемоткой
— мотаем вперед
— мотаем чуть чуть назад
получаем что currentTime больше чем общая длина ролика (duration)
currentTime :: duration
0.302 :: 599.6078902092587
335.294 :: 599.6078902092587 (перемотал)
17039.3 :: 599.6078902092587 (отматал назад)
ещё я изменил index.html что бы работало
и изменил в Makefile ERL_LIBS, чтобы работало под виндой, заменил : на ; потому как системную переменную он не подхватывает#609627/33from 23D7B4A2, 22 months ago, in reply to /32 - @maxlapshin:@kutu я погляжу, как там формируется currentTime, опять какая-нибудь скрытая фича FMS-а.
Насчёт ; или : — я попробую как-то это сделать по-универсальнее.#609627/34from Adium51B9FDBA, 22 months ago, in reply to /33 - @maxlapshin:@kutu наверное всё таки autocrlf надо включить обратно. Makefile весь закоммитился с CRLF вместо LF#609627/35from Adium4F0E99BE, 22 months ago, in reply to /33
- @kutu:@maxlapshin ну а index.html показал только пару исправленных строк, все равно поставить crlf=true?#609627/36from 23D7B4A2, 22 months ago, in reply to /35
- @maxlapshin:@kutu Чёрт знает, давай подберем правильные настройки. А ты чем правил Makefile? Короче, если будут оставаться только LF, то всё ок#609627/37from Adium4F0E99BE, 22 months ago, in reply to /36
- @kutu:@maxlapshin notepad, тем же чем и index.html#609627/38from 23D7B4A2, 22 months ago, in reply to /37
- @kutu:@maxlapshin закоммитил, для makefile явно указал lf и пересохранил его#609627/39from 23D7B4A2, 22 months ago, in reply to /37
- @maxlapshin:@kutu а попробуй тот bat, который я внёс сейчас в репо. Да, я сейчас сделаю отдельный проект для видеоплеера, который сабмодулем запихаю в erlyvideo#609627/40from Adium4F0E99BE, 22 months ago, in reply to /39
- @kutu:@maxlapshin я через cygwin запускаю
а bat выдает:
{error_logger,{{2010,3,24},{17,29,18}},"Can't set long node name!\nPlease check your configuration\n",[]}#609627/41from 23D7B4A2, 22 months ago, in reply to /40 - @maxlapshin:@kutu ага, раз через цигвин, тогда можешь мне сказать результат uname? Я сделаю Makefile пригодный для тебя тоже#609627/42from Adium4F0E99BE, 22 months ago, in reply to /41
- @kutu:@maxlapshin $ uname -a
FreeBSD 6.2-RELEASE FreeBSD 6.2-RELEASE #0: Fri Jan 12 10:40:27 UTC 2007 root@dessler.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC i386#609627/43from 23D7B4A2, 22 months ago, in reply to /42 - @maxlapshin:@kutu это так в цигвине?? А почему тогда не канают двоеточия как разделители?#609627/44from Adium4F0E99BE, 22 months ago, in reply to /43
- @kutu:@maxlapshin сам удивляюсь, в echo $PATH пути разделены двоеточиями#609627/45from 23D7B4A2, 22 months ago, in reply to /44
- @maxlapshin:@kutu я думаю это связано с тем, что erl как бы не в цигвине запущен. Попробуй батник запустить не в цигвине#609627/46from Adium4F0E99BE, 22 months ago, in reply to /45
- @kutu:@maxlapshin не в цигвине и запускал, через cmd стандартный#609627/47from 23D7B4A2, 22 months ago, in reply to /46
- @maxlapshin:@kutu задай хостнейм системе английскими буквами и обязательно с точкой#609627/48from Adium4F0E99BE, 22 months ago, in reply to /47
- @maxlapshin:@kutu Start -> My Computer -> что-то там дальше и имя компьютера#609627/50from Adium4F0E99BE, 22 months ago, in reply to /49
- @kutu:@maxlapshin имя компьютера не может содержать пробелы и точки, а так оно у меня на англ.#609627/51from 23D7B4A2, 22 months ago, in reply to /50
- @maxlapshin:@kutu тогда поменяй в батнике -name ems на -sname ems#609627/52from Adium4F0E99BE, 22 months ago, in reply to /51
- @maxlapshin:@kutu сейчас я удалю всю папку wwwroot/player и сделаю её сабмодулем. git submodule update --init
Потом зайди в wwwroot/player, отредактируй .git/config
Замени git://github.com/erlyvideo/erlyplayer на git@github.com:erlyvideo/player и сделай git checkout master
Я добавил тебе права на коммит прям в плеер#609627/54from Adium4F0E99BE, 22 months ago, in reply to /53 - @maxlapshin:@maxlapshin забирай свежий коммит и переползай в отдельный репо. Ничего форкать не надо, коммить прям в erlyvideo/erlyplayer#609627/55from Adium4F0E99BE, 22 months ago, in reply to /54
- @kutu:@maxlapshin сделал
git pull upstream master
git submodule update --init
из player .git скопировал в свой проект
удалил player и сделал симлинк
в player/.git/config заменил url на git@github.com:erlyvideo/player
как дальше работать, раньше я пушил так
git push origin master
а теперь как?
что значит переползать в новый репозиторий, нужно что-то делать конкретное?
и ты не исправил name на sname в bat#609627/56from 23D7B4A2, 22 months ago, in reply to /55 - @maxlapshin:@kutu Так, вот меня напугал немного пункт про скопировал .git
После вытаскивания обновленного erlyvideo у тебя в wwwroot/player будет отдельный репозиторий в wwwroot/player. Если ты просто отредактируешь его .git/config (wwwroot/player/.git/config), то сможешь править и коммитить прям оттуда:
cd wwwroot/player
git checkout master
edit .git/config
...
git add .
git commit -m 'msg'
git push
Удалять ничего не надо.#609627/58from Adium4F0E99BE, 22 months ago, in reply to /56 - @kutu:@maxlapshin поздно, мне же нужно симлинк сделать на проект, что на каждую папку и файл теперь его делать внутри папки player#609627/59from 23D7B4A2, 22 months ago, in reply to /58
- @maxlapshin:@kutu поясни, что тебе мешает девелопить прям в wwwroot/player ?#609627/60from Adium4F0E99BE, 22 months ago, in reply to /59
- @kutu:@maxlapshin у меня все проекты флешевские хранятся в отдельной папке, зачем мне их плодить по разным местам#609627/61from 23D7B4A2, 22 months ago, in reply to /60
- @maxlapshin:@kutu Ага, понял. Тогда просто делай чекаут git@github.com:erlyvideo/erlyplayer и симлинк. Инструкции про git checkout master и редактирование .git/config пропусти#609627/62from Adium4F0E99BE, 22 months ago, in reply to /61
- @kutu:@maxlapshin я все равно не понял что мне сейчас делать, симлинк я уже сделал и все процессы по копированию .git что описывал выше
теперь player удалить и сделать git checkout git@github.com:erlyvideo/erlyplayer ?
и что с форком делать? я ваще запутался уже
мне нужны конкретные инструкции, я мало чего сейчас понимаю в git и делаю все наобум#609627/63from 23D7B4A2, 22 months ago, in reply to /62 - @maxlapshin:@kutu Форк на гитхабе тебе больше не нужен, я для плеера сделал отдельный репо.
Идешь в папку, где у тебя флешовые проекты
git clone git@github.com:erlyvideo/erlyplayer
Потом стягиваешь заново erlyvideo уже не из форка, а из мастера. Удаляешь wwwroot/player и делаешь симлинк с твоего проект erlyplayer на player#609627/64from Adium4F0E99BE, 22 months ago, in reply to /63 - @kutu:@maxlapshin все успешно сделано
такой момент, я сделал коммит но не пушил, и забыл сбилдить swf, можно ли последнии коммит срекоммитить?#609627/65from 23D7B4A2, 22 months ago, in reply to /64 - @maxlapshin:@kutu Можно. git add player.swf
git commit --amend
но это только если не пушил иначе разнесешь репозиторий.#609627/66from Adium4F0E99BE, 22 months ago, in reply to /65 - @kutu:@maxlapshin как теперь пушить?
$ git push
fatal: remote error:
You can't push to git://github.com/erlyvideo/erlyvideo.git
Use git@github.com:erlyvideo/erlyvideo.git#609627/67from 23D7B4A2, 22 months ago, in reply to /66 - @maxlapshin:@kutu а как получилось, что ты правишь сам репозиторий erlyvideo ?#609627/68from Adium4F0E99BE, 22 months ago, in reply to /67
- @kutu:@maxlapshin проглядел, запушил наконец-то, проверяй, ничего не сломал ли#609627/69from 23D7B4A2, 22 months ago, in reply to /68
- @maxlapshin:@kutu всё круто! Надо теперь будет к плееру придумать, как сделать что бы он умел делать timeshift в стримах#609627/70from Adium56B04EED, 22 months ago, in reply to /69
- @kutu:@maxlapshin а курентТаймы и duration ты сам посылаешь?#609627/71from 23D7B4A2, 22 months ago, in reply to /70
- @maxlapshin:@kutu да, сам. Но duration-а у потока нет#609627/72from Adium56B04EED, 22 months ago, in reply to /71
- @kutu:@maxlapshin дурейшоном пусть выступает размер таймшифта
то есть ползунок изначально будет сразу в конце
после уже в зависимости от того куда пользователь сможет сиикнутся, выставляй курентТаймы и дурейшаны
если может только назад, то ползунок вконце
если может и назада и вперед, то ползунок где-то по центру, опять же в зависимости от того на сколько можно вперед или назад сиикнутся#609627/73from 23D7B4A2, 22 months ago, in reply to /72 - @maxlapshin:@kutu только есть такая маленькая проблема, что пользователь может прийти, когда таймшифт ещё не насосался. Я по идее должен сообщить плееру текущий размер таймшифта и ожидаемый.
Ожидаемый — вся ширина, текущий — там куда встанет ползунок. Потом потихоньку он доползет до конца и там встанет.#609627/74from Adium56B04EED, 22 months ago, in reply to /73 - @kutu:@maxlapshin ну как бы да
то есть в начала он ползет на ширину таймшифта, и затем можно назад сиикаться
если юзер попытается сиикнутся вперед, то ты игнорь, и выставляй нужный курентТайм#609627/75from 23D7B4A2, 22 months ago, in reply to /74
