Здравствуйте. На спортивных сайтах выкладывают contentId матча. Скажите, пожалуйста, как по этому Id можно получить m3u8 ссылку
Добавив его (CID) в плейлист медиа-сервера, например. После можно скачать (m3u8) плейлист из веб-интерфейса медиа-сервера.
Решусь задать дилетантский вопрос. Я не могу стутчаться, как здесь описано Ace stream с контент id и получать m3u8? Хочу написать простенькую прогу, которая бы принимала contentId, получала бы ссылку на m3u8 и пихала бы её в player. Как я понимаю, нужно ip адрес другой, не тот, который в примере
Хочу написать простенькую прогу, которая бы принимала contentId, получала бы ссылку на m3u8 и пихала бы её в player.
Это уже сделано - посредством встроенного в движок прокси-сервера или “стороннего” - Форум ТВ
Как оба эти подхода, так и свой “велосипед” требуют запущенной копии движка Ace Stream (локального либо удаленного) - именно для того, чтобы “преобразовать” contentId (Р2Р-контент) в другой формат (например в HLS m3u8-плейлист).
запустив движок на компьютере, я могу отправлять запрос вида И получать m3u8?
Конкретно из примера в цитате в ответе вернется json, в котором, среди прочего, будет и ссылка на m3u8 HLS плейлист.
Будет гораздо проще, если не играться в угадайку, а сразу внятно описать чего хочется, например:
- имеется исходный контент в виде .торрент файла;
- требуется - скачать его посредством Ace Stream и получить на выходе m3u8 плейлист;
- целевое устройство для воспроизведения этого плейлиста - Apple TV.
Хочу написать простенький клиент для ios (для личного пользования), который воспроизводит acestream контент.
Как я понял из Ace stream один из вариантов - делать запрос на Api и получать m3u8 ссылку, а затем встявлять её в плеер своего клиента.
Пример из ссылки:
http://127.0.0.1:6878/ace/manifest.m3u8?format=json&sid=0.6045503369100068&transcode_audio=1&transcode_mp3=0&use_api_events=1&use_api_stop=1&id=94c2fd8fb9bc8f2fc71a2cbe9d4b866f227a0209{
“response”: {
“playback_url”: “http://127.0.0.1:6878/ace/r/5410b27fc567c35c8547e3b69b141215ce3a1fd7/ef0609c43e560697329d93dae4571edb.m3u8”,
“stat_url”: “http://127.0.0.1:6878/ace/stat/5410b27fc567c35c8547e3b69b141215ce3a1fd7/ef0609c43e560697329d93dae4571edb”,
“command_url”: “http://127.0.0.1:6878/ace/cmd/5410b27fc567c35c8547e3b69b141215ce3a1fd7/ef0609c43e560697329d93dae4571edb”,
“event_url”: “http://127.0.0.1:6878/ace/event/5410b27fc567c35c8547e3b69b141215ce3a1fd7/ef0609c43e560697329d93dae4571edb”,
},
“error”: null
}
У меня есть только ContentID, который я беру на одном из сайтов.
Какая схема моих дествий, объясните, пожалуйста? Если я скачаю и запущу движок на компьютере, я могу отправлять запрос вида :
http://ip адрес компьютера :port /ace/manifest.m3u8?format=json&id=клнтентID, взятого с сайтаИ получать в ответе json содержащий m3u8 ? Есть ли ещё альтернативный вариант?
И получать в ответе json содержащий m3u8 ?
Да, но именно для плеера проще отправлять ссылку вида
http://IP:PORT/ace/manifest.m3u8?format=m3u8&id=a5a7e10612daa2b56fd30c95acf4a1ea580bf21a
и получать в ответе готовый m3u8 плейлист.
Есть ли ещё альтернативный вариант?
Для “непрограммиста” так, например:
- запускаем на ПК Ace Stream;
- заходим в “Медиа-сервер”, затем в “Настройки медиа-сервера” и выбираем “HLS” для “live/vod stream type”;
- открываем на iOS любой плеер с поддержкой URL в качестве источника и указываем там URL вида http://IP:PORT/ace/getstream?id=a5a7e10612daa2b56fd30c95acf4a1ea580bf21a
Спасибо за разъяснения
Написал таки клиента для ios. Суть такая: на windows запущен движок, со смартфона делается http запрос, в ответ приходит ссылка, вставляется в плеер.
Но не могу сказать, что такой вариант меня бы устроил. Нет возможности держать сервер постоянно в рабочем состоянии. Хочу, чтобы не было взаимодействия с windows-компьютером. Подскажите, пожалуйста, что нужно для того, чтобы реализовать на ios. Что почитать, с чем ознакомиться?
Нет возможности держать сервер постоянно в рабочем состоянии.
Что мешает держать сервер в любом другом месте - VPS/VDS (linux/arm), любой линуксовый АРМ мини-хост (RPi и его клоны) и т.д?
что нужно для того, чтобы реализовать на ios. Что почитать, с чем ознакомиться?
Нужно “всего лишь” реализовать движок Ace Stream “c нуля” под iOS/macOS, при этом исходников нет (и у нас пока в планах нет открывать исходники движка).
А если говорить про реализацию движка на ios, то каковы масштабы работы, с какими сложностями пришлось бы столкнуться и что вообще нужно знать для этого? Просто пока движок представляет “чёрный ящик” и как он работает, непонятно
то каковы масштабы работы, с какими сложностями пришлось бы столкнуться и что вообще нужно знать для этого?
Если грубо, и касаться только части “смотреть”, но не “вещать”, то нужно написать свою торрент-качалку+HTTP прокси сервер и связать это все слоем АПИ.
Какую-то более конкретную, точечную информацию, если вдруг руки дойдут, и знаний хватит, я смогу здесь получить ?
Какую-то более конкретную, точечную информацию
Нет конечно. Разве это не очевидно из фразы “у нас пока в планах нет открывать исходники движка”?
Да, и если вдруг и это не очевидно - для нас не проблема портировать Ace Stream под iOS/macOS. Проблема в том, что нам не нужно приложение, которое нельзя опубликовать в яблочном аппсторе.
Если грубо, и касаться только части "смотреть", но не "вещать", то нужно написать свою торрент-качалкуа подскажите, как по contentId получить торрент файл или поток?
как по contentId получить торрент файл или поток?
“получить” как и откуда? Если локально, то движок сохраняет торрент-файлы в .ACEStream/collected_torrent_files/
А если через http АПИ и “удаленно”, то см. Engine HTTP API - Ace Stream Wiki
я пытаюсь разобраться, как работает движок
Если грубо, и касаться только части "смотреть", но не "вещать", то нужно написать свою торрент-качалку+HTTP прокси сервер и связать это все слоем АПИ.Ладно, есть не ContentId, есть info hash. С помощью него вы качаете файл с видео трансляции?
я пытаюсь разобраться, как работает движок
тогда начинать нужно с bep_0003.rst_post
есть infohash. С помощью него вы качаете файл с видео трансляции?
в том числе. Про инфохеш проще понять на примере Magnet-ссылка — Википедия
Но в целом infohash, content ID и транспортные файлы (.torrent или .acelive) это все всего лишь разные способы достижения одной и той же цели - получить информацию об участниках и ресурсах Р2Р сети.
Не совсем понимаю, как скрыть ip адрес сервера. Например, если запускаешь стрим на виртуальной машине, на компьютере, то в расшифровке acelive файла анонс отображается например так httр://192.168.0.1:7282/announce
То есть, отображается ip локальной машины. Но, если добавляешь трансляцию на удалённом сервере, то в анонсе отображается ip адрес сервера httр://ip_адрес_сервера:порт/announce
А если сервер скрыт за антидоссом, это практически уязвимость для различных манипуляций нехорошими людьми. При знании реального ip адреса сервера, сам антидосс становится совершенно бесполезным.
Читал документацию, но так и не понял, как формируется этот анонс. Пробовал добавлять --tracker и --metatracker, это работает, но вместе с ними всё равно отображается и реальный ip адрес сервера. Может есть решение этого вопроса? Ткните пожалуйста носом, не могу сам найти.
Пробовал добавлять --tracker и --metatracker, это работает, но вместе с ними всё равно отображается и реальный ip адрес сервера.
см. Streaming/en - Ace Stream Wiki - для начала попробовать --skip-internal-tracker