Herramientas de usuario

Herramientas del sitio


informatica:software:acestream

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 
  • 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=<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-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.

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/<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.

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.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 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.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 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-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

informatica/software/acestream.txt · Última modificación: por tempwin