• 30-11-2024, 19:47:13
    #28
    Selam,

    İlk önce bu videoyu indirebiliyormusun diye bir test et.

    Konsol'dan baktığımda parça - parça stream yapıyor sanki.

    https://iframe.mediadelivery.net/embed/197133/dc48a09e-d9bb-420a-83d7-72dc2304c034
    Eğer istediğin işi görüyorsa bu linkde detay bilgi var.

    Bu da fiyat hesaplama sayfası hosting ücretinden ucuza gelebilir. https://bunny.net/pricing/stream/#calculator

    Cloudflare'de de benzer birşey olabilir.

    Bu ara aramız bozuk ama hetzner'de böyle bir stream platformu kurup mp4'ü her session için ayrı yayın yaptırmakda çözüm olabilir. https://docs.hetzner.com/cloud/apps/list/owncast/ Yani yayın url'sini oturama göre oluşturmak.
    • upot
    upot bunu beğendi.
    1 kişi bunu beğendi.
  • 30-11-2024, 19:49:36
    #29
    http, https, hls, dash, rtmp, rtp, rts, flv tüm protokoller kopyalanabilir. Örnek verdiğiniz tv+ bile tüm yayınlarını push clone yapabilirsiniz.

    Son olarak şunu demek istiyorum. Bunu tamamen engellemeniz imkânsız ama yapabileceğiniz tek şey işi zorlaştırmak ama almak isteyen kişi her türlü alır.

    HLS+Token sistemi ile bir çok acemi girişimi engelleyebilirsiniz.
  • 30-11-2024, 19:50:52
    #30
    Hocam, videoların indirilmesini engellemeniz neredeyse imkansız bilginiz olsun, konu üzerinde bahsettiğiniz, parçalama methodu da birleştirmeyi bilenler için bir işe yaramayacaktır, ama işi bilmeyenler için videolarınızın çalınmasını oldukça zorlaştıracaktır.
  • 01-12-2024, 23:13:23
    #31
    Tekrardan merhaba iyi akşamlar,

    Süreci baya ilerlettim, büyük bir oranda engelleme yaptım. f12 debugger açıldığı zaman otomatik olarak içerik erişilemiyor ta ki console u kapatana kadar. Console kapanında sistem otomatik sayfaya refresh atıyor. Javascript devre dışı bırakıldığı zaman sayfa içerikleri komple gidiyor ve görüntülenemez hale geliyor. VDS yada Localdeki emulatör üzerinden siteye girip kendi cihazından kayıt alacak kişiler içinde video'nun ortasında filigran eklendı. Filigran session ı açık olan kullanıcının kullanıcı adını çekip ekranın ortasında yazdırmakta. Bu sayede bir kullanıcı kayıt alsa bile kendi kullanıcı adı videoda gözükecek. Filigranı silmesi için console u açması lazım ve console açıp filigranı silerse console kapandığı zaman sayfayı yenilediği için filigran geri geliyor. 1 gün içerisinde yapılan işlemler bu kadar canlıya aldığım zaman buradan paylaşacağım herkes inceleyip deneyebilir bir yerde açık varsa onuda düzeltiriz.
  • 02-12-2024, 18:59:06
    #32
    Öncelikli olarak şunu belirtmeden geçemeyeceğim, acemiler videoyu indiremez, fakat profesyonellerden kaçış yok.
    Reçeteniz ve kullanma kılavuzu aşağıdadır.

    HLS (HTTP Live Streaming) kullanarak videolarınızı parçalar halinde sunabilir ve indirilmeyi zorlaştırabilirsiniz. HLS kullanmak için aşağıdaki adımları izleyebilirsiniz:

    1. Gerekli Araçları ve Ortamı Hazırlayın

    HLS formatına dönüştürmek için FFmpeg kullanabilirsiniz. FFmpeg, açık kaynaklı ve güçlü bir multimedya aracıdır.
    2. Videoları HLS Formatına Dönüştürün

    HLS için MP4 videonuzu .m3u8 dosyası ve segment parçalarına (.ts dosyaları) bölmeniz gerekir.

    Örnek FFmpeg Komutu:


    ffmpeg -i input.mp4 -hls_time 10 -hls_playlist_type vod -hls_segment_filename "segment_%03d.ts" output.m3u8
    • -hls_time 10: Segmentlerin her biri 10 saniye olacak.
    • -hls_playlist_type vod: Video isteğe bağlı bir oynatma listesi olacak.
    • -hls_segment_filename: Segment dosyalarının adlandırma formatı.
    • output.m3u8: HLS oynatma listesi dosyası.
    Sonuç olarak:
    • output.m3u8: Ana oynatma listesi.
    • segment_000.ts, segment_001.ts, vb.: Video segmentleri.

    3. FFmpeg ile Rastgele İsimler Oluşturmak


    FFmpeg, varsayılan olarak segmentlere düzenli bir isim (örneğin, segment_000.ts, segment_001.ts) verir. Ancak bu isimleri rastgele hale getirmek için segment isimlerini dış bir araçla değiştirebilir veya FFmpeg sonrası bir işlem uygulayabilirsiniz.

    Yöntem 1: FFmpeg ve Dinamik PHP Betiği


    Segment dosyaları oluşturduktan sonra PHP ile isimleri rastgele hale getirebilirsiniz.

    <?php
    // Segment dosyalarını oku
    $segments = glob('segment_*.ts');
    
    // Rastgele dosya isimleri oluştur ve eski dosyaları yeniden adlandır
    $map = [];
    foreach ($segments as $segment) {
        $newName = bin2hex(random_bytes(8)) . '.ts'; // Rastgele isim
        rename($segment, $newName);
        $map[$segment] = $newName;
    }
    
    // Playlist dosyasını düzenle
    $playlist = file_get_contents('output.m3u8');
    foreach ($map as $oldName => $newName) {
        $playlist = str_replace($oldName, $newName, $playlist);
    }
    file_put_contents('output.m3u8', $playlist);
    ?>

    2. Segmentlere Rastgele Erişim ve Güvenlik


    Elde edilen rastgele segment isimleri, kullanıcıların dosyaları kolayca tahmin etmesini zorlaştırır. Ancak yine de güvenlik için:
    1. Segmentler için Token Kontrolü: Segment dosyalarına erişimi yalnızca doğrulanmış kullanıcılarla sınırlayın. Örneğin:
    <?php
    session_start();
    if (!isset($_SESSION['user'])) {
        die("Erişim izni yok.");
    }
    
    $file = $_GET['file'];
    $path = "/path/to/videos/hls/" . basename($file);
    
    if (file_exists($path)) {
        header('Content-Type: video/mp2t');
        readfile($path);
    } else {
        die("Dosya bulunamadı.");
    }
    ?>
    Playlist ve Segmentleri Dinamik Olarak Sunma: HLS playlist (.m3u8) dosyasını sunarken PHP kullanarak segment isimlerini dinamik olarak değiştirin.


    HLS.js ile Örnek HTML ve JavaScript Kod:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>HLS.js Örnek Video Oynatma</title>
        <script src="https://cdn.jsdelivr.net/npm/hls.js@latest"></script> <!-- HLS.js kütüphanesi -->
    </head>
    <body>
        <h1>HLS Video Oynatma Örneği</h1>
        <video id="video-player" controls autoplay width="640" height="360" style="border: 1px solid #000;">
            <!-- HLS.js desteklemeyen tarayıcılar için fallback -->
            Tarayıcınız video oynatmayı desteklemiyor.
        </video>
        <script>
            // Video elementini seç
            const video = document.getElementById('video-player');
    
            // HLS video kaynağını belirtin
            const videoSource = '/path/to/output.m3u8'; // HLS .m3u8 dosyasının yolu
    
            // HLS.js ile tarayıcı desteğini kontrol et
            if (Hls.isSupported()) {
                const hls = new Hls(); // HLS.js nesnesi oluştur
                hls.loadSource(videoSource); // HLS playlist dosyasını yükle
                hls.attachMedia(video); // Video elementine bağla
                hls.on(Hls.Events.MANIFEST_PARSED, () => {
                    console.log("HLS Manifest yüklendi, video oynatılıyor.");
                    video.play(); // Video otomatik başlatma
                });
            } else if (video.canPlayType('application/vnd.apple.mpegurl')) {
                // Safari gibi HLS desteği olan tarayıcılar
                video.src = videoSource;
                video.addEventListener('loadedmetadata', () => {
                    video.play(); // Video otomatik başlatma
                });
            } else {
                console.error("Bu tarayıcı HLS formatını desteklemiyor.");
                alert("Maalesef tarayıcınız HLS videolarını oynatmayı desteklemiyor.");
            }
        </script>
    </body>
    </html>
  • 04-12-2024, 14:05:49
    #33
    BigCoder adlı üyeden alıntı: mesajı görüntüle
    Öncelikli olarak şunu belirtmeden geçemeyeceğim, acemiler videoyu indiremez, fakat profesyonellerden kaçış yok.
    Reçeteniz ve kullanma kılavuzu aşağıdadır.

    HLS (HTTP Live Streaming) kullanarak videolarınızı parçalar halinde sunabilir ve indirilmeyi zorlaştırabilirsiniz. HLS kullanmak için aşağıdaki adımları izleyebilirsiniz:

    1. Gerekli Araçları ve Ortamı Hazırlayın

    HLS formatına dönüştürmek için FFmpeg kullanabilirsiniz. FFmpeg, açık kaynaklı ve güçlü bir multimedya aracıdır.
    2. Videoları HLS Formatına Dönüştürün

    HLS için MP4 videonuzu .m3u8 dosyası ve segment parçalarına (.ts dosyaları) bölmeniz gerekir.

    Örnek FFmpeg Komutu:


    ffmpeg -i input.mp4 -hls_time 10 -hls_playlist_type vod -hls_segment_filename "segment_%03d.ts" output.m3u8
    • -hls_time 10: Segmentlerin her biri 10 saniye olacak.
    • -hls_playlist_type vod: Video isteğe bağlı bir oynatma listesi olacak.
    • -hls_segment_filename: Segment dosyalarının adlandırma formatı.
    • output.m3u8: HLS oynatma listesi dosyası.
    Sonuç olarak:
    • output.m3u8: Ana oynatma listesi.
    • segment_000.ts, segment_001.ts, vb.: Video segmentleri.

    3. FFmpeg ile Rastgele İsimler Oluşturmak


    FFmpeg, varsayılan olarak segmentlere düzenli bir isim (örneğin, segment_000.ts, segment_001.ts) verir. Ancak bu isimleri rastgele hale getirmek için segment isimlerini dış bir araçla değiştirebilir veya FFmpeg sonrası bir işlem uygulayabilirsiniz.

    Yöntem 1: FFmpeg ve Dinamik PHP Betiği


    Segment dosyaları oluşturduktan sonra PHP ile isimleri rastgele hale getirebilirsiniz.

    <?php
    // Segment dosyalarını oku
    $segments = glob('segment_*.ts');
    
    // Rastgele dosya isimleri oluştur ve eski dosyaları yeniden adlandır
    $map = [];
    foreach ($segments as $segment) {
        $newName = bin2hex(random_bytes(8)) . '.ts'; // Rastgele isim
        rename($segment, $newName);
        $map[$segment] = $newName;
    }
    
    // Playlist dosyasını düzenle
    $playlist = file_get_contents('output.m3u8');
    foreach ($map as $oldName => $newName) {
        $playlist = str_replace($oldName, $newName, $playlist);
    }
    file_put_contents('output.m3u8', $playlist);
    ?>

    2. Segmentlere Rastgele Erişim ve Güvenlik


    Elde edilen rastgele segment isimleri, kullanıcıların dosyaları kolayca tahmin etmesini zorlaştırır. Ancak yine de güvenlik için:
    1. Segmentler için Token Kontrolü: Segment dosyalarına erişimi yalnızca doğrulanmış kullanıcılarla sınırlayın. Örneğin:
    <?php
    session_start();
    if (!isset($_SESSION['user'])) {
        die("Erişim izni yok.");
    }
    
    $file = $_GET['file'];
    $path = "/path/to/videos/hls/" . basename($file);
    
    if (file_exists($path)) {
        header('Content-Type: video/mp2t');
        readfile($path);
    } else {
        die("Dosya bulunamadı.");
    }
    ?>
    Playlist ve Segmentleri Dinamik Olarak Sunma: HLS playlist (.m3u8) dosyasını sunarken PHP kullanarak segment isimlerini dinamik olarak değiştirin.


    HLS.js ile Örnek HTML ve JavaScript Kod:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>HLS.js Örnek Video Oynatma</title>
        <script src="https://cdn.jsdelivr.net/npm/hls.js@latest"></script> <!-- HLS.js kütüphanesi -->
    </head>
    <body>
        <h1>HLS Video Oynatma Örneği</h1>
        <video id="video-player" controls autoplay width="640" height="360" style="border: 1px solid #000;">
            <!-- HLS.js desteklemeyen tarayıcılar için fallback -->
            Tarayıcınız video oynatmayı desteklemiyor.
        </video>
        <script>
            // Video elementini seç
            const video = document.getElementById('video-player');
    
            // HLS video kaynağını belirtin
            const videoSource = '/path/to/output.m3u8'; // HLS .m3u8 dosyasının yolu
    
            // HLS.js ile tarayıcı desteğini kontrol et
            if (Hls.isSupported()) {
                const hls = new Hls(); // HLS.js nesnesi oluştur
                hls.loadSource(videoSource); // HLS playlist dosyasını yükle
                hls.attachMedia(video); // Video elementine bağla
                hls.on(Hls.Events.MANIFEST_PARSED, () => {
                    console.log("HLS Manifest yüklendi, video oynatılıyor.");
                    video.play(); // Video otomatik başlatma
                });
            } else if (video.canPlayType('application/vnd.apple.mpegurl')) {
                // Safari gibi HLS desteği olan tarayıcılar
                video.src = videoSource;
                video.addEventListener('loadedmetadata', () => {
                    video.play(); // Video otomatik başlatma
                });
            } else {
                console.error("Bu tarayıcı HLS formatını desteklemiyor.");
                alert("Maalesef tarayıcınız HLS videolarını oynatmayı desteklemiyor.");
            }
        </script>
    </body>
    </html>


    .m3u8 i indirdikten sonra segment isimleri karışık olsada token olsada bir şey değişmeyecek çünkü m3u8 içinde isim dosya yolu her şeyi tokenler dahil bellirtmeniz lazım.

    .m3u8 i network kısmına düşürmeden (düşmese bile http tool kit ile çekilebilir) HLS player (HLS.JS ) ile oynatabilirseniz ancak segmentlere token koyup random isim vermenin bir anlamı var, diğer türlü m3u8 i ben kendi pcme indirdikten sonra brup suite ile tüm segmentleri çekmem 5dkmı almaz hocam.

    İlettiğiniz metin i nereden aldınız bilmiyorum ama chatgpt verisi gibi duruyor.