HLS protokolü nedir? Netd.com sitesinden nasıl video indirilir?

İnternette izlediğimiz videoları bazen bilgisayarımıza indirmek isteyebiliyoruz. Bu durumda Video DownloadHelper gibi tarayıcı eklentileri genelde en çok kullandığımız çözüm oluyor.

Fakat bazı dişli sitelerden, bu şekilde video indirmek mümkün değil. RTMP, RTMPE, HDS, HLS ve RTSP gibi protokolleri kullanan bu sitelerin yayınları basit tarayıcı eklentileri ile indirilemiyor.

Bu yazıda, bahsedilen protokollerden HLS protokolünü inceliyorum. HLS protokolünün tanıtımının ardından, bu protokolde yayın yapan bir siteden video indirebilmek için 3 yöntem anlatıyorum.

Yöntemleri anlatırken, kullanacağım web sitesi “netd.com” olacak. Bununla birlikte, amacımız balık vermek değil tutmasını öğretmek olacağından bu yöntemler, HLS yayın yapan tüm sitelere uygulanabilir olacak.

Tarayıcı eklentileri ve yazılımlar neden HLS protokolü üzerinde yardımcı olmuyor?

Video içeriğini yoğun olarak kullanan siteler, bu içeriği daha iyi yönetmek için RTMP, RTMPE, HDS, HLS ve RTSP gibi çeşitli protokollerden faydalanıyorlar.

Bu protokoller, video dosyalarını ziyaretçilere sunmak için bir altyapı, yöntem sağlıyor. Tarayıcı eklentileri ve yazılımların video dosyasını indirebilmesi için o videonun sunulduğu protokolü tanıması ve desteklemesi gerekiyor.

Malesef her yazılım ve eklenti, tüm bu protokolleri aynı anda desteklemediğinden kullanıcılar bazı sitelerden video indirmede zorlanıyor.

HLS protokolü, az desteklenen protokollerden biri. Geniş bir tarama yapmama rağmen sadece 2 medya indirici ve 1 medya player tarafından desteklendiğini gördüm. Bu nedenle, kullanıcıların video indirmede zorlanacağı protokollerden biri olduğunu kabul edebiliriz.

HLS protokolü nedir, nasıl çalışır?

HLS (HTTP Live Streaming) Apple tarafından geliştirilmiş canlı yayınları yada sabit videoları destekleyen bir yayın protokolü.

Bu protokolde, video izleyiciye bir bütün olarak sunulmaz. Sunulacak video önce çeşitli kalitelerde kodlanır. Böylece tek bir videonun birden çok kalitede örneği olur.

Ardından örneklerin herbiri 7/10 saniye gibi kısa video dilimlerine bölünür. Böylece herbir kalitedeki video örneği için yüzlerce/binlerce video dilimi ortaya çıkar.

Bu kısa video dilimleri, oynatma listelerinde tanımlanır. Tüm oynatma listeleri ise bir index dosyasında tanımlanır. Index dosyası, oynatma listeleri ve TS uzantılı video dilimleri, sunucuya aktarılır.

000006-01-02

Tarayıcımızdan videoyu izlemek istediğimizde, sayfadaki video player, anlık internet bağlantı hızımızı ve/veya ekran çözünürlüğümüzü hesaplar. Ardından web sunucusunda bulunan index dosyasını indirerek, bu hıza en uygun oynatma listesinin URL adresini öğrenir.

Apple tarafından sunulan örnek bir Index dosyası. Ekran çözünürlüğüne ve Bant genişliğine göre farklı oynatma listelerine referanslar atanmış...

Apple tarafından sunulan örnek bir Index dosyası. Ekran çözünürlüğüne ve Bant genişliğine göre farklı oynatma listelerine referanslar atanmış…

Video player, index dosyasından öğrendiği URL adresini kullanarak oynatma listesini indirir. Bu listede, TS uzantılı kısa video dilimlerinin URL adresleri bulunur.

Bu video dilimleri, video oynatıcı tarafından sırasıyla indirilip, ardı ardına oynatılır. Böylece videolar parça parça olmasına rağmen ziyaretçi sürekli bir video yayın akışı izleyebilir.

Apple tarafından sunulan bir oynatma listesi örneği. TS uzantılı dosyaların URL adreslerini görebiliyoruz.

Apple tarafından sunulan bir oynatma listesi örneği. TS uzantılı dosyaların URL adreslerini görebiliyoruz.

