このトピックでは、メディアアセットのアップロードに関する一般的な問題と解決策について説明します。
新しい動画をアップロードして、既存の動画を上書きまたは置き換えできますか。
いいえ。ApsaraVideo VOD では、新しい動画をアップロードして既存の動画を上書きまたは置き換えることはできません。 動画を更新するには、新しい動画を別のファイルとしてアップロードする必要があります。これにより、新しい VideoId が生成されます。 その後、ビジネスシステムで使用されている参照アドレスを、新しい VideoId に手動で置き換える必要があります。
ファイルが「アップロード中」のステータスで止まってしまうのはなぜですか。
この問題は、以下のいずれかの原因が考えられます。
原因 1:URL ベースの一括アップロードは非同期タスクです。
UploadMediaByURL API を使用する場合、アップロードは非同期タスクです。 アップロードはリアルタイムでは完了せず、完了までに数時間、場合によっては数日かかることがあります。 この操作は、中国 (上海) および シンガポール リージョンでのみ利用可能です。 アップロードには、ApsaraVideo VOD の サーバー側アップロード SDK を統合することを推奨します。
原因 2:アップロード認証情報が生成されただけで、ファイルはアップロードされていません。 これは、よくある「CreateUploadVideo API が成功のレスポンスを返したにもかかわらず、コンソールでは動画が『アップロード中』と表示され続ける」というケースです。
CreateUploadVideo API を呼び出すと、アップロード認証情報が取得され、メディアアsetの基本情報が作成されるだけです。 この操作ではファイルはアップロードされません。 この API の呼び出しが成功しても、ファイルのアップロードが完了したわけではありません。 返された
UploadAuthとUploadAddressを使用して SDK または API を呼び出し、ファイルを Object Storage Service (OSS) にアップロードする必要があります。 完全な手順については、「ApsaraVideo VOD APIを呼び出してメディアファイルをアップロードする」をご参照ください。 コードにログやブレークポイントを追加して、ファイルアップロードのステップが実際に実行されているか、またその結果を確認することを推奨します。原因 3:ファイルが大きいため、アップロードに時間がかかります。
ファイルサイズと「アップロード中」ステータスで費やされた時間が妥当かどうかを確認してください。 コンソール、アップロード SDK、またはクライアントツールを使用してファイルをアップロードする場合、デフォルトでマルチパートアップロードが使用されます。 マルチパートアップロードは、最大 48.8 TB の単一ファイルをサポートします。 アップロード SDK は、最大 5 GB の単一ファイルをサポートするシンプルなアップロード機能も提供します。
原因 4:ネットワークの問題。
ネットワーク帯域幅が要件を満たしているか確認してください。
ApsaraVideo VOD はアップロード速度に制限を設けていません。 実際のアップロード速度は、ローカルの帯域幅とネットワーク状況に依存します。 大容量ファイル (700 MB を超えるファイルなど) の場合、アップロードとその後のトランスコードに時間がかかるのは正常です。 ネットワーク接続やアップロードツールのパフォーマンスを確認することを推奨します。
リージョン間のアップロード (たとえば、米国からシンガポールへのアップロード) は、ネットワークレイテンシーの影響を大きく受けます。 このようなシナリオでは、固定の推定時間を提供することはできません。
動画が長時間「アップロード中」のステータスのままで、トランスコードが開始されない場合、通常はファイルのアップロードが完了していないことが原因です。 システムは、ファイルのアップロードが完了した後にのみ、自動的にトランスコードをトリガーします。 [コンソール] またはアップロードツールで具体的なアップロードの進捗状況を確認し、アップロードが完了するまでアップロードページをアクティブに保つことを推奨します。
[コンソール] でスピナーが回り続ける、またはアップロードが停止した場合は、次のいずれかの方法で問題を診断してください。
F12 キーを押してブラウザー開発者ツールを開き、[ネットワーク] タブで失敗したリクエストやエラーレスポンスを確認してください。
Wireshark などのパケットキャプチャツールを使用して、クライアントのネットワークリクエストを分析し、接続の問題を特定してください。
VOD SDKがonUploadSucceedコールバックをトリガーした後も、コンソールに「アップロード中」と表示され続けるのはなぜですか。
この問題は通常、ファイルが 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の場合: 複数のアップローダーインスタンスを同時に作成しないでください。 次のアップロードタスクを開始する前に、前のタスクが完了していることを確認してください。
Android SDKのヌルポインター例外: Android SDK は、単一のインスタンスで複数回呼び出したり、複数の画像で同時アップロードを実行したりすると、ヌルポインター例外をスローしてクラッシュすることがあります。 これは、内部の解放プロセスとキャンセルプロセスの競合によって引き起こされる既知の問題です。 このリスクを回避するために、シーケンシャルアップロードを使用することを推奨します。
動画以外のファイルをアップロードすると成功と表示されたり、コールバックで500エラーが返されたりするのはなぜですか。
動画以外のファイルのアップロードが成功する場合: 画像や音声ファイルは対応しているメディアタイプであり、正常にアップロードできます。 全く関係のないファイルタイプでアップロードが成功したと表示される場合、拡張子が誤認されている、カスタムのアップロードロジックが検証をバイパスしている、または API アップロードで厳密なフォーマット検証が有効になっていない可能性があります。 対応している拡張子リストを確認することを推奨します。
コールバックが500エラーを返す場合: ApsaraVideo VOD は、.docx ファイルなどのテキストドキュメントのアップロードに対応していません。 このようなメディア以外のファイルをアップロードしてコールバックをトリガーしようとすると、500 エラーが発生します。 音声や動画など、対応しているメディアタイプのみをアップロードするか、[コンソール] で不要なコールバック設定を無効にすることを推奨します。
多数の進行中のアップロードタスクは、他のユーザーのアップロードに影響しますか。 無効なタスクをクリーンアップするにはどうすればよいですか。
タスクの独立性: アップロードタスクは独立しています。 バックグラウンドで多数のタスクが進行中であっても、通常は他のユーザーの正常なアップロードに影響しません。
無効なタスクのクリーンアップ:
認証情報作成 API を呼び出しただけで実際のファイルをアップロードしなかった場合、タスクは「アップロード中」のステータスのまま無期限に維持され、自動的に終了されません。
アップロードの中断により失敗したタスクは、自動的に削除されません。
どちらの場合も、[コンソール] でタスクを手動でキャンセルまたは削除する必要があります。
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 ベースの一括アップロードは、現在、中国 (上海) および シンガポール リージョンでのみ利用可能です。
別のリージョンにいる場合は、音声または動画ファイルをローカルコンピューターにダウンロードし、アップロード SDK を使用してアップロードできます。 詳細については、「SDKの概要」をご参照ください。
アップロードした画像がコンソールで表示できないのはなぜですか。
画像タイプのメディアアセットをアップロードする際に、そのタイプを cover (動画のサムネイル) に設定すると、ファイルはコンソールに表示されません。 API を呼び出すことによってのみ、画像をクエリできます。 詳細については、「CreateUploadImage - 画像アップロードURLと認証情報の取得」をご参照ください。
MOV 形式でアップロードした動画が再生できず、VideoIdでURLを取得できない場合はどうすればよいですか。
この問題は通常、MOV 形式への対応が限定的であることが原因です。 アップロードする前に、MOV 動画を MP4 などの一般的な形式にトランスコードすることを推奨します。 ソースファイルの再生 URL を取得する必要がある場合は、GetMezzanineInfo API を呼び出して FileURL を取得してください。 また、最新バージョンの SDK (例: vod20170321 バージョン 3.6.4) を使用しているかどうかを確認し、必要に応じてアップグレードし、テストと検証のために公式デモを参照してください。
WeChat での JS SDK アップロードの互換性の問題
この問題は、WeChat ブラウザーでの HTML5 との互換性の問題が原因で発生します。 この問題を解決するには、<input type="file" name="file" id="files" multiple=""> から multiple="" パラメーターを削除してください。
Web SDK を使用してアップロードする際に、onUploadProgressがトリガーされず、エラーも報告されない場合はどうすればよいですか。
次の順序で問題をトラブルシューティングしてください。
ブラウザー環境を確認してください: 広告ブロック拡張機能 (AdBlock や uBlock Origin など) を無効にするか、Alibaba Cloud ドメインをこれらの拡張機能の許可リストに追加してください。 Microsoft Edge を使用している場合は、[追跡防止] または [強化されたセキュリティ モード] を一時的に無効にして、問題が解決するかどうかをテストしてください。
SDK のコードロジックを確認してください:
onUploadStartedコールバック内でuploader.setUploadAuthAndAddress(uploadInfo, uploadAuth, uploadAddress, videoId)が同期的に呼び出されているか確認してください。パラメーターの形式と有効性を検証してください:
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 = (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 ファイルで、ルートタグの下にローカルリポジトリパスを追加し、
dependenciesブロックにコンパイル依存関係を追加してください。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 (ライブラリのルート) │ │ └── com │ │ ├── alivc.player │ │ └── aliyun.aliyunplayer │ └── res (ライブラリのルート) │ ├── 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 を初期化する際に、cn-beijing などの正しい regionId を明示的に設定し、そのリージョンのパブリックエンドポイントを使用してください。 これにより、ドメイン名が誤って解決されるのを防ぎます。
コンソールまたは 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 を使用したファイルのアップロード方法の詳細については、「開発者ベースのアップロード」をご参照ください。