![](https://habrastorage.org/webt/il/ld/br/illdbrtu3vavfa_1wevry8zn1co.jpeg)
YouTubeの一部の動画を友だちと共有したい場合があります-現代の現実の集中時間は制限まで短縮され、 「タイムコードが付いていても」「21:51から24:55に視聴」というコメントを付けて動画へのリンクをドロップすると、素晴らしいですビデオが視聴されない可能性。
また、動画の編集には動画が必要になる場合があります。動画全体を数秒間ダウンロードして、編集プログラムで必要な部分を検索/切り取るのはかなり不便です。
ffmpegを使用してYouTubeビデオの一部をダウンロードする方法-catの下
直接リンクを取得する
PythonでのTelegram ボットの実装の一部:
pytubeライブラリが必要です。
YouTubeクラスオブジェクトを作成してリンクを転送し、目的のストリームの番号を転送して、ビデオ/オーディオへの直接リンクを取得します
from pytube import YouTube link = " " itag = _ url = YouTube(link).streams.get_by_itag(itag).url
1080pおよび480pストリームにはオーディオトラックがないことに注意してください。
![](https://habrastorage.org/webt/4o/df/3k/4odf3kggc6apdv9hgykckgokcyi.jpeg)
次に-「hh:mm:ss.xx」の形式で、開始(-ss)および終了(-to)のタイムコードとともに入力(-i)ffmpegへのリンクを送信します。 キーフレームの損失によりビデオの先頭で画像がフリーズするのを避けるために、オーディオコーデック、ビットレート、および "-avoid_negative_ts make_zero"を設定します。
ffmpegは適切なタイミングでビデオをダウンロードします-ビデオをコンピューターにダウンロードしてトリミングする必要はありません-すぐに目的の作品を取り出します。
process_call_str = 'ffmpeg -ss {1} -to {2} -i "{0}"'\ '-acodec aac -b:a 192k -avoid_negative_ts make_zero "{3}"' .format(str(url), str(ss), str(t), download_file_path) status = subprocess.check_call(process_call_str, shell=True)
音声なしのストリーム
それでは、音声のないストリームをどうするのでしょうか? FFMPEGはここでも役立ちます-入力で複数のストリームを受信し、それらを結合できます。
ビデオストリーム(例:137-1080p)およびオーディオ/ビデオ付きのストリーム(例:18-360p)への直接リンクを取得します。
url = YouTube(link).streams.get_by_itag(itag).url aurl = YouTube(link).streams.get_by_itag(18).url
次に、魔法が始まります-両方のストリームをフィードし、「-map」を使用して、最初のストリームからビデオトラックを取得し、2番目のストリームからオーディオトラックを取得して結合します-ストリームの読み込みと結合は、2つのソースから適切な場所から行われます
process_call_str = 'ffmpeg -ss {2} -to {3} -i "{0}" -ss {2} -to {3} -i "{1}"' \ ' -acodec aac -b:a 192k -avoid_negative_ts ' \ 'make_zero -map 0:v:0 -map 1:a:0 "{4}"' \ .format(str(url), str(aurl), str(ss), str(t), download_file_path) status = subprocess.check_call(process_call_str, shell=True)
おわりに
一般に、ffmpegは非常に強力なものであり、その可能性はビデオ/オーディオをある形式から別の形式に変換するよりもいくらか広く、着信チャネル、ディスク、プロセッサ時間およびRAMの負荷を最適化できます。
ffmpegを使用して、 ボットはラウドネス、opus形式への圧縮による音の加速/減速を実装します。 ここに、タイムコードによる適切な瞬間からのビデオ/オーディオのダウンロードがあります-リンクにタイムコードを添付するだけで、ボットはすぐに目的の形式と品質で目的のオーディオ/ビデオを送信します:
http://www.youtube.com/watch?v=Qgm36HHDEk0(30:29.5-30:38.5)