среда, 30 октября 2013 г.

FFMPEG - траблы с порядком аргументов в командной строке

По моему уже наступал на эти грабли с командной строкой FFmpeg, но вспомнил только когда снова разобрался что к чему, так что надо записать.

Вырезаю кусок из видеофайла так:
ffmpeg -ss 01:04:53 -t 00:01:25 -i input.mp4 output.mp4
Обработка вырезаемого куска начинается сразу же, создается output.mp4, реального видео в нем 1 мин 25 сек, но проигрыватель VLC почему то показывает, что там 11 мин 27 сек. и MkvMerge отказывается соединять этот файл с другим вроде такого же формата. Воспроизведение в VLC впрочем автоматически прекращается через 1 мин 25 сек.

Если же сделать так:
ffmpeg -i input.mp4 -ss 01:04:53 -t 00:01:25 output.mp4
то ffmpeg некоторое (довольно длительное) время вхолостую пережевывает входной файл со 100% загрузкой процессора, такое впечатление, что так он подбирается к отметке в 1 час 4 мин 53 сек, с которой надо начать вырезать фрагмент и только потом начинает реально выкусывать нужные 1 мин 25 сек. Зато никаких проблем ни с отображением длительностьи выходного файла, ни с его объединением в MkvMerge.

суббота, 26 октября 2013 г.

Как скачать видео со sportbox.ru

Да собственно также как с onlinetv.ru :)

Берём RTMPDumpHelper и RTMPDump и распаковываем все в один каталог.

Запускаем RTMPDumpHelper.exe, он автоматически ставит на прослушку все обращения на порт 1935 и запускает rtmpsuck.exe из комплекта RTMPDump, которому будет их переадресовывать.



Запускаем Firefox, открываем страницу с видео, например http://news.sportbox.ru/Vidy_sporta/edinoborstva/spbvideo_NI409958_Kendo-Vsemirnie-igri-boevih-iskusstv-Deni-3.
В браузере смотрим видео, а в окне rtmpsuck.exe видим параметры обращения к RTMP серверу, в отличии от online.tv здесь запрос один, без переадресовки:
...
Processing connect
app: xarvod/_definst_
flashVer: WIN 11,9,900,117
swfUrl: http://news.sportbox.ru/sites/all/libraries/spb_movie/_spbver_/player.swf
tcUrl: rtmp://sportbox-vod.cdn.ngenix.net:1935/xarvod/_definst_
pageUrl: http://news.sportbox.ru/vdl/player?nid=409958
Playpath: services/ngenix_validator?id=20131018135417_kendovsemirnyjeigrybojevyhiskuss_2_001.mp4/MTM4Mjc2NzA1OS9iMDc5MDk4YzNhLzg1MTJiYjI0NTczMWU3YjU1YTFkNDhjMmEwODhjNGQyMTkyODRmODA=
Saving as: ngenix_validator
WARNING: ignoring too small audio packet: size: 0
INFO: Metadata:
...

В это же время проигрываемое видео автоматически сохраняется в файл, но поскольку процесс длительный есть риск случайно закрыть одну из программ, участвующих в процессе и придется начинать всё сначала, поэтому я предпочитаю скопировать параметры tcUrl, Playpath и swfUrl из окошка rtmpsuck.exe в команду для FFmpeg:
ffmpeg -i "rtmp://sportbox-vod.cdn.ngenix.net:1935/xarvod/_definst_ \
Playpath=services/ngenix_validator?id=20131018135417_kendovsemirnyjeigrybojevyhiskuss_2_001.mp4/MTM4Mjc2NzA1OS9iMDc5MDk4YzNhLzg1MTJiYjI0NTczMWU3YjU1YTFkNDhjMmEwODhjNGQyMTkyODRmODA= \
swfUrl=http://news.sportbox.ru/sites/all/libraries/spb_movie/_spbver_/player.swf" -c copy kendo_1_001.mp4

Через час нужное видео будет на диске.

з.ы. как всегда обратные слэшики из команды лучше выкосить, не все командные оболочки их правильно понимают.

вторник, 8 октября 2013 г.

git-svn - смена url svn-репозитория

Прикопаю пожалуй что делать если svn репозиторий переехал на другой сервер. С локальной копией svn всё просто и понятно - там для этого есть команда Перебазировать. А вот с git репозиторием, заточенным на двусторонний обмен с svn придется делать финт ушами, описанный здесь:

  • в файле .git/config надо найти url svn репозитория и поменять его на новый
  • выполнить команду git svn fetch - при этом надо обязательно получить хотя бы один новый коммит из svn репозитория
  • в файле .git/config поменять url svn репозитория назад на старый
  • выполнить команду git svn rebase -l
  • в файле .git/config окончательно заменить url svn репозитория на новый
  • теперь можно делать git svn rebase или git svn dcommit, должен быть нормальный обмен с svn репозиторием на новом месте

среда, 2 октября 2013 г.