ショートビデオ(Douyin)の透かし除去ツールの実装コード

ショートビデオ(Douyin)の透かし除去ツールの実装コード

動画アカウントは現在非常に人気があり、Douyin や Kuaishou で活動していた人たちは、以前の動画を移行したばかりです。しかし、Tik Tok アプリからダウンロードした動画にはすべて公式の透かしが入っているのですか?これをどうやって削除しましたか?ああ、いや、オリジナルのビデオを保存しておけばよかった。しかし、他人の動画をそのままコピーする人はまだまだ多いので、どうやって透かしを削除するのでしょうか?

実際、透かしを直接削除できるミニプログラムや透かし削除アプリなど、既製のツールはすでにたくさんあり、中には有料のものもあります。

すぐに勉強しましょう。もしかしたら、彼らのものよりも良いツールが見つかるかもしれません。

パケットのキャプチャやデータの確認など、一連の厳しい操作を行った後、非常に簡単になり、数分でビデオから透かしを削除できるようになりました。

実際、これらの透かし除去ツールは誇張されすぎていて(誤解を招きやすく)、実際には透かし除去ツールではありません。初心者は、透かしを除去するためにビデオに素晴らしい後処理を施したとさえ思っています。

実際には、透かしなしで直接ダウンロードされたビデオです。 Tik TokやKuaishouなどのアプリで見る動画には公式の透かしがないので、この透かしのない動画が存在するはずです。

以下、私がクラックしたプロセスを一つずつ説明します(Douyinを例に挙げます)。

1. まず最初のリンクを取得する

2. ブラウザでこのリンクを開いてください

次に、コピーしたアドレス https://v.douyin.com/e1MMESR/ を開きます。

3. アドレスを開くと302ジャンプがあることがわかります

4. その後、左側のビデオを再生すると、透かしの入ったビデオであることがわかりました。

アプリで再生すると透かしは表示されませんが、ブラウザで開くと透かしが表示されます。

5. コンソールに Ajax リクエストが見つかりました。ビデオ アドレスを含むビデオのすべての情報が返されました。

6. ビデオ再生アドレスvideo.play_addr.url_list[0]を見つける

https://aweme.snssdk.com/aweme/v1/playwm/?video_id=v0300f760000c0fq7t5t1gvidv0rdtag&ratio=720p&line=0

上記のアドレスは、コンソール検査要素で確認したビデオ プレーヤーのアドレスと同じですが、どちらも透かし入りのアドレスです。

少なくとも情報なので、まずはこのアドレスを記録してください。

https://aweme.snssdk.com/aweme/v1/playwm/?video_id=v0300f760000c0fq7t5t1gvidv0rdtag&ratio=720p&line=0

7. 別の方法を見つけるには、個人センターのビデオリストから開始します

個人ビデオリストのアドレスを取得します(個人センターに移動して共有をクリックすると、コピーリンクが表示されます)https://v.douyin.com/e1MCMaT/。

8.ブラウザを開き、コンソールからインターフェースデータを分析します。

これはインターフェースによって返されるビデオ リスト データですが、これは最初の数個だけであり、すべてを取得する方法はまだわかりません。

9. リストデータ分析、新しい世界を発見

上記のインターフェースはビデオ リスト データを返します。各データには豊富な情報が含まれ、透かしのないアドレスが見つかります。

各ビデオには 4 つの再生アドレスがあり、これはストリーミングに使用される CDN であると考えられます。実際、これらは透かしのない再生アドレスです。

10. 探すのをやめてください。終わりが来ました

上記のアドレスの内容はかなり異なっているようです。 1つずつ開いてみると、最初の2つは直接再生されましたが、最後の2つは302ジャンプ後に再生されました。

3番目のアドレスをもう一度見てください。少し見覚えがあるようです

//3 番目のアドレスは https://aweme.snssdk.com/aweme/v1/play/?video_id=v0300f760000c0fq7t5t1gvidv0rdtag&line=0&ratio=720p&media_type=4&vr_type=0&improve_bitrate=0&is_play_url=1&source=PackSourceEnum_DOUYIN_REFLOW です
 
