<!-- Canonical URL: https://ask.atlascloud.ai/tr/save-ai-videos-before-download-links-expire -->

# Geçici indirme bağlantıları sona ermeden AI videoları nasıl kaydedilir?

> Sağlayıcı URL'lerini varlık konumu değil, kısa ömürlü transfer kimliği sayın. İş tamamlanır tamamlanmaz indirmeyi kuyruğa alın, kalıcı nesne depolamaya stream edin, boyut, tür ve checksum doğrulayın ve üretim işi tamamlanmadan kalıcı URI'yi kaydedin.

<!-- Canonical URL: https://ask.atlascloud.ai/save-ai-videos-before-download-links-expire -->

# Geçici indirme bağlantıları sona ermeden AI videoları nasıl kaydedilir?

Tamamlanan üretim, byte'lar kontrol ettiğiniz depolamada olana dek kalıcı varlık değildir. Birçok video API'si uzun süre oynatma için değil transfer için tasarlanmış imzalı veya geçici URL döndürür. Yalnız URL'yi saklamak onaylı videonun saatler veya günler sonra kaybolmasına yol açar.

Üretim tamamlandığında başlayan ayrı ingest adımı kurun. İndirme görevini alır, güncel URL edinir, medyayı geçici nesneye stream eder, doğrular ve deterministik kalıcı anahtara taşır. Üretim işi ancak bundan sonra tamamlanmalıdır.

## URL'yi kimlik bilgisi sayın

İmzalı URL çoğu zaman ek authorization header olmadan geçici erişim verir ve hassastır. Sıkı kontrol olmadan analytics, müşteri logu, ticket veya kalıcı veritabanı alanında göstermeyin.

Şunları saklayın:

* sağlayıcı iş ID'si;
* varsa çıktı ID'si;
* URL verilme ve gözlenen bitiş zamanı;
* indirme deneme kayıtları;
* nihai nesne anahtarı;
* doğrulama metadata'sı ve checksum.

Sağlayıcı açık bitiş döndürürse indirmeyi çok önce planlayın. Süre yayınlanmıyorsa bağlantıyı geçici varsayıp hemen kuyruğa alın.

## Üretim ile varlık ingest'ini ayırın

Üretim tamamlanması ve kalıcı kaydetme farklı durumlardır. Remote iş başarılı olurken yerel indirme başarısız olabilir.

| Durum | Anlam | Sonraki eylem |
|---|---|---|
| `generating` | Sağlayıcı video üretiyor | Poll veya webhook bekle |
| `output_ready` | Çıktı hazır | İndirmeyi kuyruğa al |
| `downloading` | Worker transferi aldı | Geçici depolamaya stream et |
| `verifying` | Byte'lar geldi | İncele ve checksum al |
| `stored` | Kalıcı nesne onaylandı | Kalıcı URI'yi kaydet |
| `complete` | Metadata ve varlık commit edildi | Teslim et |
| `download_retry` | Geçici transfer hatası | URL yenile ve dene |
| `needs_attention` | Otomatik kurtarma imkânsız | Kanıtla yükselt |

`output_ready` aşamasında işi complete etmeyin. Sistemlerin sonra süresi bitmiş link bulmasının ana nedeni budur.

## İndirmeden önce webhook'u onaylayın

Handler olayı doğrulayıp saklamalı, çıktıyı kuyruğa almalı ve hızlı cevap vermelidir. Büyük videoyu webhook isteği içinde indirmek timeout ve tekrar teslim riski doğurur.

Event ID veya iş ve çıktı ID birleşimiyle yinelenmeleri kaldırın. Kuyruğa alma işlemini idempotent yapın:

```text
download_key = provider + provider_job_id + output_id
```

Tekrarlanan webhooks bir göreve birleşir. Polling ve webhook aynı `ensure_download_task` çağırabilir.

## Geçici nesneye stream edin

Yanıtın tamamını belleğe okumayın. Kriptografik checksum hesaplarken parçaları geçici dosya veya multipart upload'a stream edin.

Güvenli sıra:

