2

YouTube は、 ebu-stl などの一部のバイナリ キャプション ファイル形式をサポートしています。

Web インターフェイス経由でアップロードすると、正常にアップロードおよび処理される *.stl ファイルがあります。しかし、API v2 経由で POST リクエストでアップロードしようとすると、ファイル形式が正しく認識されないようです。POST リクエストは次のようになります

POST /feeds/api/videos/VIDEO_ID/captions HTTP/1.1
Host: gdata.youtube.com
Content-Type: application/vnd.youtube.timedtext; charset=UTF-8
Content-Language: en
Slug: Title of caption track
Authorization: Bearer ACCESS_TOKEN
GData-Version: 2
X-GData-Key: key=DEVELOPER_KEY

<Caption File Data>

これは、API 経由でアップロードされた *.stl ファイルが Web サイトでどのように見えるかです。読み取り可能なテキストを含む行がいくつかあるはずです。 Api経由でアップロードされたEbu-Stl

同じコードで utf8 プレーン テキストの字幕ファイル (*.vtt など) をアップロードすると、すべて正常に動作します。さらに、stl ファイルを Web インターフェイス経由で 1 回、API 経由で 1 回アップロードし、後で API 経由で両方のファイルを取得すると、それらはバイト単位で一致します。

私にはエンコーディングの問題のように見えます.youtubeはファイルを正しく受け取りますが、おそらくバイナリファイル全体をUTF-8として解析します. ただし、 charset=またはContent-Language のいずれかを省略すると、YouTube は 4xx エラーで応答します。

バイナリ キャプション ファイルをアップロードすることはできますか? 無理な場合もご確認いただけますと幸いです。

自分で試してみたい場合は最小限の stl ファイル (16 進ダンプ)。(ルビー)としてそれを読んでください:

stl = hex.chars.each_slice(2).map{|x|x.join.to_i(16)}.pack('C*')
4

1 に答える 1

2

API v2 は正式に廃止されました。4 月 2 日の時点で、API v3 はキャプションを正式にサポートするようになりました。バイナリ キャプション ファイルもサポートされています。

ドキュメントには、生の HTTP リクエストに関する詳細が欠けています。それらのライブラリの 1 つを使用してみることができます。

私は彼らの python スクリプトを使用し、それが行ったリクエストを調べました。参考までに、バイナリの字幕/キャプション ファイルをアップロードするための最小限の HTTP リクエストを次に示します。

ドキュメントではこのパラメーターについて言及していませんが、設定uploadType=multipartは重要です。それ以外の場合、API はエラーを返します。

POST /upload/youtube/v3/captions?uploadType=multipart&part=id,snippet&sync=false HTTP/1.1
Host: www.googleapis.com
Accept: */*
Authorization: Bearer {AUTH_TOKEN}
X-GData-Key: key={YOUR_KEY}
Content-Type: multipart/related; boundary================83250640405719953005==
Content-Length: 7147
Expect: 100-continue

--===============83250640405719953005==
Content-Type: application/json
MIME-Version: 1.0

{"snippet":{"videoId":"Agn_uesF248","language":"en","name":"Subtitle Test 2","isDraft":false}}
--===============83250640405719953005==
MIME-Version: 1.0
Content-Type: application/sla
Content-Transfer-Encoding: binary

{BINARY_CAPTION_FILE_DATA}
--===============83250640405719953005==--

application/slaebu-stl キャプション ファイルです。text/plainプレーン テキストの字幕 (.srt、.vtt、.ass、&c.) に使用します。

{AUTH_TOKEN}{YOUR_KEY}をスコープの適切な認証資格情報に置き換えますhttps://www.googleapis.com/auth/youtube.force-ssl{BINARY_CAPTION_FILE_DATA}アップロードしたいファイルと一緒に。

于 2015-04-06T11:50:49.793 に答える