Video oynatıcı tarafından yapılan hız hesaplama ve dosya aktarma işlemi dinamiktir ve süreklilik arz eder. Aşağıdaki şekle bakalım.

Tarayıcı bağlantı hızımız arttığında video kalitesi yükselecek, azaldığında düşecek. Buna adaptive yayın deniyor. Video oynatıcımız anlık bağlantı hızımızı sürekli takip edip, herhangi bir yavaşlama yada hızlanma durumunda kullandığı playlisti değiştiriyor. Böylece kalite düşse de video izleme esnasında kesinti/yükleme beklemesi olmuyor.

000006-01-05

Eğer HLS protokolü hakkında daha fazla şey öğrenmek istiyorsanız, işte size kaynaklar; 1, 2, 3, 4

HLS yayınları nasıl indirilir? Netd.com örneği…

Burada 3 yöntem paylaşacağım. Yöntemlerin hepsi aynı basitlikte ve herkes tarafından uygulanabilir. İlk yöntem alışılageldik bir çözüm iken son yöntemde bir nevi tersine mühendislik kullanacağız.

Yöntem 1; Video indirme yazılımı kullanarak tam otomatik video indirme

Az da olsa HLS protokolünü destekleyen video indirme programı mevcut ve biz bu programları kullanacağız. GetFLV ve Jaksta Media Recorder

Sorun şu ki bu yazılımlar ücretli. Malesef yazılım deneme sürümleri de videonun yarısını indirmeye izin veriyor. Yani para ödemeden bu yöntemi kullanmanın bir yolu yok.

Eğer bu ücreti ödemeye hazırsanız, GetFLV ile ilk videomuzu indirelim.

000006-02-01

01/08

GetFLV yazılımı çalıştıralım. Tarama modunu "Safari Kernel (iPad)" olarak değiştirelim.

Neden "Safari Kernel (iPad)" modu?
GetFLV şu anda 4 farklı sistem ve tarayıcıyı simüle edebiliyor. Programın yardım sayfalarında HLS protokolü için Safari Kernel (iPad)" modu tavsiye ediliyor. Burada hem HLS protokolü hem de Safari bir Apple ürünü olduğundan sorun yaşama şansı düşük.

000006-02-02

02/08

İndirmek istediğimiz web sayfasının URL adresini adres çubuğuna yazalım. Sayfa yüklendiğinde, GetFLV video adresini yakalıyor ve alttaki bölümde gösteriyor.

Bu adresi seçip "Download" butonuna basalım.

000006-02-03

03/08

Yazılım, indirmek istediğimiz video kalitesini seçmemizi isteyecek. İndirmeyi tercih ettiğimiz video kalitesine tıklayıp "Ok" butonuna basalım.

Fotoğrafta görünen en düşük kalite 350K, en yüksek kalite ise 1750K'dır.

000006-02-04

04/08

"Ok" butonuna basmamızın ardından görev ekleme penceresi açılıyor. Burada arzu edersek video ismini ve videonun kayıt edileceği yeri değiştirebiliriz.

Varsayılan ayarlar makul görünüyor, Değişiklik yapmadan "Ok" butonuna tıklıyoruz.

000006-02-05

05/08

Arayüz "FLV Browser" ekranından "FLV Downloader" ekranına geçiyor. Burada indirme ilerlemesini görüyoruz. Download işlemi tamamlandığında, dosya bu ekrandan kayboluyor.

000006-02-06

06/08

"Downloaded" linkine tıkladığımızda, indirilmiş dosyayı görüyoruz.

000006-02-07

07/08

Bu dosya üzerinde sağ tıklayalım ve indirilmiş dosyamıza ulaşmak için "Find Downloaded File" komutunu seçelim.

000006-02-08

08/08

İndirilmiş dosya karşımızda. GetFLV, kendi için bir FLV dosyası bizim için ise bir mp4 dosyası oluşturmuş.

GetFLV ile yapabilecekleriniz bu kadar değil. Arzu ederseniz, indirdiğiniz dosyayı bir başka video formatına çevirebilirsiniz. Aynı anda birden fazla video indirebilirsiniz. Ama bunu tavsiye etmiyorum!

GetFLV v9.6.5.5 ile birden fazla kez yaptığım denemelerde, aynı anda birden fazla video indirme konusunda yazılımın başarısız olduğunu gördüm. Genellikle indirilen videolar bir süre sonra takıldı ve indirilmesi tamamlanamadı.

