このソフトウェアは私の個人的な使用のためのものであり、私はあなたがそれをどのように使用するかについて責任を負いません。だから、トラブルに巻き込まれないようにし、戦争ではなく瓶を作りましょう!
私の仕事の 1 つは Redis についての情報を広めることであり、これはビデオやライブ ウェビナーにも当てはまります。最近、LinkedIn ライブを行ったり、Zoom からライブをブロードキャストしたりしているのですが、[録画] ボタンを押すことを覚えていないことがあります。
しかし、幸いなことに、LinkedIn は私のライブの録画を「以前に録画したライブ」として保存し、後で視聴できるようにしています。 LinkedIn がこれらのビデオに対して提供している保持期間についてはわかりませんが、そのようなビデオをダウンロードする方法が提供されていないことは確かです。
それで、グーグルで調べてみましたが、深刻なものは見つかりませんでした。 YouTube ダウンロード、Pinterest ダウンローダー、Facebook ダウンローダー、ただし LinkedIn に関連するダウンローダーはすべて偽物でした。
したがって、独自の LinkedIn Video Downloader を構築する必要があります。 ?
さて、アイデアは...ある種の形式(mp4、webm、vid mkv、avi、movなど)のソース1にビデオへのリンク(srcまたはhref)が見つからないと思います。 、しかし、ビデオストリーミングに関連するものは見つかると思います...しかし、ソース1にはなく、確かにネットワークレベルです。
そこで、Chrome とその DevTools バーを開き、[ネットワーク] パネルを選択して、アドレス バーに LinkedIn ビデオ イベントの URL を入力 (貼り付け) して Enter キーを押しました。
そしてそれが私が得たものです。
次に、ビデオ/ストリーム/チャンク/バイナリなどに関して、ベルを鳴らしてくれる何かを見つける必要があります...そこで、[ネットワーク]パネルをスクロールし始め、数回スクロールした後、最初のベルが聞こえました。 ?
同じ巻物をよく見てみると、他の情報も見つかりました。 ?
はい、メタデータですが、そこに到達していることはわかっています。しかし、これまでに得られたものを見てみましょう:
今、それらの断片が必要です。
もう少し下にスクロールすると、これが最初のフラグメントです。 ?
ついにバイナリ形式に!きっと映画の断片だろう。
カールで簡単にチェックしてみると・・・
ターミナルを開いてコピー&ペーストします...
foogaro@MBP-di-Luigi tmp % curl ' https://streamweu-livectorprodmedia17-euwe.licdn.com/44eefc72-771d-4bfd-8985-aede1310be0f/L4E609f69d951866001-livemanifest.ism/QualityLevels(3200000)/Fragments(video=65886000,format=m3u8-aapl-v3,audiotrack=audio_und) ' --compressed
Warning: Binary output can mess up your terminal. Use " --output - " to tell
Warning: curl to output it to your terminal anyway, or consider " --output
Warning: <FILE> " to save to a file.
foogaro@MBP-di-Luigi tmp % curl ' https://streamweu-livectorprodmedia17-euwe.licdn.com/44eefc72-771d-4bfd-8985-aede1310be0f/L4E609f69d951866001-livemanifest.ism/QualityLevels(3200000)/Fragments(video=65886000,format=m3u8-aapl-v3,audiotrack=audio_und) ' --compressed -O
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 158k 100 158k 0 0 868k 0 --:--:-- --:--:-- --:--:-- 924k
foogaro@MBP-di-Luigi tmp % ll
total 320
drwxr-xr-x 3 foogaro staff 96 24 Ago 22:37 .
drwxr-xr-x 6 foogaro staff 192 24 Ago 22:37 ..
-rw-r--r-- 1 foogaro staff 162808 24 Ago 22:37 Fragments(video=65886000,format=m3u8-aapl-v3,audiotrack=audio_und)
foogaro@MBP-di-Luigi tmp % file Fragments ( video=65886000,format=m3u8-aapl-v3,audiotrack=audio_und )
Fragments(video=65886000,format=m3u8-aapl-v3,audiotrack=audio_und): MPEG transport stream data
foogaro@MBP-di-Luigi tmp % curl ' https://streamweu-livectorprodmedia17-euwe.licdn.com/44eefc72-771d-4bfd-8985-aede1310be0f/L4E609f69d951866001-livemanifest.ism/QualityLevels(3200000)/Fragments(video=65886000,format=m3u8-aapl-v3,audiotrack=audio_und) ' --compressed -o video.mpeg
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 158k 100 158k 0 0 926k 0 --:--:-- --:--:-- --:--:-- 981k
foogaro@MBP-di-Luigi tmp % ll
total 640
drwxr-xr-x 4 foogaro staff 128 24 Ago 22:39 .
drwxr-xr-x 6 foogaro staff 192 24 Ago 22:37 ..
-rw-r--r-- 1 foogaro staff 162808 24 Ago 22:37 Fragments(video=65886000,format=m3u8-aapl-v3,audiotrack=audio_und)
-rw-r--r-- 1 foogaro staff 162808 24 Ago 22:39 video.mpeg
foogaro@MBP-di-Luigi tmp %
本物の動画かどうか見てみましょう...
これは実際のビデオで、長さは約 2 秒で、完全なフラグメント リストで見つかった TARGETDURATION と一致します。 ?
スクロールを続けるとここにあります。
断片、どこにでも断片が見えます。
コードについては説明しません。ご自身で確認してください。しかし、何が必要だったかは説明できます。
この実装はベスト エフォートで行われると考えられます。つまり、私のコンピュータ上で動作します。
実装の最後の部分であるファイルのダウンロード/ストリーミングバックは、@swathisprasad (Swathi Prasad) と彼女のリポジトリ https://github.com/swathisprasad/download-using-streaming-response-body のおかげで可能になりました。
もちろん残りは StackOverflow のおかげです。
必要に応じて docker で試してみてください。
foogaro@MBP-di-Luigi linkedin-video-downloader % docker run -it --rm=true -p 8080:8080 foogaro/linkedin-video-downloader
. ____ _ __ _ _
/ \ / ___ ' _ __ _ _(_)_ __ __ _
( ( )___ | ' _ | ' _| | ' _ / _ ` |
\ / ___) | | _) | | | | | || (_ | | ) ) ) )
' |____| .__|_| |_|_| |___, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v2.7.0)
2022-08-24 22:57:01.107 INFO 1 --- [ main] c.foogaro.data.LinkedInVideoApplication : Starting LinkedInVideoApplication v1.0.0 using Java 11.0.16.1 on c543811fe9f3 with PID 1 (/app/app.jar started by root in /app)
2022-08-24 22:57:01.121 INFO 1 --- [ main] c.foogaro.data.LinkedInVideoApplication : No active profile set, falling back to 1 default profile: "default"
2022-08-24 22:57:03.037 INFO 1 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8080 (http)
2022-08-24 22:57:03.060 INFO 1 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
2022-08-24 22:57:03.060 INFO 1 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.63]
2022-08-24 22:57:03.171 INFO 1 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
2022-08-24 22:57:03.171 INFO 1 --- [ main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 1969 ms
2022-08-24 22:57:03.900 INFO 1 --- [ main] o.s.b.a.w.s.WelcomePageHandlerMapping : Adding welcome page template: index
2022-08-24 22:57:04.286 INFO 1 --- [ main] o.s.b.a.e.web.EndpointLinksResolver : Exposing 1 endpoint(s) beneath base path ' /actuator '
2022-08-24 22:57:04.363 INFO 1 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path ' '
2022-08-24 22:57:04.391 INFO 1 --- [ main] c.foogaro.data.LinkedInVideoApplication : Started LinkedInVideoApplication in 3.931 seconds (JVM running for 4.532)
2022-08-24 22:57:05.282 INFO 1 --- [nio-8080-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring DispatcherServlet ' dispatcherServlet '
2022-08-24 22:57:05.283 INFO 1 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Initializing Servlet ' dispatcherServlet '
2022-08-24 22:57:05.289 INFO 1 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Completed initialization in 4 ms
2022-08-24 22:57:21.779 INFO 1 --- [nio-8080-exec-7] c.f.d.c.LinkedInVideoController : Steaming video download as: linkedin-video-1661421441774.zip
2022-08-24 22:57:21.800 INFO 1 --- [ taskExecutor-1] c.f.d.c.LinkedInVideoController : Video ID: c50f2327-7fa7-4cc8-8a2c-35711eb5296d/L4E60a4445e9d065000
2022-08-24 22:57:21.800 INFO 1 --- [ taskExecutor-1] c.f.d.c.LinkedInVideoController : Quality Level: 3200000
2022-08-24 22:57:21.991 INFO 1 --- [ taskExecutor-1] c.f.d.c.LinkedInVideoController : Number of video fragments: 2154
ここまで読んでいただきありがとうございます!
気に入った場合、または役に立ったと思われた場合は、スターを付けてください。
フロントエンドでもバックエンドでも PR は大歓迎です。 ?
嘘です、ページのソースでビデオのリンクを探しました。 ? ↩ ↩ 2