====== Acestream ====== Ace Stream un protocolo P2P para streaming de multimedia utilizando la tecnología Bitorrent. * [[http://www.acestream.org/|Web oficial]] * [[https://wiki.acestream.media/Download|Descargas]] Suele utilizar el puerto 8621 ===== Programas ===== ==== Ace Stream Media ==== Aplicación multimedia universal con todas las funciones con cliente P2P incorporado y reproductor multimedia. ==== Ace Stream Engine ==== El encargado de procesar contenido de Acestream. Sin él, no podemos ver nada en este formato. Sin embargo, es posible enviar la salida a cualquier reproductor de vídeo gracias a su [[https://wiki.acestream.media/Engine_HTTP_API|API HTTP]]. Con el //engine// funcionando, tendremos disponible: http://localhost:6878/ace/getstream * ''locahost'' es el equipo que ejecuta en engine de Acestream. * 6878 es el puerto por defecto que usa el engine Si tenemos una ID de Acestream, podríamos reproducirla mediante la URL: http://127.0.0.1:6878/ace/getstream?id= Donde ''ID_ACESTREAM'' sería el "canal" de Acestream que queremos reproducir. Cualquier reproductor de vídeo que permita la reproducción de contenido de red, será capaz de visualizarlo. Para listas HLS: http://127.0.0.1:6878/hls/manifest.m3u8?manifest_url= Ejemplo: http://127.0.0.1:6878/hls/manifest.m3u8?manifest_url=https://bitcdn-kronehit.bitmovin.com/v2/hls/playlist.m3u8 Reproducir un torrent. A través de la URL: http://127.0.0.1:6878/ace/getstream?infohash=24eb6655740f4f63d00845b9d2024f0e9eeaf656 El identificador que va en ''infohash'' es el info-hash contenido en el archivo ''.torrent''. Hay versión también para teléfonos Android y dispositivos con Android TV. Recordamos: * armv7 para Android de 32 bits * armv8 para Android de 64 bits. Para Docker hay varios proyectos para no tener que instalar directamente Ace Stream como por ejemplo [[https://github.com/martinbjeldbak/acestream-http-proxy|acestream-http-proxy]] ==== Ace Stream Live TV ==== Motor Acestream y LiveTV para poner la lista de reproducción de los canales. Para terminales Android. ==== acestream-launcher ==== Permite abrir enlaces Acestream desde el reproductor que digamos (por defecto, VLC): acestream-laucher acestream://1234abcde Para lanzarlo con otro reproductor, por ejemplo **mpv**: acestream-launcher acestream://1234abcde --player mpv * [[https://github.com/jonian/acestream-launcher|Repositorio de código oficial de acestream-launcher]] ===== Resolución de problemas ===== ==== Arch Linux ==== Debe ejecutarse el motor de Acestream antes de poder usarlo: sudo systemctl start acestream-engine.service Si no se tiene la ''unit'' para systemd, se lanza: /usr/bin/acestreamengine --client-console --bind-all ===== Acestream Proxy ===== Existe un [[https://github.com/ikatson/docker-acestream-proxy|proyecto independiente]] que, usando Docker integra **Ace Stream Engine** y [[https://github.com/ValdikSS/aceproxy|aceproxy]], permite poder ver contenido Acestream sin tener que instalar un reproductor específico u otras dependencias de Acestream. docker run -t -p 8000:8000 ikatson/aceproxy Una vez que esté en funcionamiento el contenedor, desde un reproductor que soporte la reproducción de medios de red, podremos abrir contenido de Acestream con la siguiente URL: http://:8000/pid//stream.mp4 * ''IP_SERVIDOR'': dirección IP del equipo que esté ejecutando el contenedor de Docker con el Aceproxy. * ''ID_ACESTREAM'': identificador del contenido Acestream que queremos reproducir. * ''stream.mp4'': nombre del fichero que va a reproducir. Podemos darle el nombre que queramos. Por ejemplo: ''http://192.168.0.100:8000/pid/608ffde844a8e6f4f7c7fb9783aa3459c818b9f8/stream.mp4'' Lo mismo, pero con [[informatica:sistemas_operativos:virtualizacion:docker:docker_compose|Docker Compose]] y un fichero ''docker-compose.yml'' con el contenido: --- version: '3.3' services: acestream: image: ikatson/aceproxy container_name: aceproxy ports: - '8000:8000' ===== Crear un ID de Acestream ===== Si queremos retransmitir a través de Acestream. Para ello, necesitamos tener el //engine// de Ace Stream. En //engine// de Ace Stream solo soporta streams de entrada en formato MPEG TS sobre HTTP y HLS. docker run --name nombredocker --rm -p 8630:8630/tcp -p 8630:8630/udp \ -v acestream:/data lob666/myroom --stream-source --port 8630 \ --skip-internal-tracker --tracker "udp://tracker.openbittorrent.com:80, http://www.proxmox.com:6969/announce, udp://seedbay.net:2710/announce" \ --name "nombre_del_canal" --title "Nombre leglible del canal" \ --publish-dir "/tmp" --cache-dir "/data" --quality "HD" \ --category "amateur" --service-access-token "pass" --service-remote-access --stats-report-peers --log-debug "1" \ --max-peers "30" --max-upload-slots "30" --source-read-timeout 60 --source-reconnect-interval 1 \ --host "" --source "" --bitrate "0" \ --max-connections "300" Cambios para mejorar tiempos de reconexion a los source: ''%%--%%source-read-timeout 15 %%--%%source-reconnect-interval 1'' Donde: * ''%%--%%stream-source'' indica que queremos que el //engine// se encargue de coger un stream de entrada y generar el stream P2P (Ace Stream). * ''%%--%%service-remote-access'': activa una interfaz web para ver estadísticas. * ''%%--%%service-access-token'': contraseña/token para poder ver las estadísticas (ver parámetro ''service-remote-access''). * ''%%--%%name'': nombre del stream (solo se permite ''[a-z0-9_-]''. * ''%%--%%title'': nombre legible del stream. * ''%%--%%source'': URL del stream MPEG TS / HLS que queremos retransmitir. * ''%%--%%source-read-timeout'': tiempo de espera de lectura del streaming de origen (en segundos). * ''%%--%%source-reconnect-interval'': tiempo entre reconexiones del streaming de origen (en segundos). * ''%%--%%bitrate'': bit rate de media del streaming de salida. ''0'' para automático. * ''%%--%%publish-dir'': directorio donde se crean los ficheros de transporte * ''%%--%%skip-internal-tracker'': no usar el traker interno. * ''%%--%%port'': puerto de funcionamiento del nodo (por defecto 7764) * ''%%--%%permanent'': marca la emisión como 24/7 (disponible siempre) * ''%%--%%date-start'': hora de inicio del streaming. * ''%%--%%date-end'': fecha de fin del streaming. * ''%%--%%quality'': ''auto'', ''SD'', ''HD'' * ''%%--%%category'': categoría del streaming. * ''%%--%%logo-url'': URL del logo del stream * ''%%--%%description'': descripción del streaming. * ''%%--%%tracker'': URL de trackers externos. No poner más de 2 para no dispersar conexiones (queremos que se encuentren todos los peers). Si no funcionasen los trackers, se usa DHT. * ''%%--%%max-connections'': número máximo de conexiones TCP y UDP connections (por defecto 1000). * ''%%--%%max-peers'': número máximo de conexiones TCP y UDP a otros nodos (por defecto, 50). Se suele limitar al 70% de la conexion para que los clientes descarguen lo mas rápido posible los chunks. * ''%%--%%cache-dir'': ruta al directorio donde se guarda la caché. * ''%%--%%publish-dir'': ruta al directorio donde se crean los ficheros de transporte. * [[https://telegra.ph/Como-crear-y-Lanzar-una-ID-de-ACEstream-en-1-minuto-04-08|Como crear y Lanzar una ID de ACEstream en 1 minuto]] * [[https://docs.acestream.net/en/broadcasting/|Documentación oficial sobre broadcasting con Ace Stream]] ([[https://wiki.acestream.media/Streaming/en|Wiki]]) * [[https://forum.acestream.media/t/i-need-help-to-stream-on-acestream/3690/6|I need help to stream on Acestream]] * [[https://newtrackon.com/|newTrackon]]: monitorización de trackers. Para poder elegir los que tengan mejor uptime. Los diferentes valores aceptados en ''category'': * ''informational'' * ''entertaining'' * ''educational'' * ''movies'' * ''documentaries'' * ''sport'' * ''fashion'' * ''music'' * ''regional'' * ''ethnic'' * ''religion'' * ''teleshop'' * ''erotic_18_plus'' * ''other_18_plus'' * ''cyber_games'' * ''amateur'' * ''webcam'' * ''kids'' * ''series'' Si no queremos que cambie la ID del canal generado, debemos usar el mismo bitrate, nombre de canal (''%%--%%name''), trackers, puerto y directorio de caché. ==== Estadísticas ==== Si lo hemos activado, podremos acceder a una interfaz web desde http://ip.host:puerto/app/monitor Si hemos indicado contraseña: http://ip.host:puerto/app//monitor Veremos un fichero JSON de este estilo: { "download_from": [], "source_reconnects": 0, "pid": 1, "upload_speed": 25470, "max_upload_slots": 50, "download_speed": 0, "transport_stats": { "real": { "my_first": 191, "pp": [], "window_first": 191, "min": 191, "max": 217, "storage": [], "pos": 217, "my_last": 217, "window_last": 217 } }, "port": 8630, "max_connections": 1000, "upload_slots": 50, "memory_usage": null, "cpu_percent": 1.2, "download_limit": 0, "upload_to": [], "download_hash": "98b6d854bdf4ea3061e3a240d5abfda07f1f7e25", "version": "3.1.49", "type": "source", "source_connected": true, "status": "running", "source_last_connect": 1660912012, "timestamp": 1660912088, "connected_peers": [], "last_stats_update": 1660912072, "private_node": false, "run_time": 76, "stats_report_peers": 0, "upload_limit": 0, "stats_report_interval": 60, "active_connections_count": 1, "connected_peers_count": 1, "max_peers": 50, "content_id": "965145724cda1c0f12c862e91b6429fedca3a1f5", "source_download_rate": 199625 } ''content_id'' contendría la ID del canal de Ace Stream que hemos generado y estamos emitiendo. * [[https://docs.acestream.net/en/broadcasting/administration/node-http-interface/|Documentación de la interfaz HTTP]] (también en su [[https://wiki.acestream.media/Engine_HTTP_API|Wiki]]) ==== Modificar opciones ==== Podemos utilizar la API HTTP para modificar algunas opciones. Por ejemplo: http://ip.host:puerto/app//update?max_peers=100&max_upload_slots=30 ===== Reproducir contenido Acestream ===== Para poder reproducir un "canal" de Acestream es necesario tener instalado el //acestream engine//. ==== Reproducir desde Ace Stream Media ==== Pegamos la ID de Acestream en el apartado **Open Link**. **Ace Stream Media** también incluye el **Ace Player** que es una versión de VLC modificada para reproducir Acestream. ==== Reproducir desde cualquier reproductor ==== Le pasaremos la siguiente ruta de red: http://127.0.0.1:6878/ace/getstream?id= Donde: * ''127.0.0.1'' es la dirección IP del equipo que tiene el //acestream engine//. * 6878 es el puerto que usa el //acestream engine//. * ''ID_ACESTREAM'' es el identificador de Acestream que queremos reproducir. Si queremos arrancar un engine de Acestream utilizando Docker, podemos usar la imagen de [[https://hub.docker.com/r/blaiseio/acestream|blaiseio/acelink]]. Ejemplo de ''docker-compose.yml'': version: '3.3' services: acestream: image: blaiseio/acelink container_name: acestream-server ports: - '6878:6878' Luego, podrías reproducir a través de la dirección ''http://ip.servidor:6878/ace/getstream?id='' **Esto permite reproducir solo un streaming a la vez**. Para reproducir varios a la vez, podemos añadir el parámetro ''sid'' seguido de un número que no se repita. Ejemplo: ''http://ip.servidor:6878/ace/getstream?id=&sid=1''. Luego podríamos tener ''http://ip.servidor:6878/ace/getstream?id=&sid=2'' y ''http://ip.servidor:6878/ace/getstream?id=&sid=3'', etc. ==== Reproducir torrent ==== http://127.0.0.1:6878/ace/getstream?infohash= Donde: * ''127.0.0.1'' es la dirección IP del equipo que tiene el //acestream engine//. * 6878 es el puerto que usa el //acestream engine//. * ''INFO_HASH_TORRENT'' es el info hash del fichero torrent. Por ejemplo, para reproducir mediante Acestream el corto hecho con Blender "Big Buck Bunny": http://127.0.0.1:6878/ace/getstream?infohash=88594aaacbde40ef3e2510c47374ec0aa396c08e Esto puede ser muy útil para reproducir [[https://es.wikipedia.org/wiki/Magnet|enlaces magnet]] ya que contienen el info hash del torrent y así no hay que calcularlo. ==== Enviar contenido a la televisión ==== Es posible hacer "cast" desde la aplicación para Android y así enviar el contenido Acestream a una televisión y que se vea en ella en lugar de en el dispositivo Android. {{ https://telegra.ph/file/dca25cd7ad80652f6c405.png |}} El móvil se convertirá en el mando a distancia. Durante todo el tiempo, el móvil tendrá que estar conectado a la misma red que la televisión. ===== API HTTP del engine ===== * [[https://docs.acestream.net/developers/api-reference/|API Reference - DAO Ace Stream]] http://ip.engine.acestream:6878/ace/getstream?format=json&id= Ejemplo de salida: { "response": { "stat_url": "http://ip.engine.acestream:6878/ace/stat/d58233fb0ba99e3d052a344a44c684f7d21be704/e16419dfdb5db7b8e3f11e123f4a962e", "playback_session_id": "9b145a8dc5eb1761a7ec2b526804bc59362b3fd8", "is_live": 1, "playback_url": "http://ip.engine.acestream:6878/ace/r/d58233fb0ba99e3d052a344a44c684f7d21be704/e16419dfdb5db7b8e3f11e123f4a962e", "is_encrypted": 0, "command_url": "http://ip.engine.acestream:6878/ace/cmd/d58233fb0ba99e3d052a344a44c684f7d21be704/e16419dfdb5db7b8e3f11e123f4a962e", "client_session_id": -1, "infohash": "d58233fb0ba99e3d052a344a44c684f7d21be704" }, "error": null } ==== Obtener stream HTTP ==== http://ip.engine.acestream:6878/ace/getstream?id= Como respuesta, si ha ido bien, devolverá el streaming progresivo que podremos verlo con cualquier reproductor que permita la reproducción por red. ===== Crear lista de reproducción ===== La estructura de un archivo ''m3u'' debe contener una serie de etiquetas determinadas distribuidas en tres líneas, que vamos a explicar a continuación: * ''#EXTM3U'': obligatoria. Debe ir al principio del documento y solo aparece una vez. Indica a los reproductores que esa es una lista M3U Extendida (incluye atributos adicionales que no están presentes en una lista M3U básica). * ''#EXTINF'': Indica donde comienzan los metadatos adicionales de cada streaming. Debe usarse una línea para cada streaming incluido en la lista. Por ejemplo si listamos 5 canales de TV, habrá que crear 5 líneas La etiqueta ''#EXTINF'' tiene la siguiente estructura: #EXTINF:(duración), (atributos),(título del canal) * ''duración'': duración en segundos del archivo multimedia referenciado. Si es un directo, se pone 0 (se puede pausar y reanudar) o -1 (no se puede pausar). * ''atributos'': * ''tvg-id'' * ''tvg-shift'': ajuste horario para la lista EPG. +1, -1, etc. * ''tvg-name'': nombre interno del canal * ''group-title'' * ''tvg-logo'' * ''audio-track'' Si queremos tener EPG, indicaríamos la ubicación de la guía con el atributo ''url-tvg'', por ejemplo: #EXTM3U url-tvg="https://raw.githubusercontent.com/dracohe/CARLOS/master/guide_IPTV.xml" Para referenciarlo luego en la línea con el canal correspondiente, usaremos el atributo ''tvg-id'' con el mismo nombre que aparezca en la etiqueta ''channel'' del fichero con la guía: #EXTM3U url-tvg="https://raw.githubusercontent.com/dracohe/CARLOS/master/guide_IPTV.xml" #EXTINF:-1 tvg-id="EUROSPORT1HD" ,EuroSport 1 1080 acestream://123a37534656efcc6179c1b7693335d5e8212123 Ejemplo de lista M3U: #EXTM3U url-tvg="https://raw.githubusercontent.com/dracohe/CARLOS/master/guide_IPTV.xml" #EXTINF:-1 group-title="EuroSport" tvg-id="EUROSPORT1HD" tvg-logo="https://img.sport-tv-guide.live/images/tv-station-es-eurosport-1-615.png" ,EuroSport 1 1080 acestream://123a37534656efcc6179c1b7693335d5e8212123 #EXTINF:-1 group-title="EuroSport" tvg-id="EUROSPORT2HD" tvg-logo="https://img.sport-tv-guide.live/images/tv-station-es-eurosport-2-616.png" ,EuroSport 2 1080 acestream://1234779c721fc7d87eb6d7df7ab11bf751ceb123 #EXTINF:-1 group-title="Otro contenido" tvg-id="CUATRO HD" tvg-logo="https://img.sport-tv-guide.live/images/tv-station-cuatro-619.png" ,CUATRO 1080 acestream://123ec35f4662be1af96963245bfa88fb7d024123 #EXTINF:-1 group-title="Otro contenido" tvg-id="BE MAD" tvg-logo="https://img.sport-tv-guide.live/images/tv-station-be-mad-621.png" ,x_BeMad acestream://12367a00f264736c1d47c1cc3e754447ca8fa123 #EXTINF:-1 group-title="Otro contenido" tvg-id="NAT GEO HD" tvg-logo="https://brandlogos.net/wp-content/uploads/2016/05/national-geographic-channel-logo-vector-download-400x400.jpg" ,National Geographic acestream://123eaac59852e51d467dc88a890be24562309123 #EXTINF:-1 group-title="Otro contenido" tvg-id="HISTORIA" tvg-logo="https://1000logos.net/wp-content/uploads/2020/09/History-Channel-Logo-500x313.jpg" ,Historia acestream://1235a124f24deca70fb59fa1c413dfe580f19123 #EXTINF:0 group-title="Nada" tvg-logo="https://m.drawgaze.online/img/md_home_logo.png" ,Un texto cualquiera https://? ===== Recursos ===== * [[http://livesport.ws|LiveSport]]: todo tipo de deportes y enlaces para Sopcast, Acestream y Flash. * [[https://soccerstreams.net/|Soccer Streams]]: Fútbol (Flash) * [[http://www.sport365.live/en/home]]: Todos los deportes (Flash) * [[http://www.vipbox.me/]]: Todos los deportes (Flash) * [[http://livetv.sx]]: Todos los deportes (Flash) * [[https://www.futbolgratis.workers.dev]]: calendario de eventos y canal de Acestream. * [[http://www.livesoccertv.com/es/schedules/]]: calendario de partidos y canal * [[http://www.wheresthematch.com/tv/home.asp]]: calendario de partidos y canal * [[https://acestreamid.com/|AceStreamID]]: obtener ID de Acestream de páginas web (conectar usando una VPN o Tor) * [[https://acestreamsearch.net|Ace Stream Broadcasts Search]]: buscador de canales Acestream (conectar usando una VPN o Tor). * [[http://oldforum.acestream.media/index.php?topic=1479.0|Anuncio de lanzamiento de ACE Stream]] * [[https://github.com/vstavrinov/acestream-service]] * [[https://github.com/vstavrinov/acestream_search]] * [[https://telegra.ph/Como-arrancar-una-id-de-acestream-en-pocos-minutos-Entra-en-ACEstream-Spanish-01-16|Como arrancar una id de acestream en pocos minutos. Por @ACEstream_Spanish]] * https://raw.githubusercontent.com/electroperra/streaming/main/lista1.m3u * https://raw.githubusercontent.com/xbc76/list/main/deportes * [[https://telegra.ph/Tutorial-Ace-Stream-LiveTv-10-06|Tutorial Ace Stream LiveTv]] * [[https://telegra.ph/Configuracion-Acestream-Media-10-05|Tutorial Ace Stream Media]] * [[https://www.futbolenlatv.es/deporte|Programación de deportes en la TV]] * [[https://github.com/Javinator9889/acexy|Acexy]]: proxy para permitir múltiples conexiones al motor de AceStream.