web-dev-qa-db-ja.com

pytubeを使用してmp3形式でビデオをダウンロードする

私は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形式の音声ファイルとしてダウンロードするにはどうすればよいですか 直接?このモジュールを使用するのは初めてなので、コードを入力してください。

6
Muhammad Khan

動画を.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')
4
scrpy

私はあなたが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()

このページに着く人を助けることを願っています;不必要に変換するのではなく。

1
TheoNeUpKID

これは、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の名前変更、ダウンロード、変換を可能にする無限ループです。

0
user10730406