youtube-dlコマンドを使用してビデオの一部をダウンロードするには?

youtube-dlコマンドを使用してビデオの一部をダウンロードするには?

私はUbuntuを使用しており、このyoutube-dlコマンドは完全に実行されます。

しかし、今はあまりにも長いビデオの一部だけをダウンロードしたいと思います。だから私は13分から17分の数分のビデオだけをダウンロードしたいと思います。

これを行う方法はありますか?

答え1

youtube-dl私は一人があなたが望むことをできると信じていません。ただし、ffmpegなどのコマンドラインユーティリティで使用できます。

まず、youtube-dlを使用して実際のURLを取得します。

youtube-dl -g "https://www.youtube.com/watch?v=V_f2QkBdbRI"

コマンドの出力をコピーして、-i次のコマンドの引数の一部として貼り付けます。

ffmpeg -ss 00:00:15.00 -i "OUTPUT-OF-FIRST URL" -t 00:00:10.00 -c copy out.mp4

この位置のパラメータは、-ssビデオから15秒前のすべての入力を削除します。この-tオプションは、10秒間キャプチャすることを意味します。残りのコマンドはmp4として保存するように指示します。

ffmpegは広く使用されているツールであり、広く使用されているオペレーティングシステムのストレージ/パッケージマネージャに存在する必要があります。

答え2

に追加するジョニーの答え:

youtube-dl --youtube-skip-dash-manifest -g "URL"ビデオとオーディオのストリームを取得するために使用されます。

それでは、次のようにします。

ffmpeg -ss 12:15 -i "1st-URL" -ss 12:15 -i "2nd-URL" -t 5:15 -map 0:v -map 1:a -c:v libx264 -c:a aac output.mkv

-ss各ストリームにこのオプションを使用する必要があります。また-ss 30、キーフレームの損失を防ぐために、約30秒前にこれを実行してから別の操作を使用することをお勧めします。以下は、私のYouTube動画の1つを使用した実際の例です。

動画

youtube-dl --youtube-skip-dash-manifest -g https://www.youtube.com/watch?v=gESHIrvIQQo

出力:

https://r3---sn-mv-cvne.googlevideo.com/videoplayback/id/80448722bbc8410a/itag/298/source/youtube/requiressl/yes/mn/sn-mv-cvne/ei/BgifWfmmL4iE8wSlv47oCA/mm/31/pl/23/mv/m/ms/au/initcwndbps/11447500/ratebypass/yes/mime/video%2Fmp4/otfp/1/gir/yes/clen/5231968228/lmt/1502479662079137/dur/18575.164/key/dg_yt0/signature/4FFB9B0B7E1703B31F5D07DAD579B55F17EF7BAA.0CB63905C89DD4D33F90CF3AAD728F1ECDFCB9B3/mt/1503594423/ip/206.34.122.70/ipbits/0/expire/1503616102/sparams/ip,ipbits,expire,id,itag,source,requiressl,mn,ei,mm,pl,mv,ms,initcwndbps,ratebypass,mime,otfp,gir,clen,lmt,dur/
https://r3---sn-mv-cvne.googlevideo.com/videoplayback/id/80448722bbc8410a/itag/140/source/youtube/requiressl/yes/mn/sn-mv-cvne/ei/BgifWfmmL4iE8wSlv47oCA/mm/31/pl/23/mv/m/ms/au/initcwndbps/11447500/ratebypass/yes/mime/audio%2Fmp4/otfp/1/gir/yes/clen/295235970/lmt/1502480001536214/dur/18575.243/key/dg_yt0/signature/4CD42047D1D5C714377350905C1CC5CBA37C0009.6EED1FC92D17A096235C32E48F4B15DEF7DD99B0/mt/1503594423/ip/206.34.122.70/ipbits/0/expire/1503616102/sparams/ip,ipbits,expire,id,itag,source,requiressl,mn,ei,mm,pl,mv,ms,initcwndbps,ratebypass,mime,otfp,gir,clen,lmt,dur/

43:00から50:10に切り取りたいので、両方の入力-ss 42:30に対して操作を実行し(良いキーフレームをキャプチャするのに数秒の時間を提供します)、43:00に開始するように入力後に-ss 30実行します。

次に、ビデオとオーディオmapへのマッピング(最初の入力であるビデオには0、2番目の入力であるオーディオには1)を使用し、エンコードオプションを選択します。0:v1:a

