Bu konu, ApsaraVideo VOD depolama alanına çeşitli medya dosyalarını yüklemek için PHP sunucu tarafı yazılım geliştirme kitini (SDK) nasıl kullanacağınıza ilişkin ayrıntılı örnekler sunar.
Genel bakış
PHP geliştirmesi için B/S (Tarayıcı/Sunucu) mimarisi önerilir.
PHP yükleme SDK'sı, ApsaraVideo VOD sunucu tarafı SDK'nın genel iş akışını takip eder. Daha fazla bilgi için bkz. Yükleme işlemi. PHP yükleme SDK'sını kullanmanın temel adımları aşağıdaki gibidir:
Ön koşulları tamamlayın. Daha fazla bilgi için bkz. Ön koşullar.
PHP yükleme SDK'sını entegre edin. Daha fazla bilgi için bkz. PHP yükleme SDK'sını entegre etme.
-
Yükleme bilgilerini yapılandırmayı içeren yükleme mantığını uygulayın.
Ses ve video dosyalarını yüklemek için bkz. Senaryo 1: Ses ve video dosyalarını yükleme.
Görüntüleri yüklemek için bkz. Senaryo 2: Görüntüleri yükleme.
Ek medya varlıklarını yüklemek için bkz. Senaryo 3: Ek medya varlıklarını yükleme.
-
PHP yükleme SDK'sının varsayılan uç noktası
cn-shanghai(Şanghay) şeklindedir. Medya dosyalarını diğer bölgelere yüklemek içinAliyunVodUploadernesnesini başlatırken bölgeyi belirtebilirsiniz. ApsaraVideo VOD tarafından desteklenen uç noktalar hakkında daha fazla bilgi için bkz. Uç noktalar.Aşağıdaki örnekte yükleme bölgesinin
cn-beijing(Pekin) olarak nasıl ayarlanacağı gösterilmektedir:$apiRegionId = 'cn-beijing'; // The destination region for the upload. $uploader = new AliyunVodUploader($accessKeyId, $accessKeySecret, $apiRegionId);
Ön koşullar
ApsaraVideo VOD etkinleştirilmiş olmalıdır. Daha fazla bilgi için bkz. ApsaraVideo VOD'u etkinleştirme.
Belirtilen bölgedeki depolama yolu ve geri arama ayarları dahil olmak üzere yükleme için gerekli sistem ayarları yapılandırılmış olmalıdır. Daha fazla bilgi için bkz. Depolama paketlerini yönetme ve Geri aramaları yapılandırma.
ApsaraVideo VOD'a erişmek için bir RAM kullanıcısı oluşturulmuş ve bu kullanıcı kullanılıyor olmalıdır. Alibaba Cloud hesabınızın AccessKey çiftinin sızması nedeniyle oluşabilecek güvenlik risklerini önlemek için bir RAM kullanıcısı oluşturmanızı ve bu kullanıcıya ApsaraVideo VOD'a erişmek için gereken izinleri vermenizi öneririz. Ardından ApsaraVideo VOD'a erişmek için RAM kullanıcısının AccessKey çiftini kullanabilirsiniz. Daha fazla bilgi için bkz. RAM kullanıcısı oluşturma ve izin verme.
-
ALIBABA_CLOUD_ACCESS_KEY_ID ve ALIBABA_CLOUD_ACCESS_KEY_SECRET ortam değişkenlerini yapılandırın. Daha fazla bilgi için bkz. Linux, macOS ve Windows'ta ortam değişkenlerini yapılandırma.
ÖnemliBir Alibaba Cloud hesabının AccessKey çifti tüm API işlemlerine erişim iznine sahiptir. API işlemlerini çağırmak veya rutin bakım ve işletme işlemlerini gerçekleştirmek için bir RAM kullanıcısının AccessKey çiftini kullanın.
AccessKey ID'nizi ve AccessKey secret anahtarınızı proje koduna sabit kodlamayın. Sızması durumunda hesabınızdaki tüm kaynaklar tehlikeye girer.
İsteğe bağlı. ApsaraVideo VOD'a Security Token Service (STS) kullanarak erişmek istiyorsanız RAM kullanıcısı için bir rol oluşturun ve bu role ApsaraVideo VOD'a erişmek için gereken izinleri atayın. Daha fazla bilgi için bkz. STS belirteci alma.
PHP yükleme SDK'sını entegre etme
-
SDK'yı ve demo uygulamayı indirin.
SDK sürümü: 1.0.3
Güncelleme tarihi: 2022-04-19
İndirme adresi: V1.0.3 SDK ve demo kaynak kodu
VodUploadSDK-PHP_1.0.3.zip dosyasını çıkarın ve VodUploadSDK-PHP_1.0.3 dizinindeki voduploadsdk klasörünü projenize kopyalayın.
PHP yükleme SDK'sı dizin yapısı
Yol: VodUploadSDK-PHP_1.0.3/voduploadsdk/uploader
-
UploadVideoRequest.php
Dizin
Açıklama
UploadVideoRequest
Video yükleme istek sınıfı. Alanlar hakkında daha fazla bilgi için bkz. CreateUploadVideo. -
UploadImageRequest.php
Dizin
Açıklama
UploadImageRequest
Görüntü yükleme istek sınıfı. Alanlar hakkında daha fazla bilgi için bkz. CreateUploadImage. -
UploadAttachedMediaRequest.php
Dizin
Açıklama
UploadAttachedMediaRequest
Ek medya varlığı yükleme istek sınıfı. Alanlar hakkında daha fazla bilgi için bkz. CreateUploadAttachedMedia. -
AliyunVodUploader.php
Dizin
Açıklama
__construct
Yüklemeler için AccessKey bilgisini, ApsaraVideo VOD merkezini ve uç noktayı ayarlar. Daha fazla bilgi için bkz. AccessKey ve ApsaraVideo VOD bölge kimlikleri.
uploadLocalVideo
Yerel videoları yüklemek için kullanılan arayüz.
uploadWebVideo
Web videolarını yüklemek için kullanılan arayüz.
uploadLocalImage
Yerel görüntüleri yükler.
uploadWebImage
Web görüntülerini yükler.
uploadLocalAttachedMedia
Yerel ek medya varlıklarını yükler.
uploadWebAttachedMedia
Web ek medya varlıklarını yükler.
uploadLocalM3u8
Yerel M3U8 dosyalarını yükler.
uploadWebM3u8
Web M3U8 dosyalarını yükler.
parseM3u8File
Parça adreslerinin listesini almak için bir M3U8 manifest dosyasını ayrıştırır.
setEcsRegionId
Varsa, yükleme betiğinin dağıtıldığı ECS örneğinin bölgesini ayarlar. Bölge, ApsaraVideo VOD depolama bölgesiyle aynıysa dahili ağ üzerinden yükleme otomatik olarak etkinleştirilir.
setEnableSSL
SSL'nin etkinleştirilip etkinleştirilmeyeceğini (ağ istekleri için HTTPS kullanımını) belirtir. İlgili uzantılar yüklü olmadığında veya yanlış yapılandırıldığında sorunları önlemek için varsayılan olarak devre dışı bırakılır.
uploadProgressCallback
Yükleme ilerlemesi için geri arama işlevi. Bu işlevi yeniden yazabilirsiniz. Yöntem imzası ve geçersiz kılma örneği için aşağıya bakın.uploadProgressCallback yöntemi imzası
public function uploadProgressCallback($mediaId, $consumedBytes, $totalBytes)$mediaId: Medya kimliği.$consumedBytes: Şimdiye kadar yüklenen bayt sayısı.$totalBytes: Dosyanın bayt cinsinden toplam boyutu.
Yükleme ilerleme yüzdesini hesaplamak için
100 * ($consumedBytes / $totalBytes)formülünü kullanın. Sıfıra bölme hatasından kaçınmak için bölme işleminden önce$totalBytesdeğerinin 0'dan büyük olduğunu kontrol edin.Özel yükleme ilerlemesi görüntülemek için
AliyunVodUploadersınıfını genişletin ve bu yöntemi geçersiz kılın. Aşağıdaki örnekte bunun nasıl yapılacağı gösterilmektedir:class MyAliyunVodUploader extends AliyunVodUploader { public function uploadProgressCallback($mediaId, $consumedBytes, $totalBytes) { if ($totalBytes > 0) { $rate = 100 * (floatval($consumedBytes) / floatval($totalBytes)); } else { $rate = 0; } echo round($rate, 1) . "%\n"; flush(); } } -
AliyunVodUtils.php
Dizin
Açıklama
AliyunVodUtils
Dizeleri kırpma, dosya uzantılarını alma ve dosya adlarını alma gibi statik işlevler sağlayan bir yardımcı program sınıfı.
AliyunVodLog
Basit yazdırma için kullanılan bir günlük sınıfı.logSwitch, günlük anahtarıdır.
AliyunVodDownloader
Web dosyalarını indirir.
AliyunVodReportUpload
Yükleme ilerlemesini bildirir.
AliyunVodError
Hata kodlarını tanımlar.
Yol: VodUploadSDK-PHP_1.0.3/voduploadsdk
aliyun-php-sdk-core: Yükleme SDK'sı için temel sınıfı sağlayan bir bağımlılık. Alibaba Cloud API imzalama, HTTP istekleri ve diğer çekirdek işlevsellikleri kapsüller.
aliyun-php-sdk-vod: ApsaraVideo VOD için sunucu tarafı API SDK'sı. ApsaraVideo VOD API'lerine yönelik istekleri kapsüller.
aliyun-php-sdk-oss: Yükleme SDK'sı için OSS sınıfını sağlayan bir bağımlılık. OSS yükleme işlemlerini ve diğer ilgili işlevleri kapsüller.
Yol: VodUploadSDK-PHP_1.0.3/samples
uploadVideo.php: Video yükleme için örnek kod.
uploadImage.php: Görüntü yükleme için örnek kod.
uploadAttachedMedia.php: Ek medya varlığı yükleme için örnek kod.
Senaryo 1: Ses ve video dosyalarını yükleme
Standart ses ve video dosyaları
Aşağıdaki türlerdeki ses ve video dosyalarını yükleyebilirsiniz:
Çok parçalı yükleme kullanarak yerel dosyaları yükleyebilirsiniz. Tek bir dosyanın boyutu en fazla 48,8 TB olabilir. Kaldığı yerden devam eden yükleme desteklenmez. Daha fazla bilgi için
testUploadLocalVideoişlevine bakın.Bir dosya URL'si belirterek web dosyalarını yükleyebilirsiniz. Tek bir dosyanın boyutu en fazla 48,8 TB olabilir. Bu yöntem, web dosyasının yüklenmeden önce yerel diske indirilmesini gerektirir. Yerel diskinizde yeterli alan olduğundan emin olun. Daha fazla bilgi için
testUploadWebVideoişlevine bakın.
uploadLocalVideo yöntemi, bir videoyu yüklerken setTemplateGroupId() çağrısıyla bir kod dönüştürme şablonu grubu belirtmenize olanak tanır. Bir kod dönüştürme şablonu grubu kimliği belirtirseniz video, yükleme tamamlandığında otomatik olarak kodu dönüştürülür ve SubmitTranscodeJobs işlemini ayrıca çağırmanız gerekmez. Kod dönüştürme şablonu grubu kimliğini almak için VOD konsolunda Configuration Management > Media Processing Configuration > Transcoding Template Groups sayfasına gidin.
M3U8 video dosyaları
Aşağıdaki kod bir örnek sağlar:
Yükleme hızlandırma
GB veya TB boyutundaki büyük dosyaları yüklemek veya Çin anakarasından Singapur depolama bölgesindeki bir depolama adresine yükleme yapmak gibi bölgeler arası yüklemeler gerçekleştirmek için yükleme hızlandırma özelliğini etkinleştirebilirsiniz. Daha fazla bilgi için bkz. Etkinleştirme yöntemi. Bu özelliği etkinleştirdikten sonra yükleme yapılandırmasındaki UserData nesnesine anahtar-değer çifti olarak AccelerateConfig eklemeniz gerekir. UserData nesnesi yoksa bunu oluşturun. Aşağıdaki kod bir örnek sağlar:
$userData = array(
"AccelerateConfig"=>array("Type"=>"oss","Domain"=>"****Bucket.oss-accelerate.aliyuncs.com"),
);
$uploadVideoRequest->setUserData(json_encode($userData));
Parametre açıklaması
Ad | Tür | Açıklama |
Type | string | Etkinleştirilecek yükleme hızlandırma türü. Yalnızca |
Domain | string | Kullanıcının paketi için hızlandırma uç noktası. Varsayılan olarak HTTPS kullanılır. Not Etkinleştirmeden sonra atanan bir hızlandırma uç noktası kullanın, örneğin |
Birden çok videoyu toplu olarak yükleme
uploadLocalVideo veya uploadWebVideo çağrısının her biri yalnızca tek bir video dosyası yükler. Tek bir çağrıda birden çok videonun toplu yüklenmesi desteklenmez. Birden çok videoyu toplu olarak yüklemek için UploadMediaByUrl işlemini çağırın.
konsol içindeki yükleme sayfasında videoları toplu olarak yüklediğinizde videolar yine de tek tek işlenir. Büyük dosyaları veya bir dosya grubunu yüklemeniz gerekiyorsa PC istemci aracını kullanmanızı öneririz.
Senaryo 2: Görüntüleri yükleme
Senaryo 3: Ek medya varlıklarını yükleme
Aşağıdaki kod bir örnek sağlar: