Tabla de Contenidos
Acestream
Ace Stream un protocolo P2P para streaming de multimedia utilizando la tecnología Bitorrent.
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 API HTTP.
Con el engine funcionando, tendremos disponible:
http://localhost:6878/ace/getstream
locahostes 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=<ID_ACESTREAM>
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=<URL_LISTA.m3u8>
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 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
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 proyecto independiente que, usando Docker integra Ace Stream Engine y 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://<IP_SERVIDOR>:8000/pid/<ID_ACESTREAM>/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 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 "<DIRECCION_IP_HOST>" --source "<URL_STREAMING.ts>" --bitrate "0" \
--max-connections "300"
Cambios para mejorar tiempos de reconexion a los source: --source-read-timeout 15 --source-reconnect-interval 1
Donde:
--stream-sourceindica 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ámetroservice-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.0para 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.
- newTrackon: monitorización de trackers. Para poder elegir los que tengan mejor uptime.
Los diferentes valores aceptados en category:
informationalentertainingeducationalmoviesdocumentariessportfashionmusicregionalethnicreligionteleshoperotic_18_plusother_18_pluscyber_gamesamateurwebcamkidsseries
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/<CONTRASEÑA>/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.
- Documentación de la interfaz HTTP (también en su Wiki)
Modificar opciones
Podemos utilizar la API HTTP para modificar algunas opciones. Por ejemplo:
http://ip.host:puerto/app/<CONTRASEÑA>/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=<ID_ACESTREAM>
Donde:
127.0.0.1es la dirección IP del equipo que tiene el acestream engine.- 6878 es el puerto que usa el acestream engine.
ID_ACESTREAMes el identificador de Acestream que queremos reproducir.
Si queremos arrancar un engine de Acestream utilizando Docker, podemos usar la imagen de 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=<CONTENT_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=<CONTENT_ID>&sid=1. Luego podríamos tener http://ip.servidor:6878/ace/getstream?id=<OTRO_CONTENT_ID>&sid=2 y http://ip.servidor:6878/ace/getstream?id=<Y_OTRO_CONTENT_ID>&sid=3, etc.
Reproducir torrent
http://127.0.0.1:6878/ace/getstream?infohash=<INFO_HASH_TORRENT>
Donde:
127.0.0.1es la dirección IP del equipo que tiene el acestream engine.- 6878 es el puerto que usa el acestream engine.
INFO_HASH_TORRENTes 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 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.
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
http://ip.engine.acestream:6878/ace/getstream?format=json&id=<ID_ACESTREAM>
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=<ID_ACESTREAM>
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-idtvg-shift: ajuste horario para la lista EPG. +1, -1, etc.tvg-name: nombre interno del canalgroup-titletvg-logoaudio-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
- LiveSport: todo tipo de deportes y enlaces para Sopcast, Acestream y Flash.
- 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
- AceStreamID: obtener ID de Acestream de páginas web (conectar usando una VPN o Tor)
- Ace Stream Broadcasts Search: buscador de canales Acestream (conectar usando una VPN o Tor).
- Acexy: proxy para permitir múltiples conexiones al motor de AceStream.