//上記に保存 https://aweme.snssdk.com/aweme/v1/playwm/?video_id=v0300f760000c0fq7t5t1gvidv0rdtag&ratio=720p&line=0

明らかに、アドレスはほぼ同じで、パラメータのみが異なります。

パラメータは無視できます。唯一の違いは、アドレス/playwm//play/で、 wmがないことです。

この時点で、私たちの使命は達成されました。透かしのないアドレスは、 wmのないアドレスです。 wmとは何ですか? watermarkの英語の略語です。

11. ダウンロードが完了しました

再生を開き、再生中のビデオを右クリックして保存するだけで完了です。

私も後で多くのテストを行いましたが、上記のアプローチは問題ありませんでした。

12. Kuaishou の使い方は?

Kuaishou はさらにシンプルで、何も隠されておらず、ブラウザでビデオを直接開いて透かしのないビデオを見ることができます。明らかに、Douyin はさらに多くのことを行っています。

ダウンロードツールを作りますか?

今では、透かしのないビデオを 2 つの手順でダウンロードできますが、すべて手動でダウンロードする必要があります。そのため、ビデオのアドレスを入力するだけでワンクリックでビデオをダウンロードできるツールを作成する必要があります。

どうやってそれを達成するのでしょうか?手動でのダウンロードは簡単ですが、自動的に行われる場合は、プラットフォーム側が以前からこの問題を認識しており、予防措置を講じているため、それほどスムーズではありません。

以下に 2 つの解決策があります。最終的な目標は、ビデオの再生アドレスを取得して、ビデオをダウンロードすることです。

実施計画A

再生アドレスを取得するには、プラットフォームの API インターフェースを使用します。ただし、落とし穴に遭遇する可能性があります。プラットフォームにはこの種の操作に対する計画があるはずであり、拒否されます。

プランB

これはよりシンプルで効率的です。ヘッドレス ブラウザを使用してビデオ アドレスを取得し、インターフェイス要求を保存します。

コードの一部

コードはまだ完成していません。ビデオのダウンロードを記述し、API リクエスト アドレスを取得しただけです。

//ビデオをダウンロード const path = require('path')
定数 fs = require('fs')
const リクエスト = require('リクエスト')
/**
 * ビデオをダウンロード */
関数downVideo(url) {
 var ファイル名 = `${+new Date()}.mp4`
 var fullPath = path.resolve('./videos/' + ファイル名);
 console.log('ビデオのダウンロードを開始します:', fileName);
 リクエスト(encodeURI(url)).on('error', 関数(err) {
 コンソール.log(エラー)
 }).pipe(fs.createWriteStream(fullPath)).on('finish', () => {
 console.log('ビデオが正常にダウンロードされました');
 })
 
}
 
const url = 'http://v6-z.douyinvod.com/719423c89357069fffd503a6698436f9/60342b2c/video/tos/cn/tos-cn-ve-15/56505c3774bd46d46d46decn-ve-15/5e2315ep23 8&BR = 4996&BT = 1249&CD = 0%7C0%7C0&CH = 0&CR = 0&CS = 0&CV = 1&DR = 0&ds = 3&l =&l = 202102230007400102020410813542130635&lr =&mime_tepe = c&cdew_mp4 D0MZMZOWKZM0APZTW2NWHOZGRPNZS7ZTC4OWCPAGRQBROGRMTMETYXMUMJRJYC0TNC0WC3MZLJY1XZMXNJE2LY2LY4XMDFHOMNWB2WRBSTQDO%3D&VL =&VR =&VR =&VR =&VR =&VR =&VR =&VR =&VR =&VR =&VR =&VR =&VR =&VR =&VR =&VR =&VR =&VR =&VR =
ダウンビデオ(url)
//APIアドレスを取得する function getApiUrl(url){
 //フロントエンドから渡されたアドレスをリダイレクトしてitem_idsを取得し、戻ります return new Promise(resolve => {
 リクエスト(url, (エラー, レスポンス) => {
  if (!エラー && response.statusCode == 200) {
  href = response.request.href とします。
  id = '' とします。
  id = href.match(/video\/(\S*)\/\?region/)[1];
  解決(`https://www.iesdouyin.com/web/api/v2/aweme/iteminfo/?item_ids=${id}`);
  } それ以外 {
  解決(偽)
  }
 })
 });
}
 
