私はpytubeを使用してpythonでyoutubeビデオをダウンロードしています。これまでのところ、mp4形式でダウンロードできました。
yt = pytube.YouTube("https://www.youtube.com/watch?v=WH7xsW5Os10")
vids= yt.streams.all()
for i in range(len(vids)):
print(i,'. ',vids[i])
vnum = int(input("Enter vid num: "))
vids[vnum].download(r"C:\YTDownloads")
print('done')
「オーディオ」バージョンをダウンロードできましたが、.mp4
形式でした。拡張機能の名前を.mp3
に変更しようとしましたが、オーディオは再生されましたが、アプリケーション(Windows Media Player)が応答を停止し、遅延し始めました。
動画を.mp3
形式の音声ファイルとしてダウンロードするにはどうすればよいですか 直接?このモジュールを使用するのは初めてなので、コードを入力してください。
動画を.mp3形式で直接オーディオファイルとしてダウンロードするにはどうすればよいですか?
できません。直接ダウンロードできるファイルは、yt.streams.all()
にリストされているファイルのみです。
ただし、ダウンロードしたオーディオファイルを.mp4
形式から.mp3
形式に変換するのは簡単です。たとえば、 ffmpeg がインストールされている場合、ターミナルからこのコマンドを実行すると、トリックを実行できます(ダウンロードディレクトリにいると仮定します)。
$ ffmpeg -i downloaded_filename.mp4 new_filename.mp3
または、Pythonのsubprocess
モジュールを使用して、ffmpegコマンドをプログラムで実行することもできます。
import os
import subprocess
import pytube
yt = pytube.YouTube("https://www.youtube.com/watch?v=WH7xsW5Os10")
vids= yt.streams.all()
for i in range(len(vids)):
print(i,'. ',vids[i])
vnum = int(input("Enter vid num: "))
parent_dir = r"C:\YTDownloads"
vids[vnum].download(parent_dir)
new_filename = input("Enter filename (including extension): ")) # e.g. new_filename.mp3
default_filename = vids[vnum].default_filename # get default name using pytube API
subprocess.call([ # or subprocess.run (Python 3.5+)
'ffmpeg',
'-i', os.path.join(parent_dir, default_filename),
os.path.join(parent_dir, new_filename)
])
print('done')
私はあなたがPython 3 and pytube 9.xを使用していることを前提としています、あなたは興味のあるファイル拡張子を「フィルタリング」するためにフィルターメソッドを使用することができます。
たとえば、mp4ビデオファイル形式をダウンロードする場合は、次のようになります。
pytube.Youtube('url here').streams.filter(file_extension='mp4').first()
オーディオをプルしたい場合は、次のようになります。
pytube.Youtube('url here').streams.filter(only_audio=True).all()
このページに着く人を助けることを願っています;不必要に変換するのではなく。
これは、mp4ビデオをダウンロードしてmp4からmp3に変換するための、ややスリムで密度の高い形式です。
ダウンロードは、ファイルをプログラムの現在のディレクトリまたは場所にダウンロードします。これにより、ファイルが新しいファイルとしてmp3に変換されます。
from pytube import YouTube
import os
import subprocess
import time
while True:
url = input("URL: ")
# Title and Time
print("...")
print(((YouTube(url)).title), "//", (int(var1)/60),"mins")
print("...")
# Filename specification
# Prevents any errors during conversion due to illegal characters in name
_filename = input("Filename: ")
# Downloading
print("Downloading....")
YouTube(url).streams.first().download(filename=_filename)
time.sleep(1)
# Converting
mp4 = "'%s'.mp4" % _filename
mp3 = "'%s'.mp3" % _filename
ffmpeg = ('ffmpeg -i %s ' % mp4 + mp3)
subprocess.call(ffmpeg, Shell=True)
# Completion
print("\nCOMPLETE\n")
これは、複数のURLの名前変更、ダウンロード、変換を可能にする無限ループです。