1 (2016.01.07 01:49:11 отредактировано tim128)

Тема: Скрипт получения ссылок на ресурс

Изучая подкаст Торрент ТВ (без транскода)(зеркало).hdf по причине вечных с ним проблем обратил внимание на то, что там используется Скрипт получения ссылок на ресурс.  Не смог до конца разобраться по какому событию он вызывается, какие входные данные, что требуется на выходе. Как его отлаживать? По логике он должен запускаться при начале воспроизведения медиа-ресурса. Но похоже он вызывается и при открытии папок. Что самое странное, при начале воспроизведения медиа-ресурса он запускается несколько раз.
Для пробы решил переписать свой подкаст vipsop с использованием Скрипта получения ссылок на ресурс. В этом случае не придется полсотни раз дергать 1ttv.org при каждом обновлении подкаста. Да и обновлять подкаст по нескольку раз надень надобность отпадет. Вставил попутно вывод сообщений, чтобы видеть что происходит. Результат тот же. Скрипт при запуске воспроизведения запустился четыре раза. Почему, зачем?

Прикреплённые файлы сообщения

Снимок.PNG 34.77 kb, скачивалось 458 раз, начиная с 2016.01.06

Sony Bravia KDL-32W705C, Sony Bravia KDL-55W808C

2

Re: Скрипт получения ссылок на ресурс

Скрипт получения ссылки на медиа-ресурс вызывается в случаях:
1) При заходе в папку обновляемого подкаста
2) При запуске ссылки на медиа-ресурс на воспроизведение
3) При получении свойств медиа файла

Срабатывание скрипта при заходе в папку нужно, например, если при обновлении подкаста были созданы только папки. А при заходе в папку вызывается скрипт, который теоретически, создаёт ссылки в этой папке.
Т.к. он же вызывается и при воспроизведении, то в скрипте, обычно, идёт проверка текущего элемента - не папка ли он. Если папка - создаём ссылки, если ссылка - получаем реальную ссылку на файл или поток (или формируем параметры) и заносим это значение в переменную MediaResourseLink.

Т.к. для получения свойств потока или файла нужна реальная ссылка на него, то также этот скрипт запускается. Считывание свойств может происходить в профиле транс кодирования и запускается командой HmsRetreaveProperties в скрипте профиля. Так что всё зависит также и от используемого профиля. И нужно смотреть его код.

Т.к. нет сейчас род рукой компа, не уверен в точности написания встроенных переменных и команд, пишу с телефона и по памяти.

Отлаживать так. Если хотим отладить выполнение при срабатывании при заходе в папку, встаем на эту папку и нажимаем Alt+4. Если хотим отладить получение ссылки при воспроизведении, встаем на ссылку и нажимаем Alt+4.
Чтобы отладить профиль, встаем на ссылку и идём в настройки, находим интересующий профиль транскодирования, открываем его код и начинаем отладку.

Ну, как-то так.

P.S.:
Скрипт вызывается только для пустых папок, в которых пока нет дочерних элементов. Поэтому будет вызываться не всегда при заходе в папку подкаста, а только при первом заходе.

Sony Bravia KDL-32CX523

3

Re: Скрипт получения ссылок на ресурс

WendyH,
Если я правильно вас понял, несколько вызовов скрипта при запуске воспроизведения получается из-за того, что плеер делает несколько запросов к серверу, например, для получения свойств медиа-ресурса, кроме собственно самого воспроизведения. Хотелось бы игнорировать такие "левые" запуски скрипта, зачем дергать сервер с контентом бестолку, да еще каждый раз авторизоваться - еще забанят... Как узнать по какой причине причине вызван скрипт и дергаться только на запуск воспроизведения?

Sony Bravia KDL-32W705C, Sony Bravia KDL-55W808C

4

Re: Скрипт получения ссылок на ресурс

Т.к. что-то типа стека вызовов нет, то и узнать откуда или по какому событию вызван скрипт не представляется возможным. По крайней мере, я не знаю как.
Поэтому сам выходил из положения только расставляя информационные сообщения в скриптах получения ссылки и транскодирования в разных местах.

Для исключения повторного вызова нужно ставить проверки. В профиле не вызывать HmsRetreaveProperties если есть информация о количестве дорожек (значит свойства уже считаны).
В коде скрипта получения ссылки я выходил тем, что заносил в свойства ссылки (в какой-нибудь свободный идентификатор, например PodcastItem[1001]) значение как флаг, говорящий что скрипт выполняется или выполнялся. В общем, похоже, выкручиваться придётся самостоятельно, на сколько фантазии хватит.

Sony Bravia KDL-32CX523

5 (2016.01.09 12:24:53 отредактировано tim128)

Re: Скрипт получения ссылок на ресурс

WendyH,
Трюк с флагом имеет смысл когда знаешь, что первый вызов тот что нужен, а остальные надо игнорировать. А так как нет информации о том какой вызов для чего выполнен, непонятно и какой из них надо выполнить, а какие пропустить. К примеру, у меня не работает сейчас Торрент ТВ (без транскода)(зеркало).hdf. После выбора на плеере канала, скрипт вызывается четыре раза, все четыре раза авторизуется  :), четыре раза грузит страницу канала, четыре раза загружает .acelive и четыре раза возвращает в MediaResourceLink строку такого вида:

cmd://"C:\Users\Tim\AppData\Roaming\ACESTR~1\player\ACE_PL~1.EXE"   --no-crashdump --play-and-exit --language en -Idummy --demuxdump-file="<OUTPUT FILE>" vlc://pause:2 --access=p2p_access "C:\Users\Tim\AppData\Local\Home Media Server\HMS\Temp\НТВ.acelive" :demux=dump

Если обрезать "cmd://" , подставить в <OUTPUT FILE> корректное имя файла, то сохранится вполне нормальный поток. Но в реальности запускаются четыре ace_player.exe, начинается загрузка в ace_engine, но три ace_player.exe быстро сами закрываются и загрузка тут же прекращается. Один ace_player.exe остается висеть в памяти, но ничего не качает. Плеер говорит, что воспроизвести ничего не может. А что вообще можно вернуть в MediaResourceLink? При выполнении скрипта на папках, я просто возвращаю туда пустую строку "" - правильно?

Sony Bravia KDL-32W705C, Sony Bravia KDL-55W808C

6

Re: Скрипт получения ссылок на ресурс