Yazılımda download etmek istediğimiz dosyaları kuyruğa ekleme gibi bir özelliği malesef yok. Aynı anda indirilecek maksimum dosya sayısını ayarlayamıyoruz. Bu nedenle, 100 dosya dahi ekleseniz, hepsi de aynı anda indirilmeye çalışılacak ve başarısızlık olasılığı artacak.

HLS protokolünü destekleyen ikinci yazılımımız Jaksta Media Recorder. Bu yazılımın farklı isimde fakat aynı arayüzde bir klonu bulunuyor: Replay Media Catcher

İki ürünün fiyatı da aynı ve GetFLV ‘den daha ekonomik bir çözüm oluşturuyor. İkisi ile de tamamen aynı şekilde, HLS videoları indirebiliyor. Yazılım GetFLV gibi bağımsız bir şekilde değil, bir HTTP sniffer gibi çalışıyor. Jaksta ile video indirme aşağıdaki şekilde gerçekleşiyor.

000006-03-01

01/11

Jaksta Media Recorder yazılımını çalıştıralım. Karşımıza "Welcome" ekranı çıkacaktır. "Start" butonuna basalım. Bu video monitörünü aktif hale getirecek.

"Close" butonu ile bu ekranı kapatalım ve yazılımı simge durumuna küçültelim.

000006-03-02

02/11

Tarayıcımızı açalım, indirmek istediğimiz videoyı içeren web sayfasını ziyaret edelim. Video çalışmaya başladığında Jaksta videoyu yakalayacaktır.

000006-03-03

03/11

Jaksta'yı açalım. Yazılımın yakaladığı tüm videolar ekranda ve indirmeye başlanmış bile. Fakat sorun şurada ki, biz 1 video indirmek isterken 6 video indiriliyor. Neden?

000006-03-04

04/11

Listedeki her bir öğenin üzerine sağ tıklayalım ve açılan menüden "Properties" komutunu verelim.

000006-03-05

05/11

Properties penceresinden "Source" kısmındaki URL adresini kopyalalım ve bir metin belgesine yapıştıralım.

000006-03-06

06/11

Tüm linkleri topladığımızda, karşımıza çıkan ekran bu. Neden 6 video indiriliyor? Cevap bu ekranda!

HLS protokolünü anlattığımız bölümü hatırlayalım. Tarayıcımızdaki video oynatıcı, önce sunucudan videoya ait index dosyasını talep ediyordu. Ardından bu index dosyasında yer alan çeşitli kalitedeki oynatma listelerinin URL adreslerine erişiyordu.

Video oynatıcı bu işlemleri yaparken...
Jaksta, video player tarafından erişilen bütün bu index ve oynatma linklerini tespit etmiş ve hemen indirmeye başlamış.

Biz sadece en yüksek kaliteli videoyu indirelim ve diğer videoları indirmeyi durduralım. En yüksek kalitedeki URL adresini aklımızda tutalım. Peki en yüksek kalitedeki URL adresi ne?

Bu örnekte en yüksek kalite URL analizinde açık bir şekilde anlaşılıyor. URL adreslerini incelediğimizde 128den 1500e bir artış görülüyor. Bu nedenle en alttaki URL adresinin en yüksek kalite değeri olduğunu anlıyoruz. Eğer URL adresleri bu kadar açık olmasaydı, index dosyası olan ilk URL adresini kopyalayıp tarayıcıya yapıştıracaktık. Bu dosyayı indirip not defteri ile birlikte açacak ve içeriğinden hangi URL adresinin en yüksek kalitede olduğunu tespit edecektik. Bunu Yöntem 2'de uygulamalı olarak göstereceğim.

000006-03-07

07/11

Tüm öğelerin üzerinde tek tek sağ tuş ile tıklayarak "Properties" seçeneğini seçelim. Açılan ekranda "Source" kısmındaki URL adresine bakalım. Bu adres, en yüksek kalitedeki oynatma listesine ait URL adresi değilse ekranı kapatalım ve tekrar sağ tıklayarak "Delete" komutunu verelim.

000006-03-08

08/11

Yazılım bizi dosyanın silineceği konusunda uyaracaktır. "Yes" butonuna tıklayalım.

000006-03-09

09/11

Şu anda indirme listemizde sadece en yüksek kaliteli oynatma listesi kaldı. İndirme işlemi devam edecek, bize sadece beklemek kalıyor.

000006-03-10

10/11

Video indirmesi tamamlandığında yeşil bant üzerinde "Complete" yazısı beliriyor. Bu öğenin üzerinde sağ tıklıyoruz ve "Show in folder" komutunu veriyoruz.

000006-03-11

11/11

Jaksta, Video dosyamızı indirdiği klasörü açıyor.

Jaksta ile indirilen dosyayı bir başka formata çevirmek mümkün. Aynı anda birden fazla dosyayı indirebiliyoruz, videoları indirme kuyruğuna ekleyebiliyoruz. Bu yönleri ile GetFLV yazılımına karşı üstün.

Öte yandan, indirme esnasında manuel müdahaleler yapmamız gerekiyor. Bu da GetFLV karşısında zayıf olduğu taraf.

Yöntem 2; Fiddler+VLC kullanarak yarı otomatik video indirme

VLC inanılmaz bir medya oynatıcı. Neredeyse her türlü video formatına verdiği desteğin yanında, internet üzerinden yayınlanan videoları da kolaylıkla oynatıp dönüştürebiliyor. HLS yayınları da bunlardan biri. Bu yayınları izlemek yada indirmek için videonun oynatma listesini elde etmemiz yeterli.

Oynatma listelerini elde etmek için ise Yöntem 1’deki yazılımların demo sürümleri yada herhangi bir HTTP sniffer kullanılabilir. ( Fiddler, HTTPNetworkSniffer, HTTP Debugger Pro… vb)

HTTP sniffer dediğimiz yazılımlar, kaba tabirle tarayıcımızın sunucudan talep ettiği bütün URL adreslerini monitör eden yazılımlar. Video oynatılırken, video oynatıcımız tarafından m3u8 uzantılı index dosyası ve oynatma listesi talep edileceğinden, HTTP sniffer yazılımımız bu dosyaların URL adreslerini rahatlıkla tespit edecektir.

Ben bu yöntemde, HTTP sniffer yazılımı olarak Fiddler kullanacağım. Fiddler ile önce index dosyasına ulaşacağız. Bu dosyayı indirip, inceleyeceğiz. İçinde en kaliteli video dilimleri için hazırlanmış olan oynatma listesinin URL adresini bulacağız. Bu URL adresini VLC medya oynatıcıya girip, videoyu indireceğiz.

Hem Fiddler hem de VLC medya oynatıcı ücretsiz olduğundan, bu yöntem 1 numaralı yöntemi fiyatından dolayı beğenmeyenlerin hoşuna gidecek bir çözüm olacaktır. Yöntem için sistemimize Fiddler ve VLC media player yazılımlarını kuralım ve aşağıdaki adımları uygulayalım;

000006-04-01

01/12

Fiddler yazılımını çalıştıralım. Ardından tarayıcımızı açıp indirmek istediğimiz videonun bulunduğu sayfaya girelim.

000006-04-02

02/12

Video oynatılmaya başladığında, Fiddler yazılımını ekrana büyütelim. Göreceğiniz üzere, Fiddler ziyaret ettiğiniz sayfadaki tüm sunucu talep ve cevaplarını kaydetmiş.

Bize sadece m3u8 uzantılı dosya talepleri gerektiğinden, arayüzdeki "Find" butonuna basıp fotoğraftaki parametreler ile aramamızı yapalım.

000006-04-03

03/12

Fiddler, içinde m3u8 geçen URL adreslerini bulacak ve seçili hale getirecek. Seçilen öğelerden birinin üzerine sağ tıklayalım ve "Copy->Just Url" komutu ile bu adresleri kopyalayalım.

Bir metin belgesi açıp, adresleri bu belgeye yapıştıralım.

000006-04-04

04/12

Metin belgesinde, video oynatıcısı tarafından talep edilen bütün m3u8 dosyalarının linkleri görülüyor.

Biz videonun index dosyasına erişmek istiyoruz. Index dosyası, genellikle video player tarafından ilk talep edilen dosyadır. Bu nedenle index dosyasının en üstteki URL olduğunu düşünüyoruz.

Seçili kısmı kopyalayalım. Neden tüm URL adresini seçmedik ve sadece bir bölümünü kopyaladık?

Tüm URL adresine baktığımızda "max=1500" gibi bir değer göreceğiz. Video player, bizim bağlantı hızımıza göre bir maksimum kalite belirlemiş ve bunu sunucuya raporluyor. Sunucu'da maksimum "max=1500" kaliteye kadar olan oynatma listesi adreslerini tarayıcımıza gönderiyor. Bu yüzden bütün oynatma listelerini içeren index dosyasına ulaşamıyoruz.