getApiUrl('xxx').then(api=>{
//xxx
})

後でコードを完成させ、完全な「透かし除去」ツールを作成し、自分の Web サイトに投稿する予定です。

やっと

全体のプロセスは難しくありませんが、とても楽しいです。そして、興味深いものをたくさん見つけました。上のビデオリストにはたくさんの情報があり、まだ探索することができます。

これで、市販のショートビデオ(douyin)の「ウォーターマーク除去」ツールの実装方法についての記事は終了です。ショートビデオのウォーターマーク除去ツールに関するその他のコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Python は画像修復を実装します (透かしの削除に使用できます)
  • javacv を使用して画像から透かしを削除する方法 (コード付き)
  • IcePDF 透かし除去方法 (推奨)
  • TikTokのショートビデオ切り替え効果を模倣したWeChatアプレットのサンプルコード
  • Vue ログインホームページ ダイナミック背景 ショートビデオ制作
  • Python は、Scrapy クローラーを使用して、わずか 50 行のコードでサイト全体の短いビデオをダウンロードします。
  • AndroidがWeChatを模倣して短い動画を撮影

<<:  WindowsにMySQL5.7圧縮パッケージを素早くインストールする

>>:  nginx を使用してカナリアリリースをシミュレートする方法

推薦する

Alibaba Cloud Centos7.X で外部にポートを開く方法

一言で言えば、大手メーカーからクラウド サーバーを購入する場合は、セキュリティ グループに移動して、...

divの背景を透明に設定する方法の例

div の背景を透明にする一般的な方法は 2 つあります。 1. 不透明度属性を 0 ~ 1 の値に...

JSに関する7つの面接の質問、あなたはいくつ正しく答えられますか

序文JavaScript では、これは関数呼び出しコンテキストです。この動作が非常に複雑であるからこ...

GobangゲームのWebバージョンを実装するためのJavaScript

この記事では、GobangゲームのWebバージョンを実装するためのJavaScriptの具体的なコー...

VUE 入門 イベント処理の学習

目次1. 関数バインディング2. パラメータと$eventを使用する3. 1つのイベントに複数の関数...

CSS スタイルの導入方法とその長所と短所の紹介

CSSを導入する3つの方法1. インラインスタイル利点: 書きやすく、重みがある 欠点: 構造とスタ...

Navicat for MySQL 11 登録コード\アクティベーションコードの概要

おすすめの読み物: Navicat12.1シリーズのクラッキングとアクティベーションのチュートリアル...

MacにMySQLをインストールするときに忘れたパスワードを変更する方法

1. MacにMySQLデータベースをインストールする1. MySQLデータベースをダウンロードする...

Vueカスタムコンポーネントは双方向バインディングを実装します

シナリオ:一般的に使用される親コンポーネントと子コンポーネント間の相互作用方法は次のとおりです。親コ...

Nginx proxy_pass の / スラッシュによって引き起こされた殺人事件の詳細な説明

背景nginx サーバー モジュールは 2 つのサーバーにプロキシする必要があるため、異なるサーバー...

HTML における li タグの水平配置の例

ほとんどのナビゲーション バーは、下の図に示すように水平に配置されていますが、これはどのように実現さ...

Vueは商品詳細ページの虫眼鏡機能を実装します

この記事では、商品詳細ページの虫眼鏡を実装するためのVueの具体的なコードを参考までに共有します。具...

MySQLの整数データ型tinyintの詳細な説明

目次1.1Tinyint型の説明1.2 練習環境の説明1.3 未署名属性の追加1.3.1 SQLモー...

win10 での mysql 8.0.16 winx64 インストールの最新グラフィック チュートリアル

このデータベースをダウンロードするには、多くの時間とトラフィックがかかります。踏み込んだ落とし穴で時...

MySql8.0以降のバージョンでROOTパスワードを正しく変更する方法

展開環境:インストールバージョン Red Hat Cent 7.0 MYSQL バージョン 8.0....