このトピックでは、メディアアセットのアップロードに関する一般的な問題と解決策について説明します。
新しい動画をアップロードして、既存の動画を上書きまたは置き換えできますか?
いいえ。ApsaraVideo VOD では、新しい動画をアップロードして既存の動画を上書きまたは置き換えることはサポートしていません。動画を更新するには、新しい動画を別ファイルとしてアップロードする必要があり、その結果、新しい VideoId が生成されます。その後、業務システムで使用している参照アドレスを、新しい VideoId に手動で置き換える必要があります。
ファイルが「Uploading」ステータスのままになるのはなぜですか?
この問題は、次のいずれかの理由によって発生する可能性があります。
原因1:URLによる一括アップロードは非同期タスクです。
UploadMediaByURL API を使用する場合、アップロードは非同期タスクです。アップロードはリアルタイムで完了せず、完了までに数時間、場合によっては数日かかることがあります。この操作は、China (Shanghai)、China (Beijing)、China (Shenzhen)、Singapore、U.S. (Silicon Valley) リージョンでのみサポートされています。アップロードには、ApsaraVideo VOD の サーバーサイドアップロードSDK を統合することを推奨します。
原因2:アップロード認証情報のみが生成され、ファイルがアップロードされていません。これは、「CreateUploadVideo API が成功レスポンスを返すのに、コンソールでは動画が 'Uploading' のまま表示される」と表現されることがよくあります。
CreateUploadVideo API を呼び出すと、アップロード認証情報を取得し、メディアアセットの基本情報を作成するだけです。この操作ではファイルはアップロードされません。この操作が成功しても、ファイルのアップロードが完了したことを意味するわけでは ありません。返された
UploadAuthとUploadAddressを使用して、SDK または API を呼び出し、Object Storage Service (OSS) にファイルをアップロードする必要があります。手順の詳細については、「ApsaraVideo VOD APIを呼び出してメディアファイルをアップロードする」をご参照ください。ファイルアップロード手順が実際に実行されているかどうか、およびその結果を確認できるように、コードにログまたはブレークポイントを追加することを推奨します。原因3:ファイルサイズが大きく、アップロードに時間がかかっています。
ファイルサイズと、「Uploading」ステータスに費やしている時間が妥当かどうかを確認してください。[コンソール]、アップロードSDK、またはクライアントツールを使用してファイルをアップロードする場合、デフォルトでマルチパートアップロードが使用されます。マルチパートアップロードは、単一ファイルで最大 48.8 TB をサポートします。アップロードSDKにはシンプルアップロード機能も用意されており、単一ファイルで最大 5 GB をサポートします。
原因4:ネットワークの問題
ネットワーク帯域幅が要件を満たしているかどうかを確認してください。
ApsaraVideo VOD はアップロード速度に制限を設けていません。実際のアップロード速度は、ローカルの帯域幅とネットワーク状況によって異なります。大容量ファイル (700 MB を超えるファイルなど) の場合、アップロードおよび後続のトランスコードに時間がかかるのは正常です。ネットワーク接続、またはアップロードツールのパフォーマンスを確認することを推奨します。
クロスリージョンアップロード (例:米国から Singapore へのアップロード) はネットワーク遅延の影響を大きく受けます。このようなシナリオでは、固定の推定時間は提示できません。
ビデオが長時間「アップロード中」のステータスのままでトランスコーディングが開始されない場合、通常はファイルのアップロードがまだ完了していないことが原因です。システムは、ファイルのアップロードが完了した後にのみ、トランスコーディングを自動的に開始します。[コンソール] またはアップロードツールで具体的なアップロードの進行状況を確認し、アップロードが完了するまでアップロードページを開いたままにしておくことをお勧めします。
[コンソール] でスピニングインジケーターが回転し続ける、またはアップロードが進まない場合は、以下のいずれかの方法で問題を診断します。
[F12] キーを押してブラウザのデベロッパーツールを開き、[Network] タブで失敗したリクエストやエラーレスポンスを確認してください。
Wireshark などのパケットキャプチャツールを使用してクライアントのネットワークリクエストを分析し、接続の問題を特定してください。
VOD SDKがonUploadSucceedコールバックをトリガーした後も、コンソールに「Uploading」と表示されるのはなぜですか?
この問題は通常、ファイルが Object Storage Service (OSS) に完全にアップロードされていないことが原因です。PostPolicy の content-length-range 設定が厳しすぎないか確認してください。5368709120 (5 GB) に設定することを推奨します。さらに、ローカルネットワークが正常であること、そしてファイルのアップロードが実際に完了していることを確認してください。問題が解消しない場合は、ファイルを再度アップロードしてください。
JavaScript SDKにおけるsetUploadAuthAndAddressとresumeUploadWithAuthの違い
2つのメソッドは、異なるアップロードシナリオで使用します。
uploader.setUploadAuthAndAddress(uploadAuth, uploadAddress, videoId, mediaType):初回アップロードに使用します。CreateUploadVideo - 動画アップロードURLと認証情報を取得を呼び出してサーバーから新しいアップロード認証情報を取得した後に呼び出します。uploader.resumeUploadWithAuth(uploadAuth):中断したアップロードの再開、または既存の認証情報の更新に使用します。サーバーが RefreshUploadVideo - 動画アップロードURLと認証情報を更新を呼び出して認証情報を更新した後に呼び出します。
応答がない、またはエラーが発生する場合のトラブルシューティング
uploadInfo.videoIdに値があるか確認してください。値がある場合、サーバーは
RefreshUploadVideoを呼び出して認証情報を更新する必要があります。空の場合、サーバーで
CreateUploadVideoを呼び出して新しい認証情報を取得します。
フロントエンドの呼び出しロジックを確認してください。
新しい認証情報を取得した後は、
setUploadAuthAndAddressを呼び出す必要があります。既存の認証情報を更新した後は、
resumeUploadWithAuthを呼び出す必要があります。
サーバーから返される認証情報の権限とパラメーターが正しいか確認してください。
アップロードがセンシティブな単語またはファイル名違反エラーで失敗する場合の対処法
原因: CreateUploadVideo API を呼び出す際に、動画ファイル名にセンシティブな単語が含まれていると、アップロードがブロックされるか、権限の検証に失敗します。
解決策: 動画ファイル名を、センシティブな単語を含まない名前に変更してから、CreateUploadVideo API を再度呼び出して新しいアップロード認証情報を取得してください。
Android/iOSアップロードSDKにおける同時アップロード例外またはメンテナンスが終了したSDKの問題への対処法
メンテナンスが終了したSDKの場合: 複数の uploader インスタンスを同時に作成しないでください。次のアップロードを開始する前に、前のアップロードタスクが完了していることを確認してください。
Android SDKのヌルポインター例外: Android SDK は、単一インスタンスで複数回呼び出した場合、または複数の画像で同時アップロードを行った場合に、ヌルポインター例外をスローしてクラッシュすることがあります。これは、内部の release と cancel のプロセスにおける競合が原因で発生する既知の問題です。このリスクを回避するため、順次アップロードを使用することを推奨します。
動画以外のファイルをアップロードすると成功と表示される、またはコールバックで500エラーが返されるのはなぜですか?
動画以外のファイルでアップロードが成功する: 画像と音声ファイルはサポートされているメディアタイプであり、通常どおりアップロードできます。無関係なファイルタイプでアップロード成功となる場合、ファイル拡張子の誤認識、検証を回避するカスタムアップロードロジック、または API アップロードで厳格な形式検証が有効になっていないことが原因の可能性があります。サポートされているファイル拡張子のリストを確認することを推奨します。
コールバックが 500 エラーを返す: ApsaraVideo VOD は、.docx ファイルなどのテキストドキュメントのアップロードをサポートしていません。このようなメディア以外のファイルをアップロードしてコールバックをトリガーすると、500 エラーが発生します。オーディオやビデオなど、サポートされているメディアタイプのみをアップロードするか、[コンソール] で不要なコールバック設定を無効にすることをお勧めします。
大量の進行中アップロードタスクの影響と無効なタスクのクリーンアップ方法
タスクの独立性: アップロードタスクは独立しています。バックグラウンドで進行中のタスクが大量にあっても、通常は他のユーザーの通常のアップロードには影響しません。
無効なタスクのクリーンアップ
認証情報作成 API のみを呼び出し、実際のファイルをアップロードしていない場合、タスクは「Uploading」ステータスのままになり、自動的にはクローズされません。
アップロード中断により失敗したタスクは、自動的には削除されません。
いずれの場合も、[コンソール]でタスクを手動でキャンセルまたは削除する必要があります。
iOSアップロードSDKでError Domain=NSCocoaErrorDomainエラーが発生してアップロードに失敗した場合の対処法
エラーコード 207、エラーメッセージ「Error Domain=NSCocoaErrorDomain」が表示されてアップロードに失敗する現象は、通常、権限不足によるファイル読み取りエラーが原因です。この問題を解決するには、次のいずれかの方法を使用してください。
方法1: iOS 用アップロードSDKにローカルリソースの読み取り権限を付与してください。
方法2: アップロード前に、ローカルリソースをサンドボックスパスに保存してください。
URLによる一括アップロード中に「The service is not open in current region」エラーが発生した場合の対処法
エラーメッセージ The service is not open in current region は、現在のリージョンで URL による一括アップロードがサポートされていないことを示します。URLによる一括アップロードは、China (Shanghai)、China (Beijing)、China (Shenzhen)、Singapore、U.S. (Silicon Valley) リージョンでのみサポートされています。
別のリージョンを使用している場合は、音声または動画ファイルをローカルコンピューターにダウンロードしてから、アップロードSDKを使用してアップロードできます。詳細については、「SDK Overview」をご参照ください。
コンソールでアップロードした画像を表示できないのはなぜですか?
画像タイプのメディアアセットをアップロードする際に、タイプを cover (動画サムネイル) に設定すると、ファイルはコンソールに表示されません。画像は API を呼び出してのみクエリできます。詳細については、「CreateUploadImage - 画像アップロードURLと認証情報を取得」をご参照ください。
MOV形式でアップロードした動画を再生できず、VideoIdからURLを取得できない場合の対処法
この問題は通常、MOV 形式のサポートが限定的であることが原因です。アップロード前に、MOV 動画を MP4 などの一般的な形式にトランスコードすることを推奨します。ソースファイルの再生URLを取得する必要がある場合は、GetMezzanineInfo を呼び出して FileURL を取得してください。また、SDKの最新バージョン (例:vod20170321 バージョン 3.6.4) を使用しているか確認し、必要に応じてアップグレードしてください。あわせて、公式デモを参照してテストと検証を行ってください。
WeChatにおけるJS SDKアップロードの互換性の問題
この問題は、WeChatブラウザにおけるHTML5の互換性問題が原因で発生します。この問題を解決するには、multiple="" パラメーターを <input type="file" name="file" id="files" multiple=""> から削除してください。
Web SDKを使用したアップロードでonUploadProgressがトリガーされず、エラーも報告されない場合の対処法
次の順序で問題を切り分けてください。
ブラウザ環境を確認してください。広告ブロック拡張機能 (AdBlock、uBlock Origin など) を無効にするか、Alibaba Cloud ドメインをこれら拡張機能の許可リストに追加してください。Microsoft Edge を使用している場合は、[Tracking prevention] または [Enhanced security mode] を一時的に無効にして、問題が解消するか確認してください。
SDKのコードロジックを確認してください。
uploader.setUploadAuthAndAddress(uploadInfo, uploadAuth, uploadAddress, videoId)がonUploadStartedコールバック内で同期的に呼び出されているか確認してください。パラメーター形式と有効性を検証してください。
uploadAuthとuploadAddressが有効な Base64 エンコード文字列であるか、構造が公式デモと一致しているか、認証情報が 30 分の有効期間内であるかを確認してください。setUploadAuthAndAddressに渡している実際のパラメーター値を出力し、空の値や想定外の形式がないか確認してください。
レジューム可能なアップロードがAccessDeniedで失敗する、またはAliyunVodSaasStsRoleロールがない旨のメッセージが表示される場合の対処法
AliyunVodSaasStsRole ロールを手動で作成する必要はありません。AccessDenied エラーは通常、次のいずれかの理由によって発生します。
認証情報を更新した後、新しい
UploadAuthがresumeUploadWithAuthメソッドに渡されていません。ネイティブOSS SDKを使用する際に、
UploadAuthとUploadAddressが Base64 デコードされていません。STS トークンの有効期限が切れている、または権限が不足しています。
アップロードファイルパスが、STS ポリシーで許可されているパスと一致していません (例:
svフォルダーではなくcustomerTransフォルダー)。
必要な権限は oss:PutObject です。この問題を解決するには、
アップロードパスが RAM または STS ポリシーで許可されているパスと一致していることを確認するか、実際のアップロードディレクトリを含むようにポリシーを更新してください。
コード内の認証情報の受け渡しとデコードのロジックを確認してください。
トークンが有効期間内であることを確認してください。
Push SDKで特定の解像度を選択した場合のプレビューページの引き伸ばし
Push SDK で 480p の解像度を選択すると、プレビューページが引き伸ばされて表示されますが、実際のストリーム取り込みは正常です。これは、480p が 480 × 640 の解像度に対応しているためです。このアスペクト比はほとんどの携帯電話画面でサポートされておらず、引き伸ばしが発生します。
解決策:プレビューページの SurfaceView のアスペクト比を変更します。activity_push.xml ファイルの内容を次のように変更してください。
public void initView() {
// mPreviewView を取得します
mPreviewView = (SurfaceView) findViewById(R.id.preview_view);
mPreviewView.getHolder().addCallback(mCallback);
}
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<SurfaceView
android:id="@+id/preview_view"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
<!--FrameLayout-->
<!--android:id="@+id/publisher_fragment"-->
<!--android:layout_width="match_parent"-->
<!--android:layout_height="match_parent"-->
<!--android:visibility="gone"/>-->
<android.support.v4.view.ViewPager
android:id="@+id/tv_pager"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
</android.support.v4.view.ViewPager>
</RelativeLayout>
Android StudioでAARパッケージデータを表示およびインポートする方法
AAR パッケージデータを表示するには、ファイル拡張子を .aar から .zip に変更して解凍してください。これにより、.class ファイル、.xml ファイル、.jar ファイル、画像、テキストなどの内容を確認できます。
AAR パッケージデータをインポートするには、
.aarファイルをプロジェクトフォルダー (通常は projectName/libs/ パス) にコピーし、プロジェクトを再読み込みしてください。AlivcPlayer.aar、aliyun-vod-upload-android-sdk-1.1.1.jar、aliyun-vod-core-android-sdk-1.2.1.jar、gson-2.8.0.jar、jsr305-3.0.0.jarなどのライブラリファイルをプロジェクトの [app] > [libs] ディレクトリにコピーし、プロジェクトを再読み込みしてください。build.gradle ファイルで、root タグの下にローカルリポジトリパスを追加し、
dependenciesブロックに compile 依存関係を追加してください。libs ディレクトリ名は、パッケージをプロジェクトにインポートするフォルダーによって異なります。[compile] パラメーターでは、[name] が AAR ファイル名を指定し、[ext] がファイル拡張子を指定します。
repositories{ flatDir{ dirs 'libs' } } dependencies { compile fileTree(include: ['*.jar'], dir: 'libs') testCompile 'junit:junit:4.12' compile 'com.android.support:appcompat-v7:26+' compile 'com.android.support:design:26+' compile (name:'AlivcPlayer',ext:'aar') // アップロードSDKはOSSアップロードSDKに依存します compile 'com.aliyun.dpa:oss-android-sdk:2.4.5' }[Build] > [Rebuild] を選択して、プロジェクトを再ビルドしてください。
ビルドが完了すると、インポートした AAR パッケージがプロジェクトの [External Libraries] セクションに表示されます。
External Libraries ├── Android API 26 Platform ├── JRE 1.8 ├── AlivcPlayer:@aar │ ├── classes.jar (library root) │ │ └── com │ │ ├── alivc.player │ │ └── aliyun.aliyunplayer │ └── res (library root) │ ├── values │ └── values-zh-rCN ├── com.aliyun.dpa:oss-android-sdk-2.4.5 ├── com.android.support:animated-vector-drawable:26.0.0-alpha1 ├── com.android.support:appcompat-v7:26.0.0-alpha1 ├── com.android.support:design:26.0.0-alpha1 ├── com.android.support:recyclerview-v7:26.0.0-alpha1 ├── com.android.support:support-annotations:26.0.0-alpha1 └── com.android.support:support-compat:26.0.0-alpha1
URLによる一括アップロードの完了に時間がかかるのは正常ですか?
URLによる一括アップロードは非同期タスクです。システムは最初にソースURLからファイルをダウンロードし、その後 ApsaraVideo VOD にアップロードする必要があります。大容量ファイルの場合、またはソースサーバーの帯域幅が制限されている場合、このプロセスに数時間かかることがあります。これは想定どおりの動作です。次の対応を行うことを推奨します。
ソースURLがインターネット経由でアクセス可能であり、ダウンロード速度が正常であることを確認してください。
迅速に利用可能にする必要がある大容量ファイルについては、代わりにサーバーサイドアップロードSDKまたはクライアントサイドアップロードSDKを使用してください。
サーバーサイドアップロード後にVideoIdが生成されない、またはホストがlocalhostに解決されるのはなぜですか?
どちらの症状も通常、アップロードクライアントの初期化時にリージョン設定が誤っていることが原因です。vodClient を初期化する際に、regionId (例: cn-beijing) を明示的に正しく設定し、そのリージョンのパブリックエンドポイントを使用してください。これにより、ドメイン名が誤って解決されることを防げます。
コンソールまたはWebページからのアップロード中にネットワークエラーが報告された場合の対処法
ネットワークエラーは通常、ブラウザまたはローカルネットワーク環境に関連しています。次を試してください。
別のブラウザまたはネットワークに切り替えて、再度アップロードを試してください。
ローカルネットワークで OSS アップロードドメインを名前解決できることを確認してください。
pingコマンドを使用して確認できます。問題が解消しない場合は、代わりにサーバーサイドアップロードSDKを使用してファイルをアップロードしてください。
動画アップロード中にOSSドメインへの接続がタイムアウトする場合、どのネットワークポリシーを許可する必要がありますか?
vod.cn-shanghai.aliyuncs.com でポート 443 を許可することに加え、アップロード先の実際の OSS ドメイン (例: outin-*.oss-cn-shanghai.aliyuncs.com) でもポート 443 を許可する必要があります。また、vod-upload.cn-shanghai.aliyuncs.com (アップロードエンドポイント) と sts.cn-shanghai.aliyuncs.com (一時的な認証情報の取得に使用) でもポート 443 を許可することを推奨します。サーバーが VPC 内にデプロイされている場合は、これらのパブリックドメインにアクセスするために NAT ゲートウェイまたは EIP を設定する必要があります。
ApsaraVideo VODは、アップロードした動画のMD5またはCRC-64ハッシュ値を提供しますか?
いいえ。ApsaraVideo VOD は、アップロードした動画の MD5、CRC-64、またはその他のハッシュ値をクエリする機能を提供していません。ビジネス要件としてファイルの完全性検証が必要な場合は、アップロード前にクライアント側またはサーバー側でハッシュ値を計算して記録することを推奨します。
関連リンク
アップロードフローと手順の詳細については、次のドキュメントをご参照ください。
ApsaraVideo VOD コンソールまたは PC アップロードツールを使用したファイルのアップロード方法の詳細については、「ツールを使用したアップロード」をご参照ください。
ApsaraVideo VOD アップロードSDK、ネイティブOSS SDK、URLによる一括アップロード、またはOSS APIを使用したファイルのアップロード方法の詳細については、「開発者によるアップロード」をご参照ください。
URLによる一括アップロード後にContent-Typeがapplication/octet-streamと表示される場合の対処法
UploadMediaByURL API の FileExtension パラメーターは、ApsaraVideo VOD がメディアを正しくトランスコードして再生できるように、ソースファイルの形式を指定します。Object Storage Service (OSS) オブジェクトの Content-Type メタデータは変更しません。そのため、URLによる一括アップロード後に Content-Type が application/octet-stream と表示される場合があります。
Content-Type を video/mp4 などの値に変更するには、アップロード後に ossutil の set-meta コマンドを使用して、OSS 内のファイルメタデータを一括で変更します。代替として、トランスコードをトリガーして新しいファイルを生成することもできます。トランスコードには料金が発生します。
URLによる一括アップロードタスクのステータス確認とアップロード失敗のトラブルシューティング方法
URLによる一括アップロードが失敗した場合、またはアップロードタスクの進捗を確認する必要がある場合は、GetURLUploadInfos API を呼び出してタスクステータスをクエリしてください。返された情報を使用してアップロード失敗を診断してください。失敗が OSS ストレージインターフェイスと設定の不整合によって発生している場合は、この情報を使用して差異を特定してください。OSS ストレージインターフェイスと設定が一致していることを確認してください。