Pratik Araçlar

Artık Yanlış Araçları Kullanmayı Bırakın: MP4 ve M3U8 İndiricileri Arasında Seçim Yapmak İçin Nihai Rehber

Hiç şu durumla karşılaştınız mı: Bir web sayfasından zorlukla bir video bağlantısı çıkarırsınız, bunu bir indirme yazılımına atarsınız ve sonuç ola...

21 Nis 2026·4 dk okuma

Hiç şu durumla karşılaştınız mı: Bir web sayfasından zorlukla bir video bağlantısı çıkarırsınız, bunu bir indirme yazılımına atarsınız ve sonuç olarak sadece birkaç KB’lık bir metin dosyası elde edersiniz? Veya indirme işlemi yarıda 403 hatasıyla durur mu?

Aslında, vakaların %90’ında bu, internet hızınızla ilgili bir sorun değildir veya bağlantı bozuk değildir. Bu, yanlış indiriciyi seçtiğiniz içindir.

Video indirme alanında, “MP4 İndirici” ve “M3U8 İndirici” sadece isimlerinden çok daha farklıdır; tamamen farklı iki ağ kaynağı boyutuyla ilgilenirler. Bugün, bu iki kavramı tamamen aydınlatacağız ve videoları hassas bir şekilde indirmek için farklı senaryolarda tam olarak doğru aracı nasıl kullanacağınızı (tam pratik kod örnekleriyle) adım adım göstereceğiz.

1. Temel Öz: Dosyanın Kendisi ile Oynatma Kılavuzu

Eğer sadece tek bir cümleyi hatırlayacaksanız, o da şu olsun: MP4 video dosyasının kendisidir, M3U8 ise sadece “videonun nasıl alınacağına” dair bir kılavuzdur.

Bir MP4 İndirici, halihazırda oluşturulmuş, tek bir dosyayı (genellikle video/mp4) işler. Mantığı basittir, “teslimatta ödeme” gibidir: size yerel olarak kaydettikten hemen sonra izleyebileceğiniz tam bir ikili paket sunar.

Bir M3U8 İndirici, Apple tarafından kurulan HLS (HTTP Live Streaming) protokolünü işler. IETF’nin RFC 8216 standardına göre, aldığınız .m3u8 dosyası, ilk katmanında sadece UTF-8 formatında bir oynatma listesidir. Bu liste, parçalanmış videonun sayısız .ts veya .m4s segment adresiyle doludur ve hatta birden fazla çözünürlük arasında geçiş yapmak için kurallar ve şifre çözme anahtarları (AES-128) içerebilir. Bu nedenle, bir M3U8 İndirici temel olarak bir **“HLS Ayrıştırıcı + Segment İndirici + Video Birleştirici”**nin kapsamlı bir kombinasyonudur.

4 Kaba Seçim Kriteri

  • Bağlantı .mp4 ile bitiyorsa ve tarayıcı doğrudan bir video olarak açıyorsa: körü körüne bir MP4 İndirici (curl, wget, IDM gibi) kullanın.
  • Bağlantı .m3u8 ile bitiyorsa veya oynatıcı otomatik olarak 720p/1080p arasında geçiş yapıyorsa: zorunlu olarak bir M3U8 İndirici (ffmpeg gibi) kullanmalısınız.
  • Canlı Yayın (Live): HLS’yi sürekli olarak kaydedebilen araçlara (streamlink gibi) öncelik verin.
  • Sadece bir web adresi/kısa bağlantınız varsa: indirmek için acele etmeyin, gerçek video adresini çıkarmak için önce ayrıştırma araçlarını (yt-dlp gibi) kullanın.

2. Hangi Aracı Kullanacağınızı Anlamak İçin Bir Şema

Elinizde ne olduğundan emin değilseniz, herhangi bir aksilik yaşamamak için bu akış şemasını izleyin:

flowchart TD
    A[Bir URL Alın] --> B{Neye benziyor?}
 
    B -->|.mp4 / video/mp4 / Tarayıcı medyayı doğrudan açar| C[MP4 İndiriciye Öncelik Verin]
    B -->|.m3u8 / application/vnd.apple.mpegurl / #EXTM3U| D[M3U8 İndiriciye Öncelik Verin]
    B -->|Web adresi / Paylaşım sayfası / Emin değilim| E[Önce gerçek medya adresini ayrıştırın]
 
    E --> E1[yt-dlp -F / --print urls kullanın]
    E --> E2[Veya streamlink --stream-url kullanın]
    E1 --> F{Ayrıştırdıktan sonra nedir?}
    E2 --> F
 
    F -->|MP4 Doğrudan Bağlantı| C
    F -->|M3U8 / HLS| D
 
    C --> G{Ek kimlik doğrulama gerektiriyor mu?}
    D --> H{Canlı mı yoksa VOD mu?}
 
    G -->|Hayır| I[curl / wget / Tarayıcıya kaydet kullanın]
    G -->|Evet| J[Cookie / Referer / User-Agent / Aynı oturum ekleyin]
    J --> I
 
    H -->|VOD| K[ffmpeg veya yt-dlp ile indirin ve MP4 olarak dışa aktarın]
    H -->|Canlı| L[Kayıt için streamlink veya ffmpeg'e öncelik verin]
    L --> M[Kayıt bittikten sonra MP4'e remux yapın]
 
    I --> N[Tamamlandı]
    K --> N
    M --> N

3. Pratik Alıştırmalar: Dört Büyük Aracın Kod Parçacıkları

Aşağıda farklı senaryolar için en uygun komut satırı çözümleri bulunmaktadır. Parametre kısayol ipucu: -L yönlendirmeleri izler, -o/-O dosya adını belirtir, -A tarayıcı UA’sını gizler, -b Çerezleri bağlar.

Senaryo 1: Gerçek Bir MP4 Doğrudan Bağlantısını İşleme (curl/wget Kullanarak)

Bir MP4 olduğu doğrulanırsa, sistemin yerleşik komut satırı araçlarını kullanmak en hızlısıdır. Ancak, genellikle sunucular sömürü (anti-leech) koruması uygular ve yanınızda bir “geçiş kartı” getirmeniz gerekir.

# Temel doğrudan bağlantı indirme
curl -L -o video.mp4 "https://cdn.example.com/video.mp4"
 
# Sömürü korumasını aşma: Referer, UA'yı gizleyin ve Çerez bağlayın
curl -L \
  --referer "https://example.com/page" \
  -A "Mozilla/5.0" \
  -b cookies.txt \
  -o video.mp4 \
  "https://cdn.example.com/video.mp4"
 
# Devam ettirilebilir indirme ve sömürü koruması için wget yaklaşımı
wget -O video.mp4 \
  --referer="https://example.com/page" \
  --user-agent="Mozilla/5.0" \
  --load-cookies cookies.txt \
  "https://cdn.example.com/video.mp4"

(Not: Bir .m3u8 bağlantısını çekmek için curl kullanırsanız, videoyu değil, sadece birkaç KB’lık oynatma listesi metni indirirsiniz!)

Senaryo 2: M3U8 VOD ve Canlı Yayınları İşleme (ffmpeg Kullanarak)

HLS akışlarıyla uğraşırken ffmpeg mutlak hükümdardır. -c copy parametresi, segmentleri yeniden kodlamadan doğrudan nihai bir MP4’te birleştirebilir ve kapsülleyebilir.

# VOD M3U8 -> Kayıpsız birleştirme ve MP4 dışa aktarma
ffmpeg \
  -user_agent "Mozilla/5.0" \
  -referer "https://example.com/page" \
  -i "https://cdn.example.com/master.m3u8" \
  -c copy out.mp4
 
# Canlı kayıt: önce kesintiye dayanıklı TS olarak kaydedin, ardından MP4'e dönüştürün
ffmpeg \
  -user_agent "Mozilla/5.0" \
  -i "https://cdn.example.com/live.m3u8" \
  -c copy -f mpegts live.ts
  
# Canlı yayın sona erdikten sonra güvenli bir şekilde kod dönüştürme (transcode) yapın
ffmpeg -i live.ts -c copy live.mp4

Senaryo 3: Sadece Bir Web Sayfası Girişine Sahip Olma (yt-dlp Kullanarak)

Sadece bir paylaşım sayfasına bağlantınız olduğunda, “katmanları soymanıza” yardımcı olması için yt-dlp’ye ihtiyacınız vardır. Sayfanın arkasındaki gerçek medya adresini ayrıştırabilir ve hatta tarayıcınızın oturum açma durumunu yeniden kullanabilir.

# Adım 1: Bu web sayfasının arkasında hangi çözünürlük formatlarının olduğunu görmek için araştırın
yt-dlp -F "https://example.com/watch/123"
 
# Adım 2: En iyi video+ses kalitesini indirin ve otomatik olarak MP4'te birleştirin
yt-dlp \
  -f "bv*+ba/b" \
  --merge-output-format mp4 \
  -o "%(title)s.%(ext)s" \
  "https://example.com/watch/123"
 
# Gelişmiş numara: Siteye girmek ve indirmek için Chrome tarayıcısının Çerezini doğrudan yeniden kullanın
yt-dlp \
  --cookies-from-browser chrome \
  --merge-output-format mp4 \
  "https://example.com/watch/123"

Bir web sayfasından canlı yayın çıkarmak ve kaydetmek istiyorsanız, streamlink’in ayrıştırma yetenekleri ffmpeg’inkinden daha uzmanlaşmıştır.

# Gerçek canlı yayın adresinin ayrıştırılıp ayrıştırılamayacağını test edin
streamlink --stream-url "https://example.com/live" best
 
# En iyi kaliteyi doğrudan yerel bir dosyaya kaydedin
streamlink --output live.ts "https://example.com/live" best

4. Yaygın Sorun Giderme ve Tuzaklardan Kaçınma Kılavuzu (SSS)

S: Dün çalışan bir doğrudan bağlantı bugün 403 / 401 hatası veriyor?
C: Medya URL’leri genellikle oturumunuza, Çerezinize, IP’nize ve hatta zaman damgasına (yani URI Signing) bağlıdır. Süresi dolarsa veya ağ ortamınız değişirse, yeni bir bağlantı elde etmek için paketleri yeniden yakalamanız gerekir.

S: Tarayıcıda oynatılıyor, ancak terminalde wget bir hata veriyor?
C: Terminaliniz “çıplak” çalışıyor. Tarayıcıda oynatırken, otomatik olarak Çerezleri, Referer’ı ve User-Agent’ı beraberinde getirir. Bu başlıkları (headers) komut satırında parametreler (-A, -b gibi) kullanarak sağlamalısınız.

S: Konsol neden bir CORS alanlar arası (cross-origin) hatası veriyor ve video indirilmiyor?
C: CORS tarafından kandırılmayın! CORS, web sayfalarındaki JavaScript komut dosyalarının alanlar arası verileri okumasını kısıtlar, ancak ffmpeg veya curl kullanarak sunucuya doğrudan istekte bulunmanızı kesinlikle kısıtlamaz. Bağlantıyı terminale kopyalayın, doğru Başlıkları (Headers) ekleyin ve gayet iyi indirilecektir.

S: M3U8 her zaman mükemmel bir şekilde MP4’e dönüştürülebilir mi?
C: Genellikle evet, eğer DRM (Dijital Haklar Yönetimi) uygulanmıyorsa. Ancak site DRM (Apple FairPlay veya Widevine gibi) uyguluyorsa, oynatma listesini alsanız bile video karelerinin şifresini çözemezsiniz. Bu makaledeki teknikler, DRM korumalı akışları kırmayı ele almaz.


The Bottom Line
Bir indirme başarısız olduğunda, onda dokuz oranında bu bir ağ hızı sorunu değildir, daha ziyade kaynağın gerçek doğasını görmediğiniz içindir. Doğrudan MP4 bağlantıları için curl/wget kullanın, web sayfası girişlerini yt-dlp’ye atın ve M3U8’i gördüğünüzde kararlı bir şekilde ffmpeg kullanın. Bu süreçler ve kodlar dizisini yer imlerine ekleyin ve gelecekte, en zorlu videolar bile kolayca çekilebilir!

Yazar: Baiwei

İlgili Makaleler

M3U8 yayını hakkında sizin için seçilen diğer makaleler