Biz ise tüm oynatma listelerini içeren index dosyasına ulaşmak için bu yöntemi uyguluyoruz. Bazı siteler, m3u8 dosyasına direk erişimi bloke edebilir. Böyle durumlarda URL adresimizde aşağıdaki gibi manipülasyonlar yaparak index dosyasına ulaşmaya çalışabiliriz;

.../index.m3u8?key=...
.../index.m3u8?key=...&app=com.dcom
.../index.m3u8?key=...&app=com.dcom&max=9999
(3 nokta, URL adresini kısaltmak maksadıyla kullanılmıştır)

000006-04-05

05/12

Kopyaladığımız URL adresini, tarayıcımıza yapıştıralım. Tarayıcımız dosyayı download etmek isteyecektir. Dosyayı indirelim ve metin belgesi olarak açalım.

000006-04-06

06/12

Index dosyamız karşımıza geliyor. Bu dosyada, gördüğünüz üzere kullanıcıya sunulan bütün oynatma listeleri mevcut. Bu listeler, göreceli linkler olarak verilmiş.

Dikkat; Konumuzun başında Apple tarafından örnek bir index dosyası göstermiştim. Index dosyası standardı bu şekildedir. Eğer indirdiğiniz dosya tamamen farklı bir şekilde görünüyorsa ve ts uzantılı linkler içeriyorsa, muhtemelen bir oynatma listesi indirdiniz demektir. Bu durumda 2 aşama geriye gidip farklı bir link ile bu işlemi tekrarlamalısınız.

000006-04-07

07/12

Dosyada tam/absolute URL adresleri yerine göreceli/relative URL adresleri tercih edilmiş. Biz göreceli adreslerden tam URL adresleri elde edeceğiz.

Bu işlemin nasıl yapıldığını fotoğrafta görebilirsiniz. Dosyayı indirdiğimiz URL adresinin, yolunu kopyalayıp, göreceli linkin önüne yapıştırmamız yeterli oluyor. Detaylı bilgi için; Absolute vs. Relative Paths/Links

Ben en yüksek kalitenin bir altını indireceğim o yüzden "1500/prog_index.m3u8" göreceli linkini kullanıyorum. Siz istediğiniz kalite için yaratılmış URL adresini kullanabilirsiniz.

000006-04-08

08/12

VLC media player'ı açıyoruz. "Ortam" menüsünden, "Dönüştürün/Kaydedin..." seçeneğine tıklıyoruz.

000006-04-09

09/12

Karşımıza çıkan "Ortam Açın" penceresinden "Ağ" sekmesine geliyoruz. Kopyaladığımız adresi buraya yapıştırıyoruz. Ardından "Dönüştürüp Kaydedin" butonuna tıklıyoruz.

000006-04-10

10/12

Karşımıza "Dönüştür" penceresi çıkacak. Burada 2 işlem tercih edebiliriz.

Bu oynatma listesini, mp4 gibi bir formatta dönüştürüp kaydedebiliriz. Bu varsayılan seçenektir. Öte yandan istersek, bir dönüştürme işlemi uygulamadan görüntüyü olduğu gibi kaydedebiliriz.

Ben bu aşamada, "Ham girişi dök" seçeneğini seçiyorum. Fakat "Dönüştür" seçeneği %99 kullanıcı için daha uygun olacaktır.

Gözatın butonuna tıklayalım ve dosyamızı kaydetmek istediğimiz yeri ve adı seçelim. Burada, ham girişi dök seçeneğini seçtiğimizden, dosya adının sonuna ".ts" uzantısını eklemek durumundayız.

Herşey tamamsa, "Başlat" butonuna tıklayalım.

000006-04-11

11/12

VLC üst çerçevesinde "Akıtılıyor" şeklinde bilgi veriyor. Malesef bir ilerleme çubuğu gibi birşey göremiyoruz. İşlem bittiğinde "Akıtılıyor" yazısı kaybolacak, tek işaret bu.

Eğer "Ham girişi dök" yerine "Dönüştür" seçeneğini seçseydik, bu ekranda, ilerleme çubuğu görebilecektik.

000006-04-12

12/12

İşlem tamamlandığında, üst çerçevedeki "Akıtılıyor" bilgisi kayboluyor. Bu andan itibaren, dosyamız indirilmiş demektir.

Indirme işlemi esnasında, network problemi yaşarsanız indirme yarıda kalabilir. Bu durumda, dosyayı tekrar baştan indirmemiz gerekecektir.

Yöntem 3; Full manual

Eğer tüm adımları full manual yapmak istiyorsanız, hoşgeldiniz.