tim128, попробовал у себя. У меня 2 раза запускается скрипт.
Вы же про вот этот подкаст?
Там изначально стоит настройка в подкасте "Оригинальный поток", у меня так телек не показывает, поэтому выставляю эту настройку в "Транскодирование". Тогда при запуске фильма также запускается и профиль транскодирования, который указан в этой настройке подкаста или в настройках устройства для видео (или "Фильмы (Основной)" по-умолчанию).
У вас какой-нибудь профиль транскодирования выставлен? Если да, то какой?
Из-за того, что 3 из 4-х запусков прекращаются быстро, то мне кажется, что это запросы именно на чтение свойств потока.

Однако да, скрипт запускается несколько раз и с этим ничего не поделать.
Я думаю, нужно авторизовываться только по надобности. Авторизация там делается для получения куков.
Значит, нужно куки запоминать где-то. Загружать страницу канала всегда при любом запуске с запомненными куками. Если куки не установлены или протухли, то по содержанию страницы это определять (например, в тексте html искать присутствие login.php или отсутствие какой-нибудь ссылки на личный cabinet.php).
Если загруженная страница выглядит как для не авторизованного пользователя - авторизуемся и запоминаем значение кук.

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

По вашей картинке в первом сообщении, у меня складывается впечатление, что запускается какой-то профиль транскодирования именно, а не "Оригинальный поток". Если профиль не стандартный, может там в коде есть избыточные вызовы считывания свойств?

Sony Bravia KDL-32CX523

7

Re: Скрипт получения ссылок на ресурс

Или вообще, вынести авторизацию в "Скрипт чтения списка ресурсов (Alt+2)"!
Т.е., если хотим посмотреть чё-нть - обновляем список каналов перед этим. Опять же куки там где-то нужно запомнить. И их использовать в скрипте получения ссылки.

Sony Bravia KDL-32CX523

8 (2016.01.09 17:32:28 отредактировано Voland)

Re: Скрипт получения ссылок на ресурс

tim128, у вас какая версия HMS? Аналогичная ситуация была у меня на версиях до 2.03. В версии же 2.03 стало всё строго, один запрос-один ответ. И, депо тут похоже не в авторизации, так как в подкасте Тучка.ТВ было тоже самое.

LG 27MT75S-PZQ
Samsung HT-F4500

9

Re: Скрипт получения ссылок на ресурс

Voland пишет:

tim128, у вас какая версия HMS? Аналогичная ситуация была у меня на версиях до 2.03. В версии же 2.03 стало всё строго, один запрос-один ответ. И, депо тут похоже не в авторизации, так как в подкасте Тучка.ТВ было тоже самое.

2.05

WendyH пишет:

Вы же про вот этот подкаст?

Да. Настроено на оригинальный поток. Транскодирование не запускается. Но, видимо, поскольку скрипт возвращает в MediaResourceLink строку, начинающуюся с "cmd://",  hms запускает консоль cmd и там запускается ace_player.exe, формирует поток, который и гонится на ТВ. Но это мое понимание происходящего, могу и ошибаться. Я тоже подумал, что hms закрывает те консоли, которые порождены командами, отличными от воспроизведения, остается одна консоль, и похоже в моем случае не та, что надо.

По поводу авторизации я тоже думал привести в порядок, но пока важнее разобраться с воспроизведением. Количество вызовов похоже зависит от плеера/телевизора, их порядок, наверное, тоже. То, что я описывал, происходит при вызове с ноутбука плеером kodi. Если на андроид-смартфоне из проги TV SideView запускать воспроизведение через плеер VLC, то скрипт запускается один раз и все работает. Кстати TV SideView бродит по папкам без вызовов скрипта... Тут кто-то спрашивал про картинки на папках, так вот kodi показывает, а TV SideView нет, может загрузка изображения и вызывает один из вызовов скрипта получения ссылок на ресурс.

Sony Bravia KDL-32W705C, Sony Bravia KDL-55W808C

10

Re: Скрипт получения ссылок на ресурс

Если в MediaResourceLink параметры - да, это параметры для запуска транскодирования. Так что по сути транскодирование с помощью AcePlayer всегда есть, но оно как-бы промежуточное, для получения потока. И не используется профиль транскодирования (хотя могу ошибаться, это мои только догадки). Но из-за того, что мой телек не поддерживает формат получаемого потока, мне приходится так ещё и профиль транскодирования указывать дополнительно.

Раз с одного устройства один запуск, а с другого их несколько, то конечно, дело в устройствах. Но я бы проверил на всякий случай, чем отличаются настройки этих устройств (если они используют разный тип устройств). Это где "Индивидуальные настройки клиентского устройства" -> "Файлы, субтитры", выставлен ли там профиль транскодирования у одного и у второго устройства. У меня там пусто.

Что-то я немного потерялся. В каком случае у вас "не закрывается консоль не та что надо"? Ну, такого быть не может в принципе. Потому как вызовы скрипта делает отдельным потоком сама программа и закрыть не тот поток она никак не может, спутав.
Просто в каком-то случае у вас не запускается само транскодирование.
Ещё раз, а с какого устройства именно так происходит, в каких случаях? Какой тип устройства выставлен в настройках этого устройства?

Sony Bravia KDL-32CX523

11 (2016.01.09 23:31:03 отредактировано tim128)

Re: Скрипт получения ссылок на ресурс

WendyH пишет:

Раз с одного устройства один запуск, а с другого их несколько, то конечно, дело в устройствах. Но я бы проверил на всякий случай, чем отличаются настройки этих устройств (если они используют разный тип устройств). Это где "Индивидуальные настройки клиентского устройства" -> "Файлы, субтитры", выставлен ли там профиль транскодирования у одного и у второго устройства. У меня там пусто.

Что-то я немного потерялся. В каком случае у вас "не закрывается консоль не та что надо"? Ну, такого быть не может в принципе. Потому как вызовы скрипта делает отдельным потоком сама программа и закрыть не тот поток она никак не может, спутав.
Просто в каком-то случае у вас не запускается само транскодирование.
Ещё раз, а с какого устройства именно так происходит, в каких случаях? Какой тип устройства выставлен в настройках этого устройства?

Профили транскодирования для обоих устройств не установлены.

"не закрывается консоль не та что надо" в случае с ноутбук+kodi. Запускается четыре консоли, как минимум одна из них инициирует в ace_engine загрузку, но три консоли быстро закрываюся и загрузка прекращается. Видимо та консоль, которая "захватывает" торрент оказывается среди трех закрытых. Но, конечно, это все гадание...