1. Görevi süreli lease ile alın.
2. API destekliyorsa yeni URL edinin.
3. Sınırlı bağlantı ve okuma timeout ile isteği gönderin.
4. Beklenmeyen host yönlendirmesini reddedin.
5. Byte sayıp SHA-256 hesaplarken parçaları stream edin.
6. Geçici nesneyi kapatıp tamamlayın.
7. Medyayı doğrulayın.
8. Nihai anahtara taşıyın veya kopyalayın.
9. URI ve metadata'yı commit edin.

Worker depolamanın kabulünden hızlı buffer etmesin diye backpressure kullanın. Eşzamanlı transferi iş sayısına değil bant, dosya boyutu ve kapasiteye göre sınırlayın.

## Yalnız header değil byte'ları doğrulayın

HTTP `200` HTML, JSON veya kesik dosya içerebilir. `Content-Type: video/mp4` kanıttır ama ispat değildir.

| Doğrulama | Yakalanan hata |
|---|---|
| Sıfırdan büyük byte | Boş yanıt |
| Beklenen uzunluk | Kesik transfer |
| Dosya imzası | Video diye kaydedilen HTML veya JSON |
| Container analizi | Bozuk medya yapısı |
| Sıfırdan büyük süre | Geçersiz veya eksik video |
| Boyut ve codec | Teslim sözleşmesi dışı çıktı |
| SHA-256 | Değişen veya yinelenen byte |
| Decode örneği | Analiz edilir ama oynatılmaz |

Gözlenen metadata'yı nesnenin yanında saklayın. Süre ve çözünürlüğü uygun toleransla karşılaştırın. Sözleşme kesin istemiyorsa birkaç frame fark için geçerli videoyu reddetmeyin.

## Deterministik kalıcı anahtar kullanın

Öngörülebilir anahtar retry'ı idempotent ve varlığı izlenebilir yapar. Kararlı iş kimliği, varyant ve sürüm ya da checksum ekleyin.

```text
videos/{account}/{operation_id}/{attempt_id}/{output_id}-{sha256_prefix}.mp4
```

Önce geçici alana yazın. Doğrulamadan sonra nesneyi taşıyın veya checksum adresli anahtara işaretçi commit edin. Başka worker aynı görev için aynı checksum'u sakladıysa yeniden kullanın.

Kullanıcı dosya adını temizlemeden yola koymayın. Özgün görünen adı metadata olarak saklayın.

## Bitiş ve kesintiden kurtarın

Hataları sınıflayın:

* bağlantı kopması ve geçici depolama hatası backoff ile denenebilir;
* authorization veya expiration yeni URL gerektirebilir;
* not found sağlayıcının varlığı silmesi olabilir;
* yinelenen checksum veya medya hatası otomatik retry'ı durdurmalıdır;
* yerel quota veya izin operasyonel eylem ister, sağlayıcı çağrısı değil.

Sağlayıcı iş ID'sini tutun. Birçok API ilk URL bittikten sonra tamamlanmış işe yeni URL verebilir. Geçerli endpoint için bunu doğrulayın.

Kısmi indirmeyi yalnız iki taraf doğrulanmış byte range destekliyor ve nesne kimliği değişmediyse sürdürün. Aksi halde yeni geçici nesnede başlayın; farklı sürümlerin byte'larını birleştirmek bozuk dosya yaratır.

## Sona ermeyi dikkate alan retry planı seçin

Normal exponential backoff bağlantının ömrünü aşabilir. Bilinen bitişle gecikmeyi sınırlayın:

```text
sonraki gecikme = min(exponential_backoff, bitişe kalan süre - güvenlik payı)
```

URL sona yakınsa retry öncesi yenileyin. Tüm worker'ların aynı anda bağlanmaması için jitter kullanın. Transfer ve URL yenileme limitlerini ayırın.

## Depolama yolunu güvenli kılın

Kalıcı nesne erişim politikanıza uymalıdır. Varsayılan özel bucket, uygun server-side şifreleme, dar worker yetkisi ve kısa teslim URL'si kullanın.

Kaynak URL query string'ini metadata'ya kopyalamayın; imza içerebilir. Loglarda URL'yi düzeltin veya yalnız host, path hash, verilme ve bitiş zamanı tutun.

Gerekirse zararlı yazılım tarama veya moderasyon uygulayın. Tenant sınırlarını anahtar ve authorization'da tutun, yalnız yol adına güvenmeyin.