Bu yöntem de oldukça kolay bir yöntemdir fakat ilk 2 yönteme göre daha zahmetlidir. Pekçok kişinin yukarıdaki yöntemlerden memnun kalacağını düşünüyorum. Ben bu yöntemi sadece HLS protokolünün anlaşılmasına yardımcı olacağı için gösteriyorum.

HLS protokolünde, “index dosyası->oynatma listesi->TS uzantılı kısa video dilimleri” ilişkisini anlatmıştım.

Bu yöntemde, önce index dosyasına erişeceğiz. Bu dosyayı indirip, inceleyeceğiz. İçinde en kaliteli videolar için hazırlanmış olan oynatma listesinin URL adresini bulacağız. Buraya kadar olan kısmı yöntem 2’de aynen uygulamıştık. Bu nedenle sunumun ilk 7 slaytı yöntem 2 ile aynı.

Devam eden kısımda ise bu sefer, VLC medya oynatıcı kullanmak yerine oynatma listesini indireceğiz ve, TS uzantılı video dilimlerinin URL adreslerini öğreneceğiz.

Bu TS uzantılı kısa videoları indireceğiz ve birleştireceğiz. Böylece sunucudaki video kalitesine eşit videoyu elde etmiş olacağız.

Yani aslında bu yöntemle birlikte, tarayıcımızdaki video player’ın çalışma biçimini simüle etmiş olacağız. Bu yöntem için Fiddler, TransportStream Splitter ve Free Download Manager yazılımlarını kullanıyorum. Yaptıkları iş aynı olmak şartıyla siz alternatif yazılımlar tercih edebilirsiniz.

Bu yazılımları sistemimize kuralım ve aşağıdaki adımları takip edelim.

000006-05-01

01/18

Fiddler yazılımını çalıştıralım. Ardından tarayıcımızı açıp indirmek istediğimiz videonun bulunduğu sayfaya girelim.

000006-05-02

02/18

Video oynatılmaya başladığında, Fiddler yazılımını ekrana büyütelim. Göreceğiniz üzere, Fiddler ziyaret ettiğiniz sayfadaki tüm sunucu talep ve cevaplarını kaydetmiş.

Bize sadece m3u8 uzantılı dosya talepleri gerektiğinden, arayüzdeki "Find" butonuna basıp fotoğraftaki parametreler ile aramamızı yapalım.

000006-05-03

03/18

Fiddler, içinde m3u8 geçen URL adreslerini bulacak ve seçili hale getirecek. Seçilen öğelerden birinin üzerine sağ tıklayalım ve "Copy->Just Url" komutu ile bu adresleri kopyalayalım.

Bir metin belgesi açıp, adresleri bu belgeye yapıştıralım.

000006-05-04

04/18

Metin belgesinde, video oynatıcısı tarafından talep edilen bütün m3u8 dosyalarının linkleri görülüyor.

Biz videonun index dosyasına erişmek istiyoruz. Index dosyası, genellikle video player tarafından ilk talep edilen dosyadır. Bu nedenle index dosyasının en üstteki URL olduğunu düşünüyoruz.

Seçili kısmı kopyalayalım. Neden tüm URL adresini seçmedik ve sadece bir bölümünü kopyaladık?

Tüm URL adresine baktığımızda "max=1500" gibi bir değer göreceğiz. Video player, bizim bağlantı hızımıza göre bir maksimum kalite belirlemiş ve bunu sunucuya raporluyor. Sunucu'da maksimum "max=1500" kaliteye kadar olan oynatma listesi adreslerini tarayıcımıza gönderiyor. Bu yüzden bütün oynatma listelerini içeren index dosyasına ulaşamıyoruz.

Biz ise tüm oynatma listelerini içeren index dosyasına ulaşmak için bu yöntemi uyguluyoruz. Bazı siteler, m3u8 dosyasına direk erişimi bloke edebilir. Böyle durumlarda URL adresimizde aşağıdaki gibi manipülasyonlar yaparak index dosyasına ulaşmaya çalışabiliriz;

.../index.m3u8?key=...
.../index.m3u8?key=...&app=com.dcom
.../index.m3u8?key=...&app=com.dcom&max=9999
(3 nokta, URL adresini kısaltmak maksadıyla kullanılmıştır)

000006-05-05

05/18

Kopyaladığımız URL adresini, tarayıcımıza yapıştıralım. Tarayıcımız dosyayı download etmek isteyecektir. Dosyayı indirelim ve metin belgesi olarak açalım.

000006-05-06

06/18

