Guten Tag, Habr.
Ich habe mich entschlossen, eine der Möglichkeiten aufzuzeigen, wie Sie Ihren Lieblingsfilm / Ihre Lieblingsserie in hoher Qualität ansehen können, ohne dumme Websites zu besuchen, auf denen Sie im Casino spielen möchten.
Ich werde sofort eine Reservierung vornehmen. In keinem Fall fordere ich Sie auf, Raubkopien zu verwenden. Piraterie ist böse. Kaufen Sie immer lizenzierte Inhalte.
Nun, für diejenigen, die den nicht urheberrechtlich geschützten Torrent auf ihrem Smart-TV sehen möchten, ohne auf den Download zu warten, ist unten ein interessanter Weg.
Ich habe einen Samsung Smart-TV, auf dem ich versucht habe, einen Film auf verschiedene Arten anzusehen.
Ich habe versucht, minidlna unter Ubuntu zu installieren. Bis zu einer gewissen Zeit funktionierte dies recht bequem, aber eines Tages begann die Anwendung im Fernsehen in regelmäßigen Abständen zu fliegen. Ich habe immer noch nicht herausgefunden, womit dies zusammenhängt. Möglicherweise ist ein erfolgloses Update eingetroffen. In jedem Fall konnten Sie nur vollständig heruntergeladene Inhalte ansehen, was nicht sehr interessant war.
Ich habe auf altmodische Weise versucht, Filme auf eine externe Festplatte hochzuladen und an einen Fernseher anzuschließen. Nach ein paar Mal hat es mich gestört.
Infolgedessen habe ich lange Zeit nur den im Fernseher eingebauten Browser durchgesehen. Nach einiger Zeit wurde diese Methode auch schrecklich.
Ich wollte etwas Bequemes und Einfaches, und damit ich nicht sofort wartete, bis der gesamte Inhalt geladen war.
Sie sagen, es gibt einen Chromecast. Aber ich wollte alles ohne zusätzliche Geräte bei mir machen.
Wie sich herausstellte, unterstützt der integrierte Browser (im Gegensatz zu Desktop Chrome) HLS. Warum nehmen wir nicht einfach den hls-Stream auf dem Laptop auf und schauen ihn uns über den Browser an.
Und so lass uns gehen.
1. Wir setzen einen Torrent-Client
Es gibt ein sehr cooles npm-Paket namens Torrent. Alles wäre in Ordnung, aber er weiß nicht, wie er eine Datei und eine Liste zum Herunterladen auswählen und die Download-Geschwindigkeit begrenzen soll. Es ist sehr wichtig. Aber es ist minimalistisch, nimmt Feste sehr schnell auf und schüttelt es perfekt im sequentiellen Modus, was wir brauchen.
Ich musste in den Eingeweiden stöbern und die nötige Funktionalität hinzufügen. Und so setzen wir Strom aus einer Gabel
npm install 'https://github.com/zim32/torrent.git#master' -g
Laden Sie eine Torrent-Datei oder einen Magnet-Link herunter.
Um eine Liste der Dateien zu erhalten, müssen Sie den Befehl info ausführen
torrent info some.torrent | less
Suchen Sie den benötigten Dateinamen (nicht den Pfad) und führen Sie den Befehl aus
torrent some.torrent --select 'FILE_NAME' --downloadLimit 1000000
Wenn alles in Ordnung ist, sehen Sie Download-Statistiken, Anzahl der Peers usw. Dateien werden dem aktuellen Verzeichnis hinzugefügt. Geschwindigkeitsbegrenzung in Byte / s.
Die Einschränkung ist notwendig, da in meinem Fall der Torrent den gesamten Kanal verstopft, der Router defekt wird und weitere Bremsen zwischen Laptop und Smart-TV auftreten. Die Hauptsache ist, dass die Geschwindigkeit höher ist als die Bitrate des Streams, sonst kommt es zu Lasten und Puffern.
HLS-Stream erstellen
Installieren Sie ffmpeg. In meinem Fall funktionierte alles mit dem üblichen ffmpeg aus dem Repository.
apt install ffmpeg
Wir erstellen ein öffentliches Verzeichnis, in das unser Stream gehen wird.
Ferner sind mehrere Optionen möglich. Wenn das Video in der Quelldatei im h264-Format vorliegt und das Audio AAC ist, können Sie versuchen, den Stream nicht neu zu codieren. Führen Sie in diesem Fall den Stream auf diese Weise aus
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
Wenn die Codecs unterschiedlich sind, müssen Sie im laufenden Betrieb transkodieren. Auf meinem Laptop hielt ffmpeg mit dem Stream Schritt.
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
Mit den Optionen -map 0: 0 und -map 0: 1 vibrieren wir die gewünschten Kanäle. Video und russischer Track. Die Option -map_chapters -1 entfernt den gesamten Müll für alle Fälle in Form von Kapitelinformationen usw.
Sie können die verfügbaren Kanäle mit dem Befehl ffprobe movie.mkv anzeigen
Erstellen Sie einen Server
In demselben Ordner, in dem sich der Stream befindet, müssen Sie die Datei index.html mit dem folgenden Inhalt ablegen
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <video src="out.m3u8" controls></video> </body> </html>
Installieren Sie einen einfachen http-Server.
npm i http-server -g
Wir starten den Server
http-server -a 0.0.0.0 -c-1
Einen Film schauen
Jetzt reicht es auf dem Fernseher aus, einen Browser mit der Adresse Ihres Laptops zu öffnen, z. B.
192.168.1.200 : 8080, und zu genießen.
Vielen Dank für Ihre Aufmerksamkeit.