FFMPEG。 YouTubeからビデオの一部をダウンロードする







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ストリームにはオーディオトラックがないことに注意してください。









次に-「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)



All Articles