Index dosyamız karşımıza geliyor. Bu dosyada, gördüğünüz üzere kullanıcıya sunulan bütün oynatma listeleri mevcut. Bu listeler, göreceli linkler olarak verilmiş.

Dikkat; Konumuzun başında Apple tarafından örnek bir index dosyası göstermiştim. Index dosyası standardı bu şekildedir. Eğer indirdiğiniz dosya tamamen farklı bir şekilde görünüyorsa ve ts uzantılı linkler içeriyorsa, muhtemelen bir oynatma listesi indirdiniz demektir. Bu durumda 2 aşama geriye gidip farklı bir link ile bu işlemi tekrarlamalısınız.

000006-05-07

07/18

Dosyada tam/absolute URL adresleri yerine göreceli/relative URL adresleri tercih edilmiş. Biz göreceli adreslerden tam URL adresleri elde edeceğiz.

Bu işlemin nasıl yapıldığını fotoğrafta görebilirsiniz. Dosyayı indirdiğimiz URL adresinin, yolunu kopyalayıp, göreceli linkin önüne yapıştırmamız yeterli oluyor. Detaylı bilgi için; Absolute vs. Relative Paths/Links

Ben en yüksek kalitenin bir altını indireceğim o yüzden "1500/prog_index.m3u8" göreceli linkini kullanıyorum. Siz istediğiniz kalite için yaratılmış URL adresini kullanabilirsiniz.

000006-05-08

08/18

Kopyaladığımız URL adresini, tarayıcımıza yapıştıralım. Tarayıcımız dosyayı download etmek isteyecektir. Dosyayı indirelim ve metin belgesi olarak açalım.

000006-05-09

09/18

Oynatma listemiz karşımızda. Gördüğünüz üzere bu listede ts uzantılı videolar bulunuyor.

Bu oynatma listesindeki ts uzantılı dosyalara ihtiyacımız var. Bu dosyaları indireceğiz ve birleştirerek, videomuzu oluşturacağız.

Bu dosyalara olan linkler göreceli bir şekilde verildiği için bu linkleri tam URL formatına çevirmeliyiz. Ayrıca #EXTM3U gibi metinleri de silerek, "oynatma listesinden" bir "download listesi" yaratmalıyız.

000006-05-10

10/18

Dosyamızı bir indirme listesine çevirebilmek için adım adım şunları yapalım;

-Ctrl+h tuşlarına basalım. "Değiştir" penceresi açılacak. Aranan değeri olarak "./" metnini girelim. Yeni değer olarak "http://37.48.66.141/S3/HLS_VOD/14693_8e89/1500/" metnini girelim. "Tümünü Değiştir" butonuna basalım. Bu şekilde, göreceli URL adreslerini tam URL adresi olarak düzenlemiş oluyoruz. Sizin gireceğiniz "Yeni değer" bu noktada farklı olacaktır. Göreceli URL adresini tam URL adresine çevirme işlemini 4 slayt önce anlatmıştım, tekrar bakabilirsiniz.
-Değiştir ekranında tekrar aranan değer olarak "#EXTINF:8," yazalım ve "Yeni değer" bölümünü boş bırakarak "Tümünü Değiştir" butonuna basalım. Tüm "#EXTINF:8," değerleri silinecek. Değiştir ekranını kapatalım.
-Dosyanın en başındaki ve en sonundaki "#" karakteri ile başlayan metinleri silelim.
-Tüm boşlukları silelim. Bunun için textmechanic.com sitesinden faydalanabilirsiniz.

000006-05-11

11/18

Tüm işlemleri yaptığımızda, oynatma listesi bir indirme listesi haline gelmiş olacak. Bu listeyi farklı kaydet diyerek masaüstüne kaydediyorum.

000006-05-12

12/18

"Free Download Manager" yazılımını açıyorum. "Dosya->Al->URL'ler listesi al" menülerini takip ediyorum. Dosya al penceresi açılacak, buradan az önce kaydettiğimiz indirme listesini seçelim.

000006-05-13

13/18

Dosyalar yazılıma import edilecek ve indirme başlayacak.

000006-05-14

14/18

Tüm indirmeler tamamlandığında indirme listesine sağ tıklayalım ve "Klasörü Aç" seçeneğini seçelim. Burada, herbiri aynı klasöre kaydedildiğinden hangi öğenin üzerinde sağ tıkladığımız önemli değil.

000006-05-15

15/18

Ekranımıza yüzlerce/binlerce dosyayı içeren klasör gelecek. Bu dosyaları birleştirmemiz gerekiyor.

