DUICUO

えっ?! YouTube を無料のファイル ホスティング サービスとして実際に使用できるんです!

YouBit を使用すると、あらゆる種類のファイルを YouTube でホストできます。

これは、各ピクセルが元のファイルの1つ以上のビットを表す動画を作成することで実現されます。YouTubeから動画をダウンロードした後、元のファイルにデコードすることができます。さらに、YouTubeはアップロードできる動画の数に制限を設けていません。

これは実際には目新しいアイデアではありません。YouTubeDriveやfvidといった他のプロジェクトでも既に検討されています。YouBitはこれらのプロジェクトを基に、いくつかの新しい機能とアイデアを追加し、パフォーマンスも向上させました。

注意:当然ながら、Google は YouBit の使用を好ましく思わず、アカウントにペナルティを課す可能性がありますので、自己責任で使用してください。

インストール

インストールは非常に簡単で、pip を使用して 1 回のクリックでインストールできます。

 pip インストールyoubit

注意: プラットフォームにホイールがない場合、インストール前に C 言語コンパイラをインストールする必要があります。

使用方法: コマンドライン

ファイルをエンコードしてアップロードします。

 python -m youbit アップロードC : /myfile.txt firefox  

もちろん、まずYouBitをインストールする必要があります。上記のコマンドの「firefox」パラメータは、YouBitがYouTubeの認証にどのブラウザからCookie情報を取得するかを示しています。ここではFirefoxでログインしているアカウントを使用しています。このパラメータに指定できる値は、「firefox」、「chrome」、「edge」、「brave」、「opera」、「chromium」です。使用する前に、YouTubeにログインしていることを確認してください。

YouBit ビデオをダウンロードしてデコードします。

 python - m youbit ダウンロードhttps://youtu.be/dQw4w9WgXcQ

特に指定がない限り、出力は常に現在の作業ディレクトリに保存されます。

ローカルビデオのデコード:

 python -m youbit デコードC : /myvideo.mp4

このビデオは YouTube からダウンロードされている必要があることに注意してください。ファイルをエンコードした後、すぐにデコードしてテストすることはできません。

アップロードせずにファイルをエンコードする:

 python -m youbit エンコードC : /myfile.txt

使用方法: Python API

上記のコマンドラインを使用するだけでなく、Python API を直接使用して YouBit を操作することもできます。

 youbit からエンコーダをインポートする
エンコーダーとしてEncoder ( 'C:/myfile.txt' ) を使用:
エンコーダ.エンコード( )
url = encoder . upload ( browser = 'opera' ) # Opera ブラウザからCookie を抽出
印刷( URL )
 youbit からデコーダーをインポートする
デコーダーとしてデコーダー( 'https://youtu.be/dQw4w9WgXcQ' ) を使用:
デコーダー.ダウンロード( )
path = decoder . decode ( 'C:/mydirectory/' ) # 出力を'C:/mydirectory' 保存しますデフォルトは現在の作業ディレクトリです
print ( パス)

エンコーディングがアップロードされていません:

 youbit からエンコーダをインポートする
エンコーダーとしてEncoder ( 'C:/myfile.txt' ) を使用:
path = encoder.encode ( 'C:/mydirectory/' ) # 出力を'C:/mydirectory' 保存します デフォルトは現在の作業ディレクトリです
print ( パス)

異なる設定を使用します:

 youbit からエンコーダをインポートする
エンコーダーとしてEncoder ( 'C:/myfile.txt' ) を使用:
エンコーダ. エンコード( ecc = 32bpp = 2zero_frame = Trueres = 'hd''crf' = 18 )
url = エンコーダ. アップロード( ブラウザ= 'chrome' )
印刷( URL )

ローカルファイルのデコード:

 youbit からデコーダーをインポートする
デコーダーとしてデコーダー( 'C:/myvideo.mp4' ) を使用:
パス= デコーダー.デコード(
'C:/mydirectory/' , # 出力を'C:/mydirectory' 保存しますデフォルトは現在の作業ディレクトリです
ecc = 32# エンコード中に使用され ecc
bpp = 1# エンコード中に使用された bpp
zero_frame = False # エンコード中に「ゼロフレーム」使用されかどう

print ( パス)

ecc、bpp、zero_frameは、YouBitが動画をデコードするために必要な3つのメタデータです。YouBitはダウンロード処理時に、動画のコメントからこれらのメタデータを自動的に抽出します。

よくある質問

これは無制限の無料クラウドストレージを意味しますか?

いいえ。

  • 非常に遅いです。エンコードとデコードに時間がかかります。YouTubeにアップロードされたファイルは元のファイルよりもはるかに大きいため、YouTubeで動画を処理する必要があります。
  • 信頼できません。YouTube が明日アルゴリズムを変更した場合、動画をデコードできなくなる可能性があります。

これは、探求するのに非常に興味深い概念です :)

なぜ色がないのでしょうか?

クロマサブサンプリングは色情報を極限まで圧縮するため、すべての情報を輝度チャンネルにのみ保存します。これにより、より高品質なグレースケール動画が生成されます。また、エンコードとデコードのプロセスも簡素化されます。

「bpp」とは何ですか?

これは「ビット/ピクセル」の略で、ご想像のとおり、1つのビデオピクセルに何ビットの情報が格納されるかを表します。bppが高いほど情報密度が高くなり、出力ビデオは元のファイルに比べてサイズが小さくなります。ただし、破損したピクセルも増えます。