# The first URL
video_url="https://r3---sn-mv-cvne.googlevideo.com/videoplayback/id/80448722bbc8410a/itag/298/source/youtube/requiressl/yes/pl/23/ei/5wCfWY6dBeOj8gSSxZaACQ/mv/m/initcwndbps/5055000/ms/au/mm/31/mn/sn-mv-cvne/ratebypass/yes/mime/video%2Fmp4/otfp/1/gir/yes/clen/5231968228/lmt/1502479662079137/dur/18575.164/key/dg_yt0/beids/%5B9466591%5D/mt/1503592562/signature/8CCFBF5CAB97341D0CB1F34E85AB6EE20FC7A03E.7679F39A8603CF41A95F10232E2A921EB0774101/ip/206.34.122.70/ipbits/0/expire/1503614279/sparams/ip,ipbits,expire,id,itag,source,requiressl,pl,ei,mv,initcwndbps,ms,mm,mn,ratebypass,mime,otfp,gir,clen,lmt,dur/"
# The second URL
audio_url="https://r3---sn-mv-cvne.googlevideo.com/videoplayback/id/80448722bbc8410a/itag/140/source/youtube/requiressl/yes/pl/23/ei/5wCfWY6dBeOj8gSSxZaACQ/mv/m/initcwndbps/5055000/ms/au/mm/31/mn/sn-mv-cvne/ratebypass/yes/mime/audio%2Fmp4/otfp/1/gir/yes/clen/295235970/lmt/1502480001536214/dur/18575.243/key/dg_yt0/beids/%5B9466591%5D/mt/1503592562/signature/4AACC8E27F9036D36D4D623A771A9F2BAC4674BA.7E4F4FB4DC023E3FE491A991F0F9F2329648DE9D/ip/206.34.122.70/ipbits/0/expire/1503614279/sparams/ip,ipbits,expire,id,itag,source,requiressl,pl,ei,mv,initcwndbps,ms,mm,mn,ratebypass,mime,otfp,gir,clen,lmt,dur/"
ffmpeg -ss 42:30 -i "$video_url" -ss 42:30 -i "$audio_url" -map 0:v -map 1:a -ss 30 -t 7:10 -c:v libx264 -c:a aac gog-vs-triv.mkv

~に帰属ヤクーブ・ブラナソリューション--youtube-skip-dash-manifest


編集:これは頻繁に行われるので、ここに含めるスクリプトを作成しました。この記事ではあまり重要ではないyoutube-dl理由からからに変更しましたが、使い続けたい場合にyt-dlp置き換えることができます。yt-dlpyoutube-dl

clip-youtube.sh

#!/bin/bash
#Arguments: URL, Time stamp -5 seconds, length of clip, video file name

readarray -t urls <<< "$(yt-dlp --youtube-skip-dash-manifest -g "$1")"
ffmpeg -ss $2 -i "${urls[0]}" -ss $2 -i "${urls[1]}" -ss 5 -map 0:v -map 1:a -c:v libx264 -c:a aac -t $3 $4

使用例:

./clip-youtube.sh "https://www.youtube.com/watch?v=aqz-KE-bpKQ" 3:05 11 squashed.mp4

答え3

ffmpeg $(youtube-dl -g 'https://www.youtube.com/watch?v=oHg5SJYRHA0' | sed 's/^/-ss 00:05 -i /') -t 01:00 -c copy out.mkv

このコマンドを使用するには、URLと-ss時刻を編集してください。-t次のようなビデオとオーディオのURLを含むパラメータを生成します。回答寄稿者:@godofgrunts。$()2つの個別のパラメータが生成されるため、引用符を使用しないでくださいffmpeg

答え4

このパラメータを使用して、編集するオーディオ/ビデオ出力(プロセッサ)を--postprocessor-args渡します。ポストプロセッサの取り付けがffmpeg必要です。ffmpeg

--postprocessor-args3つのパラメータと値が必要です。 (たとえば、より多くのパラメータがあります。マニュアルページを参照してくださいffmpeg。)

  • -ss HH:MM:SS :開始時間
  • -to HH:MM:SS :時間の最大
  • -t HH:MM:SS :所要時間

例:

  • 15秒でエンコードを開始し、1分20秒で停止
    $ youtube-dl --postprocessor-args "-ss 0:0:15 -to 0:1:20" '[video_URL]'
    
  • エンコーディングは15秒で始まり、3分5秒しかかかりません。
    $ youtube-dl --postprocessor-args "-ss 0:0:15 -t 0:3:5" '[video_URL]'
    

添付: youtube-dlメディア全体がダウンロードされ、処理される前に削除されます。

関連情報