Bu kolay bir işlem değildir. Denediğim hemen her yazılım bu işlemi tamamlayamadı ve çöktü. TransportStream Splitter hariç!

000006-05-16

16/18

TransportStream Splitter yazılımını çalıştıralım. "File" menüsünden "Open for Joining..." seçeneğine tıklayalım.

000006-05-17

17/18

Birleştirme ekranı açılacaktır. "Add" butonuna tıklayalım ve birleştireceğimiz dosyaları seçelim.

"Destination" bölümünden dosyanın kaydedileceği yeri seçebiliriz. Ben birleştirilen dosyayı masaüstüne kaydetmeyi tercih edeceğim.

"Join!" butonuna tıklayalım.

000006-05-18

18/18

Dosyalar çok kısa bir sürede birleştirilecektir. Video dosyamız kullanıma hazırdır.

Hangi yöntemi tercih etmeliyim?

Eğer bağlantı hızınız düşükse, videoyu tarayıcınızda en kaliteli çözünürlükte oynatamayacaksınız. Bu durumda GetFLV ve Jaksta sadece oynatabildiğiniz çözünürlükleri tespit edip indirebileceğinden, indirilen dosya kalitesi düşük olacaktır.

Bu sadece düşük bant genişliğine sahip kullanıcılar için geçerli. Bu durumda Yöntem 2/3 size daha uygun.

Birde indirdiğimiz dosyaları değerlendirelim.

000006-01-06

Yöntem 2 ve Yöntem 3 tamamen aynı dosya çıktısını üretiyor. Jaksta, anormal derecede büyük bir dosya çıktısı veriyor. Bu dosyayı, tekrar kodlamak ve boyutunu küçültmek şart görünüyor.

Sonuçta hepsini üst üste koyarsak, çoğu kişi için Yöntem 2 ücretsiz ve iyi bir seçenektir. Toplu dosya indirmeyi düşünenler için ise en iyi seçenek Jaksta yada Yöntem 3 olabilir.

Çok önemli son bir not..

Bu yazıda amacım HLS protokolünü tanıtmak ve bu protokolden nasıl video indirilebileceğini öğretmek. Fakat video indirmeye yönlendirmek değil. Nasıl yapılacağını bilmek başka şey, yapmak başka birşey.

Internet üzerinde yayın yapan dijital platformlar, yaptıkları yayından reklamlar aracılığı ile para kazanıyor. Size bu hizmeti sunarken oluşan maliyetler bu şekilde karşılanıyor. Bu şekilde para kazanılıp yapılmaya değer bir iş haline geliyor.

Siz video dosyalarını download edip izlemeye başladığınızda, bu reklam ücretlerinden mahrum olacaklar ve hizmetin devamlılığı tehdit altında olacak. Bu nedenle video dosyalarını indirmek yerine dijital platform üzerinden kullanmayı tercih ederseniz aldığınız hizmetin devamlılığını garanti altına almış olursunuz.

Ayrıca bu videolar muhtemelen ebediyete kadar bu sitelerde yayınlanacaktır. Bu nedenle indirip arşiv yapmak, çoğu durumda gereksiz olacaktır. Bilgisayarınızda HDD kullanımını arttıracaktır, sizi de maddi külfete sokacaktır.

Bütün bu videoların yayın hakları korunduğundan, bu videoları indirip internete tekrar servis ederek web-dl videosu olarak paylaşmayı ise akıldan bile geçirmemekte fayda var.

Sorular ve Cevaplar;

Soru: Bir sitenin HLS protokolünü kullandığı nasıl anlaşılır?

Cevap: Site, HLS protokolünü kullanıyorsa, m3u8 uzantılı dosyaları tarayıcınıza indirecektir. Bir HTTP sniffer kullanıp, indirilen dosyaları monitör edebilirsiniz. Eğer bunların içinde m3u8 uzantılı dosyalar varsa, site HLS protokolünü kullanıyor demektir.

HTTP sniffer kullanmayı bilmiyor olabilirsiniz, Bunu yöntem 2 ve 3’te anlatmıştım.

11 Comments

  1. mert October 17, 2014
    • admin October 17, 2014
  2. Can November 29, 2014
    • admin December 2, 2014
  3. Eren December 11, 2014
  4. ismail December 15, 2014
    • seyda December 25, 2014
      • admin December 26, 2014
  5. Ufuk June 23, 2015
  6. Mustafa December 21, 2015
    • admin December 21, 2015

Leave a Reply