Тип устройства для ноутбука DLNA Device (версия 1.5, 16:9, 720x406)
Для смартфона VLC Media Player (Web, 16:9, 720x406)

Пы.Сы.
Решил проверить еще на другом устройстве для ровного счета - взял у сына iPad. На нем запускал VLC и 8player. Так вот VLC вызывает скрипт один раз и показывает, 8player четыре раза и тоже показывает :). Так что дело не в устройстве а в плеере...

Sony Bravia KDL-32W705C, Sony Bravia KDL-55W808C

12

Re: Скрипт получения ссылок на ресурс

Нашел лог проигрывателя kodi, может что поймете...

+ открыть спойлер
23:29:16 T:5040  NOTICE: DVDPlayer: Opening: http://192.168.192.100:8080/MediaServer/VideoItems/2aa5798a3cdc5b55f1398a69c1024881.mpg?infokey=aa9bf6011cb47f4bc415b4c3aec5b571&fileext=.mpg
23:29:16 T:5040 WARNING: CDVDMessageQueue(player)::Put MSGQ_NOT_INITIALIZED
23:29:16 T:6388  NOTICE: Thread DVDPlayer start, auto delete: false
23:29:16 T:6388  NOTICE: Creating InputStream
23:29:17 T:6388  NOTICE: Creating Demuxer
23:29:17 T:6648  NOTICE: Thread FileCache start, auto delete: false
23:29:19 T:6648   ERROR: CCurlFile::FillBuffer - Failed: Requested range was not delivered by the server(33)
23:29:20 T:6388   ERROR: Previous line repeats 2 times.
23:29:20 T:6388 WARNING: XFILE::CFileCache::Seek - failed to get remaining data
23:29:20 T:6388 WARNING: Previous line repeats 1 times.
23:29:20 T:6388  NOTICE: Opening stream: 0 source: 256
23:29:20 T:6388  NOTICE: Creating video codec with codec id: 28
23:29:20 T:6388  NOTICE: CDVDVideoCodecFFmpeg::Open() Using codec: H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10
23:29:20 T:6388  NOTICE: Creating video thread
23:29:20 T:6388  NOTICE: Opening stream: 1 source: 256
23:29:20 T:6388  NOTICE: Finding audio codec for: 86017
23:29:20 T:6388  NOTICE: Creating audio thread
23:29:20 T:3488  NOTICE: Thread DVDPlayerVideo start, auto delete: false
23:29:20 T:3488  NOTICE: running thread: video_thread
23:29:20 T:6388  NOTICE: CDVDPlayer::OnExit()
23:29:20 T:6388  NOTICE: DVDPlayer: eof, waiting for queues to empty
23:29:20 T:6388  NOTICE: Closing stream player 1
23:29:20 T:6388  NOTICE: CDVDMessageQueue(audio)::WaitUntilEmpty
23:29:20 T:6732  NOTICE: Thread DVDPlayerAudio start, auto delete: false
23:29:20 T:6732  NOTICE: running thread: CDVDPlayerAudio::Process()
23:29:20 T:6388  NOTICE: Waiting for audio thread to exit
23:29:20 T:6732  NOTICE: thread end: CDVDPlayerAudio::OnExit()
23:29:20 T:6388  NOTICE: Closing audio device
23:29:20 T:6388  NOTICE: Deleting audio codec
23:29:20 T:6388  NOTICE: Closing stream player 2
23:29:20 T:6388  NOTICE: CDVDMessageQueue(video)::WaitUntilEmpty
23:29:20 T:6388  NOTICE: waiting for video thread to exit
23:29:20 T:3488   ERROR: Got MSGQ_ABORT or MSGO_IS_ERROR return true
23:29:20 T:3488  NOTICE: thread end: video_thread
23:29:20 T:6388  NOTICE: deleting video codec
23:29:20 T:5040   ERROR: Playlist Player: skipping unplayable item: 0, path [upnp://1debbe9e-683a-4aeb-8e72-c411d19cd1f3/2aa5798a3cdc5b55f1398a69c1024881/]
23:29:20 T:5040  NOTICE: CDVDPlayer::CloseFile()
23:29:20 T:5040  NOTICE: DVDPlayer: waiting for threads to exit
23:29:20 T:5040  NOTICE: DVDPlayer: finished waiting
23:29:20 T:5040  NOTICE: CDVDPlayer::CloseFile()
23:29:20 T:5040  NOTICE: DVDPlayer: waiting for threads to exit
23:29:20 T:5040  NOTICE: DVDPlayer: finished waiting
23:29:20 T:844  NOTICE: Thread BackgroundLoader start, auto delete: false
23:29:30 T:2856  NOTICE: Thread FileCache start, auto delete: false
23:29:31 T:6860  NOTICE: Previous line repeats 1 times.
23:29:31 T:6860  NOTICE: Thread BackgroundLoader start, auto delete: false

Все остальные подкасты, которые я пробовал и просто фильмы kodi показывает

Sony Bravia KDL-32W705C, Sony Bravia KDL-55W808C

13

Re: Скрипт получения ссылок на ресурс

Указал профиль транскодирования AceStream (ACEPLAYER - FFMPEG) и заработало. Причем скрипт вызывается один раз. Видимо изначальное предположение о том что скрипт дополнительно вызывается из-за получения свойств ресурса неверно. И в логе kodi ничего на это не указывает. Скорее hms по каким-то причинам вызывает скрипт по нескольку раз. Ночью много пробовал - так количество вызовов у меня варьировалось от двух до пяти и никакой закономерности я не уловил. Видимо пока придется остановиться на обязательности транскодирования. Тем более так надежнее, особенно в случае с телевизором.

Sony Bravia KDL-32W705C, Sony Bravia KDL-55W808C

14

Re: Скрипт получения ссылок на ресурс

То, что нашлось решение проблемы, это хорошо. Но вот то, что так и не понятно - не очень.
Поставил Коди на телефон (Андроид, ноута под рукой нет).
Включил дебаг лог и тоже посмотрел. У меня выглядит лог немного по-другому:

+ открыть спойлер
14:35:52 T:18446744072517425576  NOTICE: Thread Timer start, auto delete: false
14:35:52 T:18446744072517425576   DEBUG: Thread Timer 18446744072517425576 terminating
14:35:52 T:18446744072503947928   DEBUG: virtual bool CGUIWindowVideoBase::OnPlayMedia(int) upnp://d090aa30-3d36-423f-a477-179d197c77ea/9d95305ebae474bcdf62357aef56ed75/
14:35:52 T:18446744072503947928   DEBUG: CAnnouncementManager - Announcement: OnClear from xbmc
14:35:52 T:18446744072503947928   DEBUG: GOT ANNOUNCEMENT, type: 2, from xbmc, message OnClear
14:35:52 T:18446744072503947928   DEBUG: int CVideoDatabase::GetMovieId(const string&) (upnp://d090aa30-3d36-423f-a477-179d197c77ea/9d95305ebae474bcdf62357aef56ed75/), query = select idMovie from movie join files on files.idFile=movie.idFile where files.idPath=-1
14:35:52 T:18446744072503947928   DEBUG: CAnnouncementManager - Announcement: OnAdd from xbmc
14:35:52 T:18446744072503947928   DEBUG: GOT ANNOUNCEMENT, type: 2, from xbmc, message OnAdd
14:35:52 T:18446744072503947928   DEBUG: CUPnPDirectory::GetResource - resource protocol info 'http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_TS_SD_EU_ISO;DLNA.ORG_OP=01;DLNA.ORG_CI=0;DLNA.ORG_FLAGS=61F00000000000000000000000000000'
14:35:52 T:18446744072503947928   DEBUG: Loading settings for http://192.168.1.5:45397/MediaServer/VideoItems/9d95305ebae474bcdf62357aef56ed75.ts?transcoding=1&infokey=f0559becbd0854cba4cfdf4a13ae47d6&fileext=.ts
14:35:52 T:18446744072503947928   DEBUG: CPlayerCoreFactory::GetPlayers(http://192.168.1.5:45397/MediaServer/VideoItems/9d95305ebae474bcdf62357aef56ed75.ts?transcoding=1&infokey=f0559becbd0854cba4cfdf4a13ae47d6&fileext=.ts)
14:35:52 T:18446744072503947928   DEBUG: CPlayerSelectionRule::GetPlayers: considering rule: system rules
14:35:52 T:18446744072503947928   DEBUG: CPlayerSelectionRule::GetPlayers: matches rule: system rules
14:35:52 T:18446744072503947928   DEBUG: CPlayerSelectionRule::GetPlayers: considering rule: hdhomerun/mms/udp
14:35:52 T:18446744072503947928   DEBUG: CPlayerSelectionRule::GetPlayers: considering rule: lastfm/shout
14:35:52 T:18446744072503947928   DEBUG: CPlayerSelectionRule::GetPlayers: considering rule: rtmp
14:35:52 T:18446744072503947928   DEBUG: CPlayerSelectionRule::GetPlayers: considering rule: rtsp
14:35:52 T:18446744072503947928   DEBUG: CPlayerSelectionRule::GetPlayers: considering rule: streams
14:35:52 T:18446744072503947928   DEBUG: CPlayerSelectionRule::GetPlayers: matches rule: streams
14:35:53 T:18446744072503947928   DEBUG: CPlayerSelectionRule::GetPlayers: considering rule: aacp/sdp
14:35:53 T:18446744072503947928   DEBUG: CPlayerSelectionRule::GetPlayers: considering rule: mp2
14:35:53 T:18446744072503947928   DEBUG: CPlayerSelectionRule::GetPlayers: considering rule: dvd
14:35:53 T:18446744072503947928   DEBUG: CPlayerSelectionRule::GetPlayers: considering rule: dvdimage
14:35:53 T:18446744072503947928   DEBUG: CPlayerSelectionRule::GetPlayers: considering rule: sdp/asf
14:35:53 T:18446744072503947928   DEBUG: CPlayerSelectionRule::GetPlayers: considering rule: nsv
14:35:53 T:18446744072503947928   DEBUG: CPlayerSelectionRule::GetPlayers: considering rule: radio
14:35:53 T:18446744072503947928   DEBUG: CPlayerCoreFactory::GetPlayers: matched 0 rules with players
14:35:53 T:18446744072503947928   DEBUG: CPlayerCoreFactory::GetPlayers: adding videodefaultplayer (1)
14:35:53 T:18446744072503947928   DEBUG: CPlayerCoreFactory::GetPlayers: for video=1, audio=0
14:35:53 T:18446744072503947928   DEBUG: CPlayerCoreFactory::GetPlayers: for video=1, audio=1
14:35:53 T:18446744072503947928   DEBUG: CPlayerCoreFactory::GetPlayers: adding player: DVDPlayer (1)
14:35:53 T:18446744072503947928   DEBUG: CPlayerCoreFactory::GetPlayers: adding player: BRAVIA KDL-32CX523 (4)
14:35:53 T:18446744072503947928   DEBUG: CPlayerCoreFactory::GetPlayers: added 2 players
14:35:53 T:18446744072503947928  NOTICE: DVDPlayer: Opening: http://192.168.1.5:45397/MediaServer/VideoItems/9d95305ebae474bcdf62357aef56ed75.ts?transcoding=1&infokey=f0559becbd0854cba4cfdf4a13ae47d6&fileext=.ts
14:35:53 T:18446744072503947928 WARNING: CDVDMessageQueue(player)::Put MSGQ_NOT_INITIALIZED
14:35:53 T:18446744072503947928   DEBUG: CRenderManager::UpdateDisplayLatency - Latency set to 0 msec
14:35:53 T:18446744072503947928   DEBUG: LinuxRendererGL: Cleaning up GL resources
14:35:53 T:18446744072526797600  NOTICE: Thread DVDPlayer start, auto delete: false
14:35:53 T:18446744072526797600  NOTICE: Creating InputStream
14:35:53 T:18446744072503947928   DEBUG: ------ Window Init (DialogBusy.xml) ------
14:35:53 T:18446744072503947928   DEBUG: Unfocus WindowID: 10025, ControlID: 50
14:36:03 T:18446744072526797600   ERROR: CCurlFile::Stat - Failed: Timeout was reached(28) for http://192.168.1.5:45397/MediaServer/VideoItems/9d95305ebae474bcdf62357aef56ed75.ts?transcoding=1&infokey=f0559becbd0854cba4cfdf4a13ae47d6&fileext=.ts
14:36:03 T:18446744072526797600   DEBUG: CCurlFile::GetMimeType - http://192.168.1.5:45397/MediaServer/VideoItems/9d95305ebae474bcdf62357aef56ed75.ts?transcoding=1&infokey=f0559becbd0854cba4cfdf4a13ae47d6&fileext=.ts -> failed
14:36:03 T:18446744072526797600   DEBUG: CFileCache::Open - opening <MediaServer/VideoItems/9d95305ebae474bcdf62357aef56ed75.ts> using cache
14:36:03 T:18446744072526797600   DEBUG: CurlFile::Open(0xb9539c10) http://192.168.1.5:45397/MediaServer/VideoItems/9d95305ebae474bcdf62357aef56ed75.ts?transcoding=1&infokey=f0559becbd0854cba4cfdf4a13ae47d6&fileext=.ts
14:36:14 T:18446744072526797600  NOTICE: Creating Demuxer
14:36:14 T:18446744072527019936  NOTICE: Thread FileCache start, auto delete: false
14:36:14 T:18446744072526797600   DEBUG: bool CDVDDemuxFFmpeg::Open(CDVDInputStream*, bool, bool) - probing detected format [mpegts]
14:36:14 T:18446744072526797600   DEBUG: bool CDVDDemuxFFmpeg::Open(CDVDInputStream*, bool, bool) - avformat_find_stream_info starting
14:36:14 T:18446744072526797600   DEBUG: ffmpeg[B9809B20]: [mpegts] max_analyze_duration 500000 reached at 510644 microseconds
14:36:14 T:18446744072526797600   DEBUG: ffmpeg[B9809B20]: [NULL] start time for stream 0 is not set in estimate_timings_from_pts
14:36:14 T:18446744072527019936    INFO: void XCURL::DllLibCurlGlobal::easy_aquire(const char*, const char*, XCURL::CURL_HANDLE**, XCURL::CURLM**) - Created session to http://192.168.1.5
14:36:14 T:18446744072527019936   DEBUG: CurlFile::CReadState::Connect - Resume from position 42949422950
14:36:14 T:18446744072527019936    INFO: CFileCache::Process - Hit eof.
14:36:14 T:18446744072527019936   DEBUG: CurlFile::CReadState::Connect - Resume from position 42949172950
14:36:14 T:18446744072526797600   DEBUG: ffmpeg[B9809B20]: [mpegts] Could not find codec parameters for stream 0 (Video: mpeg2video ([2][0][0][0] / 0x0002), none(tv)): unspecified size
14:36:14 T:18446744072526797600   DEBUG: ffmpeg[B9809B20]: [mpegts] Consider increasing the value for the 'analyzeduration' and 'probesize' options
14:36:14 T:18446744072526797600   DEBUG: bool CDVDDemuxFFmpeg::Open(CDVDInputStream*, bool, bool) - av_find_stream_info finished
14:36:14 T:18446744072526797600    INFO: ffmpeg[B9809B20]: Input #0, mpegts, from 'http://192.168.1.5:45397/MediaServer/VideoItems/9d95305ebae474bcdf62357aef56ed75.ts?transcoding=1&infokey=f0559becbd0854cba4cfdf4a13ae47d6&fileext=.ts':
14:36:14 T:18446744072526797600    INFO: ffmpeg[B9809B20]:   Duration: 11:39:59.18, start: 1.400000, bitrate: 8181 kb/s
14:36:14 T:18446744072526797600    INFO: ffmpeg[B9809B20]:   Program 1
14:36:14 T:18446744072526797600    INFO: ffmpeg[B9809B20]:     Metadata:
14:36:14 T:18446744072526797600    INFO: ffmpeg[B9809B20]:       service_name    : Service01
14:36:14 T:18446744072526797600    INFO: ffmpeg[B9809B20]:       service_provider: FFmpeg
14:36:14 T:18446744072526797600    INFO: ffmpeg[B9809B20]:     Stream #0:0[0x100]: Video: mpeg2video ([2][0][0][0] / 0x0002), none(tv), 90k tbr, 90k tbn, 90k tbc
14:36:14 T:18446744072526797600    INFO: ffmpeg[B9809B20]:     Stream #0:1[0x101]: Audio: aac (LC) ([15][0][0][0] / 0x000F), 44100 Hz, stereo, fltp, 141 kb/s
14:36:14 T:18446744072526797600   DEBUG: CDVDDemuxFFmpeg::AddStream(0, ...) -> 0
14:36:14 T:18446744072526797600   DEBUG: CDVDDemuxFFmpeg::AddStream(1, ...) -> 1
14:36:14 T:18446744072526797600   DEBUG: CDVDInputStreamFile::SetReadRate - set cache throttle rate to 1153703 bytes per second
14:36:14 T:18446744072526797600  NOTICE: Opening stream: 0 source: 256
14:36:14 T:18446744072526797600  NOTICE: Creating video codec with codec id: 2
14:36:14 T:18446744072526797600   DEBUG: CDVDFactoryCodec: compiled in hardware support: AMCodec:yes MediaCodec:yes OpenMax:no libstagefright:yes VDPAU:no VAAPI:no iMXVPU:no MMAL:no
14:36:14 T:18446744072526797600    INFO: MediaCodec Video Decoder...
14:36:14 T:18446744072526797600   DEBUG: FactoryCodec - Video: mediacodec - Opening
14:36:14 T:18446744072526797600   ERROR: CDVDVideoCodecAndroidMediaCodec::Open - null size, cannot handle
14:36:14 T:18446744072526797600   DEBUG: FactoryCodec - Video: mediacodec - Failed
14:36:14 T:18446744072526797600   DEBUG: FactoryCodec - Video: stf-xxxx - Opening
14:36:14 T:18446744072526797600   DEBUG: CDVDVideoCodecStageFright::virtual bool CDVDVideoCodecStageFright::Open(CDVDStreamInfo&, CDVDCodecOptions&) - trying to open, codec(2), profile(-99), level(-99)
14:36:14 T:18446744072526797600   ERROR: CStageFrightVideo::bool CStageFrightVideo::Open(CDVDStreamInfo&) - null size, cannot handle
14:36:14 T:18446744072526797600   ERROR: CDVDVideoCodecStageFright::virtual bool CDVDVideoCodecStageFright::Open(CDVDStreamInfo&, CDVDCodecOptions&) - failed to open, codec(2), profile(-99), level(-99)
14:36:14 T:18446744072526797600   DEBUG: FactoryCodec - Video: stf-mpeg2 - Failed
14:36:14 T:18446744072526797600   DEBUG: FactoryCodec - Video:  - Opening
14:36:14 T:18446744072526797600  NOTICE: CDVDVideoCodecFFmpeg::Open() Using codec: MPEG-2 video
14:36:14 T:18446744072526797600   DEBUG: CDVDVideoCodecFFmpeg - open frame threaded with 2 threads
14:36:14 T:18446744072526797600   DEBUG: FactoryCodec - Video: ff-mpeg2video - Opened
14:36:14 T:18446744072526797600   ERROR: CDVDPlayerVideo::OpenStream - Invalid framerate 90000, using forced 25fps and just trust timestamps
14:36:14 T:18446744072526797600  NOTICE: Creating video thread
14:36:14 T:18446744072526797600  NOTICE: Opening stream: 1 source: 256
14:36:14 T:18446744072526797600  NOTICE: Finding audio codec for: 86018
14:36:14 T:18446744072526797600   DEBUG: FactoryCodec - Audio: passthrough - Opening
14:36:14 T:18446744072526797600   DEBUG: FactoryCodec - Audio: passthrough - Failed
14:36:14 T:18446744072526797600   DEBUG: FactoryCodec - Audio: FFmpeg - Opening
14:36:14 T:18446744072519659504  NOTICE: Thread DVDPlayerVideo start, auto delete: false
14:36:14 T:18446744072519659504  NOTICE: running thread: video_thread
14:36:14 T:18446744072526797600   DEBUG: FactoryCodec - Audio: FFmpeg - Opened
14:36:14 T:18446744072526797600  NOTICE: Creating audio thread
14:36:14 T:18446744072519659504   DEBUG: CDVDPlayerVideo - CDVDMsg::GENERAL_SYNCHRONIZE
14:36:14 T:18446744072526797600   DEBUG: virtual void CApplication::OnPlayBackStarted(): play state was 1, starting 1
14:36:14 T:18446744072526797600   DEBUG: CDVDPlayer::SetCaching - caching state 1
14:36:14 T:18446744072526797600   DEBUG: CDVDDemuxFFmpeg::Read() fetching extradata, extradata_size(22)
14:36:14 T:18446744072525076144  NOTICE: Thread DVDPlayerAudio start, auto delete: false
14:36:14 T:18446744072525076144  NOTICE: running thread: CDVDPlayerAudio::Process()
14:36:14 T:18446744072525076144   DEBUG: CDVDPlayerAudio - CDVDMsg::GENERAL_SYNCHRONIZE
14:36:14 T:18446744072526797600   DEBUG: CDVDDemuxFFmpeg::AddStream(0, ...) -> 0
14:36:14 T:18446744072526797600  NOTICE: Opening stream: 0 source: 256
14:36:14 T:18446744072526797600  NOTICE: Creating video codec with codec id: 2
14:36:14 T:18446744072526797600   DEBUG: CDVDFactoryCodec: compiled in hardware support: AMCodec:yes MediaCodec:yes OpenMax:no libstagefright:yes VDPAU:no VAAPI:no iMXVPU:no MMAL:no
14:36:14 T:18446744072526797600    INFO: MediaCodec Video Decoder...
14:36:14 T:18446744072526797600   DEBUG: FactoryCodec - Video: mediacodec - Opening

Но у меня и ситуация другая, у меня Коди на андроиде норм показывает этот подкаст. Точнее было в первый раз, что он не дождался, пока там плеер AceStream запускался и проч. А потом включал каналы норм.

Единственное, что меня смутило  в вашем логе, это как будто Коди у вас пытался позиционировать медиа-файл, типа как "Продолжить воспроизведение с прерванного места". Вот эти строки:

23:29:19 T:6648   ERROR: CCurlFile::FillBuffer - Failed: Requested range was not delivered by the server(33)
23:29:20 T:6388   ERROR: Previous line repeats 2 times.
23:29:20 T:6388 WARNING: XFILE::CFileCache::Seek - failed to get remaining data

Хотя, это всего-лишь предположение и до конца не понятно.

У меня к вам другой вопрос. Немного не по теме.
Коди - хороший медиа-центр и всё такое. Мне тоже там всё нравится. Для него куча аддонов, заменяющих подкасты в HMS, не FastScript, а язык Python для плагинов (что несравнимо лучше), да и выступать он уже может как DLNA медиа-сервер, вроде как. Т.е. может быть практически полной заменой HMS. Но заточен он именно как медиа-центр, всё таки.
Так вот, при навигации в нём по серверу HMS и обновлении какой-нибудь ветки, пункта "Обновить подкасты" и при выходе из этой папки - ничего не меняется. Т.е. HMS всё обновил, содержимое папки изменилось, но Коди не обновляет информацию о содержимом папки. и ничего не показывает. По крайней мере у меня так.
У вас с этим проблем нет?
Например, в BubbleUPnP там хоть можно было Refresh текущей папки сделать, чтобы он заново запросил её содержимое. А тут ничего такого не нашёл.

Sony Bravia KDL-32CX523

15

Re: Скрипт получения ссылок на ресурс

WendyH,

Да, действительно, содержимое папок не обновляется до выхода из kodi. Не обращал внимания, сейчас проверил - так и есть. Проблема. Но пока kodi - единственный продукт, который я нашел под windows. Хотелось бы иметь единый медиа-сервер для квартиры, а все устройства его бы использовали. Может ли kodi заменить в этом hms - может быть но надо разбираться.

Насчет ошибки CCurlFile::FillBuffer - Failed: Requested range was not delivered by the server(33) мне показалось, что это означает что библиотека ccurl не смогла выполнить пребуферизацию, так как не получила от сервера. Хотя тоже просто догадка.

Sony Bravia KDL-32W705C, Sony Bravia KDL-55W808C

16

Re: Скрипт получения ссылок на ресурс

WendyH пишет:

Так вот, при навигации в нём по серверу HMS и обновлении какой-нибудь ветки, пункта "Обновить подкасты" и при выходе из этой папки - ничего не меняется. Т.е. HMS всё обновил, содержимое папки изменилось, но Коди не обновляет информацию о содержимом папки. и ничего не показывает. По крайней мере у меня так.
У вас с этим проблем нет?

Вот, кстати http://forum.kodi.tv/showthread.php?tid … fresh+upnp

Sony Bravia KDL-32W705C, Sony Bravia KDL-55W808C

17 (2016.01.11 22:09:01 отредактировано tim128)

Re: Скрипт получения ссылок на ресурс

Продолжаю переделывать скрипт получения ссылок на ресурс для Торрент-ТВ. Привел в порядок авторизацию, теперь вообще не авторизуюсь если не требуется. Страницу с 1ttv.org тоже гружу только по необходимости. Стал обрабатывать "пропавшие" ссылки. И тут опять проблема.

+ открыть спойлер

https://hms.lostcut.net/misc.php?action=pun_attachment&amp;item=472&amp;download=0

На скрине видно, "Запуск скрипта получения ссылок на ресурс" - это запуск скрипта. Потом ошибка - "Медиа-ресурс не найден". Я очищаю переменную MediaResourceLink и выхожу. Надеюсь, что hms остановит обработку, так как ссылка не ресурс не получена. Но не тут то было... hms зачем-то запускает скрипт еще раз. Все тоже самое, медиа-ресурс не найден, MediaResourceLink = "" и тут hms запускает транскодер... который конечно ничего не воспроизводит... Как мне дать знать hms, что произошла ошибка и ссылки на медиа-ресурс нет и рыпаться не стоит?

Прикреплённые файлы сообщения

Скрипт.PNG 28.48 kb, скачивалось 230 раз, начиная с 2016.01.11

Sony Bravia KDL-32W705C, Sony Bravia KDL-55W808C

18

Re: Скрипт получения ссылок на ресурс

Дело в том, что мы запустили воспроизведение на устройстве (телеке) и как раз оно ждёт, что поток получит. Даже если HMS будет знать о том, что рыпаться не стоит, то что должно "думать" устройство или что должен HMS этому устройству "сказать"?
Помнится, мне было нечего делать и я сделал несколько видо-заглушек для подобных ошибок и выложил себе на сервер. И в случае ошибки в MediaResourceLink подставляю их адреса.

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

Кстати как вариант, могу научить как сформировать видео из вообще текстового сообщения. Это типа как у меня информационные ссылки. У меня на серваке есть скрипт, который из текста и параметров создаёт картинку, кеширует и возвращает ссылку на такую картинку, а мы в MediaResourceLink можем занести параметры для ffmpeg для показа видео из такой картинки.

Sony Bravia KDL-32CX523

19 (2016.01.12 00:33:33 отредактировано tim128)

Re: Скрипт получения ссылок на ресурс

WendyH пишет:

Дело в том, что мы запустили воспроизведение на устройстве (телеке) и как раз оно ждёт, что поток получит. Даже если HMS будет знать о том, что рыпаться не стоит, то что должно "думать" устройство или что должен HMS этому устройству "сказать"?

Логично. Но есть еще один момент. Запостив скриншот на форум, я увидел его свежим взглядом и обратил внимание на то, что сообщения скрипта затесались между сообщений подкаста. То есть скрипт получения ссылок на ресурс вызывался скриптом профиля транскодирования. Стал смотреть его - в скрипте профиля дважды вызывалась функция HmsGetItemProperty(mpiMediaResourceLink) и транскодирование запускалось независимо от того, что эта функция вернет. Исправил этот косяк так чтобы если HmsGetItemProperty(mpiMediaResourceLink) возвращает пустую строку выйти из скрипта транскодирования. Теперь все предсказуемо, только уже сам профиль транскодирования стал вызываться дважды - видимо как вы и написали уже плеер не дождавшись потока от hms пробует повторить вызов. Чтобы совсем уж все в ажуре было, согласен, стоит воспроизвести мини-ролик с сообщением об ошибке. Буду признателен, если поможете такой сделать.

+ открыть спойлер

https://hms.lostcut.net/misc.php?action=pun_attachment&amp;item=475&amp;download=0

Прикреплённые файлы сообщения

Скрипт.PNG 25.65 kb, скачивалось 212 раз, начиная с 2016.01.11

Sony Bravia KDL-32W705C, Sony Bravia KDL-55W808C

20

Re: Скрипт получения ссылок на ресурс

tim128 пишет:

Чтобы совсем уж все в ажуре было, согласен, стоит воспроизвести мини-ролик с сообщением об ошибке. Буду признателен, если поможете такой сделать.

Есть у меня два волшебных скрипта на сервере для формирования картинки из текста. Как они работают и какие параметры принимают, можно поизучав из содержимое.
Один videopreview.php, другой videomessage.php.
(Код там ужасен, но свою функцию делают)

videomessage.php - для простых сообщений, где выводится заголовок и текст сообщения.
Второй - videopreview.php - для более сложных картинок и большого текста. Он используется для формирования описаний фильма.

Объясню пока как можно использовать videomessage.php для видео сообщения.

Например, при возникновении внештатной ситуации нам нужно вместо запрошенного видео вывести своё другое видео с сообщением об ошибке.
Тогда можно вызвать скрипт с параметрами caption и msg и сохранить полученную картинку как файл.
Например: http://wonky.lostcut.net/videomessage.p … тствует%21

+ На самом деле там можно указывать ещё некоторые параметры

Такие как captfont, captcolor, captsize, font, color, fontsize, bckgrnd.

Значение цвета в captcolor и color задаётся как RGB цвет в HEX представлении (#F00 - красный, #0F0 - зелёный, 00F - синий, 0FD911, #D55...). Знак решетки необязателен.

Имя шрифта captfont и font только то, файл которого загружен на сервер: Adam, PentaBold, DejaVuSansMono-Bold, UKIJMe, LiberationMono-Regular, DejaVuSansMono, AGFriquer_Bold.

bckgrnd - имя загруженной картинки для фона (background, Dark_1920x1080, payload114.cargocollective.com-1-7-225471-4588633-BG_DarkWood_o, abstract_background_49-2560x1600, Austere_gray_desktop_background).

Пример.

Теперь мы можем сформировать картинку, скачать её и задать параметры для создания видео слайд шоу из этой картинки.
Например для ffmpeg можно задать такие параметры для формирования видео из картинки:
ffmpeg -loop 1 -i image.jpg caption=ds -c:v libx264 -t 7 -pix_fmt yuv420p out.mp4


Можно сделать специальную функцию для этого:

+ открыть спойлер
///////////////////////////////////////////////////////////////////////////////
// Формирование видео сообщение с заданным заголовком и сообщением
Procedure ShowVideoMessage(sCaption, sMessage: String);
Var
  sFile, sLink: String;
Begin
  sFile := HmsTempDirectory+'\image.jpg';
  sLink := 'http://wonky.lostcut.net/videomessage.php?caption='+HmsHttpEncode(sCaption)+'&msg='+HmsHttpEncode(sMessage);
  HmsDownloadURLToFile(sLink, sFile);
  MediaResourceLink := '-loop 1 -i "'+sFile+'" -c:v libx264 -t 7 -pix_fmt yuv420p';
End;

И вызывать эту функцию примерно можно так (где-нибудь в конце скрипта, будем считать, что пустая MediaResourceLink это ошибка):

If MediaResourceLink = '' Then ShowVideoMessage('1TTV', 'Запрашиваемый канал в данный момент не доступен');

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

Например, можно скачивать небольшой аудио файл и добавлять его. И функция формирования видео сообщения будет уже такая:

///////////////////////////////////////////////////////////////////////////////
// Формирование видео сообщение с заданным заголовком и сообщением
Procedure ShowVideoMessage(sCaption, sMessage: String);
Var
  sLink, sFileImg, sFileMP3: String;
Begin
  sFileImg := HmsTempDirectory+'\image.jpg';
  sFileMP3 := HmsTempDirectory+'\audio.mp3';

  sLink := 'http://wonky.lostcut.net/videomessage.php?caption='+HmsHttpEncode(sCaption)+'&msg='+HmsHttpEncode(sMessage);
  HmsDownloadURLToFile(sLink, sFileImg);

  sLink := 'http://wonky.lostcut.net/mp3/sa.mp3';
  If Not FileExists(sFileMP3) Then HmsDownloadURLToFile(sLink, sFileMP3);

  MediaResourceLink := Format('-loop 1 -i "%s" -i "%s" -shortest -c:v libx264 -pix_fmt yuv420p -c:a copy', [sFileImg, sFileMP3]);
End;

Но тут масса вариантов и есть место для фантазии, как это можно всё сделать.

Sony Bravia KDL-32CX523

21 (2016.01.14 19:30:26 отредактировано Рома35)

Re: Скрипт получения ссылок на ресурс

Я правильно понял скрипт формирования видео из картинки, как здесь указать длительность, например, 5 секунд?

ffmpeg.exe" -loop 1 -i "1.JPG" -i "1.mp3" -shortest -c:v libx264 -pix_fmt yuv420p -c:a copy 1.mp4

Вот мой свой скрипт  формирования видео 1 секунды из картинки:

mencoder.exe  "mf://@1.txt" -vf scale=378:-11  -audiofile  "1.mp3" -oac copy -ovc lavc  -o "1.mp4"
+ Где 1.txt для одной секунды.

1.JPG
1.JPG
1.JPG
1.JPG
1.JPG
1.JPG
1.JPG
1.JPG
1.JPG
1.JPG
1.JPG
1.JPG
1.JPG
1.JPG
1.JPG
1.JPG
1.JPG
1.JPG
1.JPG
1.JPG
1.JPG
1.JPG
1.JPG
1.JPG
1.JPG

Какой у вас скрипт формирования txt в jpg батником?
У меня такой:

"ImageMagick\convert.exe"    -crop 378x212+40+40  "1.txt"   "1.jpg"

где 1.txt текст в юникоде.

Samsung UE32EH4000 WI-FI                  Samsung UE22C4000 WI-FI
Транскод невозможен!

22

Re: Скрипт получения ссылок на ресурс

Рома35 пишет:

Я правильно понял скрипт формирования видео из картинки, как здесь указать длительность, например, 5 секунд?

ffmpeg.exe" -loop 1 -i "1.JPG" -i "1.mp3" -shortest -c:v libx264 -pix_fmt yuv420p -c:a copy 1.mp4

В данном случае, длительность ограничивается длительностью звуковой дорожки параметром -shortest. А у меня в примере скачивается mp3 длиной в 7 сек.
Есть несколько вариантов задания длительности. Например можно и так:

ffmpeg -loop 1 -i "image.jpg" -i "audio.mp3" -t 00:00:30 -c:v libx264 -pix_fmt yuv420p -c:a copy -y out.mp4

Длительность в параметре -t = 30 секунд.
Но это долгий вариант. Самый быстрый, это у меня получилось в скрипте сделать так. Растиражировать картинку с нумерацией и указать такие параметры:

ffmpeg.exe"-i "audio.mp3" -f image2 -r 1 -i "image%03d.jpg" -r 30 -c:v libx264 -pix_fmt yuv420p -c:a copy 1.mp4

Где -r 30 это 30 секунд. А картинок должно быть с image001.jpg по image030.jpg.
Это самый быстрый вариант получился для ffmpeg. И было принципиальна скорость, потому как HMS не отдавал такой файл телеку, пока его не сформирует до конца. А это дополнительная пауза перед воспроизведением.

Спасибо за пример с mencoder, будем знать.

Насчёт того, что convert от ImageMagick может создавать из текста картинку, я знаю. Даже ffmpeg может выводить текст поверх видео, через параметр drawtext. Но убого как-то.

Рома35 пишет:

Какой у вас скрипт формирования txt в jpg батником?

В том то и дело, что у меня батника нет. Я сделал специально для использования в подкастах для всех желающих, чтобы не нужно было установленных дополнительных программ или библиотек и в тоже время из скрипта подкаста можно было получить красивую картинку с текстом (под красивой я понимаю фон с эффектом размытия).
Для этого создал скрипт на PHP, который, кстати, использует imagemagick для формирования картинки и выложил на сервер. И создание картинки теперь делается вызовом этого скрипта, где в параметрах можно указать какой текст будет выведен и проч.

Sony Bravia KDL-32CX523
Спасибо сказали: Рома351

23

Re: Скрипт получения ссылок на ресурс

Для своего скрипта картинку в видео

mencoder.exe  "mf://@1.txt" -vf scale=378:-11  -audiofile  "1.mp3" -oac copy -ovc lavc  -o "1.mp4"

использую следующий mp3 файл, а количество секунд зависит от количества строчек в 1.txt(кратно 25).

Прикреплённые файлы сообщения

для склейки1.mp3 144 b, скачивалось 534 раза, начиная с 2016.01.16

Samsung UE32EH4000 WI-FI                  Samsung UE22C4000 WI-FI
Транскод невозможен!