bpp値が1の場合、各ピクセルは1と0、オンとオフ、白と黒の2つの状態しか持たないことを意味します。つまり、グレースケールのピクセルの値は255(白)または0(黒)のいずれかになります。YouBitはデコード時に、128以上の値を1、128未満の値を0として扱います。つまり、YouTubeの圧縮では、ピクセル値を少なくとも127変更しないと破損しません。

ここで、2bppを考えてみましょう。2ビットには4つの状態(00、01、10、11)があります。したがって、2ビットを表現するには、ピクセルにも4つの状態(0、85、170、255)が必要です。これらの間の距離は縮まり、ピクセルを破損させるには43だけ変更する必要があります。動画は半分に圧縮されますが、YouTubeがアップロード時に再エンコードする際に破損しやすくなります。

なぜフレームレートが1なのでしょうか?

YouTubeがストリームに割り当てるビットレートをどのように決定しているのかは完全には分かりませんが、おおよそYouTubeの推奨動画ビットレートに従っているようです。他の条件が同じであれば、フレームレートが1の動画とフレームレートが30の動画のビットレートは同じになります。私の目標は何でしょうか?フレームあたりの帯域幅をより効率的に使用し、圧縮率を下げることです。

次に、エンコード時にフレームレートを1にすることで、デコード時にキーフレームのみを読み取れるようになります。これは非常に重要です。テストでは、キーフレームとBフレームまたはPフレームの破損率に大きな違いが見られました。多くのキーフレームは完全にエラーフリーですが、GOP末尾のBフレームはほぼ完全に使用できなくなります。

フレームレートを1にすると、YouTubeはそれを6フレームレートの動画として再エンコードします。これはYouTubeの最小値のようです。これらの6fps動画のGOP構造を分析したところ、デコード時にキーフレーム以外のフレームをスキップするだけでは不十分であることが明らかになりました。繰り返しのキーフレームが散在しているのが分かります。幸いなことに、これらの繰り返しのキーフレームは予測可能です。YouBitはデコード時に認識した繰り返しのキーフレームを破棄します。

これは確かに、YouTube で再生されない YouBit ビデオはデコードできないことを意味します。

アップロードに YouTube API を使用しないのはなぜですか?

理由は2つあります。まず、未検証のAPIプロジェクトは非公開動画しかアップロードできません。これらの動画は非公開ステータスにロックされており、変更できません。つまり、YouBitリンクをユーザー間で共有することはできません。

第二に、YouTube Data API v3はクォータシステムを採用しており、APIとのやり取りごとにコストが発生します。毎日補充される10,000ポイントのうち、動画のアップロードにはなんと1,600ポイントもかかり、ユーザーは1日に6回しかアップロードできません。

代わりに、YouBitは選択されたブラウザからCookieを抽出し、アップロードプロセスを自動化するSeleniumヘッドレスブラウザインスタンスを検証します。これはハック的な手法で、オーバーヘッドが大きく、YouTube DOMの変更に非常に敏感ですが、現状ではこれが最善の策です。

YouBit ビデオをアップロードした後、どれくらい待つ必要がありますか?

YouTubeは動画の処理に時間がかかることがあるため、これは難しい問題です。動画が処理中のため利用できない場合、YouBitは例外をスローします。また、動画は技術的には利用可能であるものの、エンコード時に指定された解像度がまだ利用できない場合にも、YouBitは例外をスローします。

そのため、十分な時間待つことをお勧めします。アップロードされたYouBit動画の利用可能な最高ビデオビ​​ットレート(VBR)を確認する最も簡単な方法は、CLIを使用することです。

 py - あなたのビットテストvbr https://www.youtube.com/watch?v=SLP9mbCuhJc

デコード処理は、設定次第ではVBRが低い場合でも機能する可能性があります。デフォルトの1080pより高い解像度を使用することによる実質的なメリットはありません。

解像度 x を使用できないのはなぜですか?

技術的には、YouBitはあらゆる解像度の動画を処理できますが、YouTubeが1920x1080未満の解像度に割り当てるビットレートが必ずしも私たちのユースケースに適していないため、サポートしていません。また、YouTubeは解像度に応じて異なる、効率の低いコーデックを使用する可能性があるため、一貫性に欠けるという問題もあります。1080pを超える解像度もサポートされていますが、通常は使用しないでください。

ファイルの最大サイズはどのくらいですか?

YouBitはファイルをブロック単位でエンコードするため、メモリ制限はありませんが、YouTubeの動画の最大再生時間制限が適用されます。YouTube動画は最大12時間または128GBまでしか保存できません。どちらかの制限を超えた場合、YouBitはエンコード中に例外を発生させます。未認証のYouTubeアカウントをご利用の場合、制限時間は15分です。アカウントの認証を必ず行ってください。

ロスレスビデオをアップロードしてみませんか?

データをそのまま保存したいのであれば、YouTubeが再度圧縮する前に動画をローカルで圧縮するのは非常に悪い考えに思えます。しかし、ファイルサイズの違いは顕著です。エンコード処理がかなり効率的になると、YouTubeへの動画アップロードにかかる時間が圧倒的に最大のボトルネックになります。ローカルで行う圧縮量を慎重に制御すれば、データの整合性を損なうことなく動画のサイズを小さくし、アップロード速度を向上できます。

Git リポジトリ: https://github.com/MeViMo/youbit。