Buen dia, Habr.
Decidí compartir una de las formas en que puedes ver tu película / serie favorita en alta calidad sin visitar ningún sitio tonto que quiera que juegues en el casino.
Haga una reserva de inmediato, de ninguna manera le insto a usar contenido pirateado. La piratería es malvada. Siempre compre contenido con licencia.
Bueno, para aquellos que quieren ver el torrent, que no está protegido por derechos de autor, en su televisor inteligente, sin esperar la descarga, a continuación es una forma interesante.
Tengo un televisor inteligente Samsung, en el que intenté ver una película de diferentes maneras.
Traté de instalar minidlna en Ubuntu. Hasta hace algún tiempo, esto funcionó bastante convenientemente, pero un día la aplicación en el televisor comenzó a volar periódicamente. Todavía no he descubierto con qué está conectado esto, es posible que haya llegado una actualización fallida. En cualquier caso, solo podía ver contenido descargado completamente, lo que no era muy interesante.
Intenté a la antigua usanza subir películas a un disco duro externo y conectarlo a un televisor. Después de un par de veces me molestó.
Como resultado, durante mucho tiempo solo miré a través del navegador integrado en el televisor. Después de un tiempo, este método también se puso terriblemente.
Quería algo conveniente y simple, y así no esperé inmediatamente hasta que se cargó todo el contenido.
Dices que hay un Chromecast. Pero quería hacer todo sin dispositivos adicionales en mi casa.
Al final resultó que, el navegador incorporado (a diferencia de Chrome de escritorio) es compatible con HLS. Bueno, ¿por qué no simplemente recogemos la transmisión hls en la computadora portátil y la vemos a través del navegador?
Y entonces vamos.
1. Ponemos un cliente torrent
Hay un paquete npm muy interesante llamado torrent. Todo estaría bien, pero él no sabe cómo seleccionar un archivo y una lista para descargar y limitar la velocidad de descarga. Esto es muy importante Pero es minimalista, recoge fiestas muy rápidamente y lo sacude perfectamente en modo secuencial, que es lo que necesitamos.
Tuve que hurgar en las entrañas y agregar la funcionalidad necesaria. Y entonces ponemos torrent de un tenedor
npm install 'https://github.com/zim32/torrent.git#master' -g
Descargue un archivo torrent o un enlace magnético.
Para obtener una lista de archivos, debe ejecutar el comando de información
torrent info some.torrent | less
Encuentre el nombre de archivo que necesitamos (no la ruta) y ejecute el comando
torrent some.torrent --select 'FILE_NAME' --downloadLimit 1000000
Si todo está bien, verá estadísticas de descarga, número de pares, etc. Los archivos se agregarán al directorio actual. Límite de velocidad en Byte / s.
La restricción es necesaria, porque en mi caso el torrente obstruye todo el canal, el enrutador se daña y se producen más frenos entre la computadora portátil y el televisor inteligente. Lo principal es que la velocidad sea mayor que la tasa de bits de la transmisión, de lo contrario habrá cargas y almacenamiento en búfer.
Haciendo HLS Stream
Instalar ffmpeg. En mi caso, todo funcionó con el ffmpeg habitual del repositorio.
apt install ffmpeg
Creamos un directorio público donde irá nuestra transmisión.
Además, varias opciones son posibles. Si en el archivo fuente el video está en formato h264 y el audio es AAC, puede intentar no transcodificar la transmisión. En este caso, ejecute la transmisión de esta manera
ffmpeg -re -i 'torrent_dir/movie.mkv' -codec copy -map 0:0 -map 0:1 -map_chapters -1 -movflags default_base_moof+frag_keyframe -f hls -hls_playlist_type event ~/www/player/out.m3u8
Si los códecs son diferentes, tendrá que transcodificar sobre la marcha. En mi computadora portátil, ffmpeg siguió el ritmo de la transmisión.
ffmpeg -re -i 'torrent_dir/movie.avi' -c:v libx264 -preset slow -r 24 -x264opts fps=24:bitrate=2000:pass=1:vbv-maxrate=4000:vbv-bufsize=8000:keyint=24:min-keyint=24:scenecut=0:no-scenecut -c:a aac -b:a 256k -map 0:0 -map 0:1 -map_chapters -1 -movflags default_base_moof+frag_keyframe -f hls -hls_playlist_type event ~/www/player/out.m3u8
Con las opciones -map 0: 0 y -map 0: 1, vibramos los canales deseados. Video y pista rusa. La opción -map_chapters -1 elimina toda la basura por si acaso en forma de información de capítulos, etc.
Puede ver los canales disponibles con el comando ffprobe movie.mkv
Crear un servidor
En la misma carpeta donde va la transmisión, debe colocar el archivo index.html con el siguiente contenido
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <video src="out.m3u8" controls></video> </body> </html>
Instale un servidor http simple.
npm i http-server -g
Iniciamos el servidor
http-server -a 0.0.0.0 -c-1
Viendo una pelicula
Ahora en el televisor, basta con abrir un navegador con la dirección de su computadora portátil, por ejemplo
192.168.1.200 : 8080 y disfrutar.
Gracias a todos por su atención.