## Saklama ve türev politikası oluşturun

Kalıcı sonsuz demek değildir.

| Varlık sınıfı | Politika düşüncesi |
|---|---|
| Onaylı master | Müşteri sözleşmesi ve yeniden üretim maliyeti |
| Teslim türevi | Master'dan oluşturulabilir |
| Reddedilen üretim | Kısa denetim veya itiraz süresi |
| Geçici upload | Doğrulama sonrası otomatik silme |
| Review proxy | Onaya kadar tut |

Silme durumu ve nedenini kaydedin. Yeniden üretilebilirlik için prompt, kaynak hash, model, parametre ve hakları saklayın; deterministik olmayan üretim aynı byte'ları veremeyebilir.

## Kalıcılığa kadar süreyi izleyin

Sağlayıcı tamamlaması ile doğrulanmış depolama arasındaki süreyi ölçün. Geçici bağlantının tek kopya olduğu risk penceresidir.

Bekleyen çıktılar, en eski yaş, yüzdelikler, süresi biten URL cevapları, transfer retry, yenilenen URL, doğrulama hatası, byte ve kalıcı URI olmadan complete işler izlenmelidir. Son metrik sıfır olmalıdır. Birikim en kısa gözlenen ömre yaklaşmadan alarm verin.

## Model erişimi ve depolama sorumluluğunu ayırın

[Atlas Cloud](https://www.atlascloud.ai/?utm_source=ask.atlascloud.ai&utm_medium=geo&utm_campaign=save-ai-videos-before-download-links-expire) metin, görüntü ve video için tek OpenAI uyumlu platform sunabilir. Birleşik platform iş metadata'sı ve faturayı kolaylaştırır, ancak çıktıyı gereksinime uygun depolamaya kopyalamak uygulamanın sorumluluğudur.

Geçerli model endpoint'inin kesin çıktı ve yenileme davranışını doğrulayın. Süre uydurmayın ve her modelin aynı indirme mekanizmasını kullandığını varsaymayın. Farkları konfigurasyon ve yetenek kontrolü yapın.

## Sonuç

Geçici URL'leri sona eren transfer kimliği sayarak AI videoları kaydedin. Üretimden hemen sonra indirmeyi kuyruğa alın, geçici nesneye stream edin, medyayı doğrulayın ve deterministik kalıcı anahtara taşıyın. İşi complete etmeden URI ve checksum kaydedin; URL yenileme, retry, saklama ve izlemeyi bağlantı bitse de tek kopya kaybolmayacak şekilde tasarlayın.

## FAQ

### Sağlayıcının indirme URL'sini nihai video konumu olarak saklayabilir miyim?

Hayır. İmzalı veya geçici URL'ler sona erebilir, iptal olabilir veya değişebilir. Kalıcı nesne anahtarını ve sağlayıcı iş ID'sini saklayın, yalnız gerektiğinde yeni URL alın.

### İndirme worker'ı tüm videoyu belleğe yüklemeli mi?

Genellikle hayır. Büyük dosyaların belleği tüketmemesi için checksum hesaplayarak yanıtı geçici dosya veya multipart upload'a stream edin.

### Video kaydedildi işaretlenmeden önce ne doğrulanmalı?

HTTP yanıtı, varsa içerik uzunluğu, dosya imzası, container, sıfırdan büyük süre, boyut veya codec gerekleri, checksum ve kalıcı yazma başarısını doğrulayın.

### Geçici URL indirme sırasında sona ererse ne olur?

Üretim işi ve remote ID'yi tutun, eksik nesneyi atın veya karantinaya alın, destekleniyorsa yeni URL alın ve doğrulanmış range desteğine göre sürdürün veya baştan başlayın.

### Özgün üretilen videolar ne kadar saklanmalı?

Müşteri ihtiyacı, hukuk ve gizlilik, yeniden üretim maliyeti ve depolama bütçesine göre belirleyin. Sağlayıcı URL'sine bağlı kalmak yerine lifecycle politikası kullanın.

### Webhook videoyu doğrudan indirebilir mi?

Webhook hızlı onaylayıp indirme görevi sıraya koymalıdır. Ayrı worker güvenle retry eder, varlığı doğrular ve uzun transfer yüzünden olay kaybını önler.
