Web サーバーに保存されているビデオ ファイルを、自動化された方法で YouTube にアップロードできるようにしたいと考えています。これらのビデオは私のウェブサイトで作成され、ユーザーはそれを自分の YouTube チャンネルにアップロードするだけです。
ここの再開可能なビデオ アップロード プロセスに従って、このビデオ アップロード プロセスを自動化するために HTTP 要求呼び出しを実行しようとしています: https://developers.google.com/youtube/2.0/developers_guide_protocol_resumable_uploads
ビデオ自体のアップロードである最終ステップまで、すべてが正常に機能します (ユーザーのアクセス許可の取得、ビデオのメタデータの送信)。PUT リクエストを行うと、レスポンス コード 417 が返され、Invalid Request と表示されます。このような:
次のエラーが発生しました:
Invalid Request
HTTP リクエストの一部が無効です。考えられる問題:
Missing or unknown request method
Missing URL
Missing HTTP Identifier (HTTP/1.0)
Request is too large
Content-Length missing for POST or PUT requests
Illegal character in hostname; underscores are not allowed
提案された考えられる問題をすべて調べましたが、コードのどこにも欠陥が見つかりません。
また、エラー メッセージは漠然としていて、問題の場所を特定できるほど具体的ではありません。
PHP の標準の Http Request クラスを使用して、ビデオ アップロード プロセスのすべてのステップを実行しています。( http://www.php.net/manual/en/class.httprequest.php )
これが私のコードです:
$videoFile = *Some Video File*;
$httpRequest = new httpRequest($_SESSION['youtube_data_api']['upload_url'], HttpRequest::METH_PUT);
$httpRequest->setContentType('video/mp4');
$httpRequest->setPutFile($videoFile);
$headersArr = array('Content-Length' => strlen($httpRequest->getRawRequestMessage()));
$httpRequest->setHeaders($headersArr);
$httpMessage = $httpRequest->send();
私はこの質問に関してインターネットで多くのことを調べましたが、多くの場合、代わりに Zend フレームワークの YouTube ライブラリを使用してこれを達成している人を見つけました。これははるかに簡単です。残念ながら、現在の私の Web サイトのサイズでは、フレームワークを Web サイトに統合するために多くの時間を費やすことは現実的ではありません。
この問題への洞察は非常に役立ちます! ありがとう!