Ffmpeg
For FFmpeg with Constant Bitrate Encoding (CBR):
ffmpeg -i video.mp4 -vn \
-acodec libmp3lame -ac 2 -ab 160k -ar 48000 \
audio.mp3
or if you want to use Variable Bitrate Encoding (VBR):
ffmpeg -i video.mp4 -vn \
-acodec libmp3lame -ac 2 -qscale:a 4 -ar 48000 \
audio.mp3
The VBR example has a target bitrate of 165 Kbit/s with a bitrate range of 140...185.
python3 -m pip install -U yt-dlp
yt-dlp -F --progress "https://www.youtube.com/watch?v=xxxxxxxxx"
yt-dlp -f 636+251 -N10 --progress "https://www.youtube.com/watch?v=xxxxxxxxx"
yt-dlp -F --progress ${1}
import sys
import subprocess
import subprocess
import shlex
args = sys.argv
# print(args[0])
# print(args[1])
# print(args[2])
import subprocess
youtubekey = input('youtube key >> ')
cmd = f"yt-dlp -F --progress \"https://www.youtube.com/watch?v={youtubekey}\""
cmd = f"echo \"https://www.youtube.com/watch?v={youtubekey}\""
cmd = f"https://www.youtube.com/watch?v={youtubekey}"
# 新しいプロセスを起動し、すぐに制御を戻す
# proc = subprocess.Popen(['ls', '-l'], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
proc = subprocess.Popen(['yt-dlp', '-F', '--progress', cmd], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
# 他の処理を並行して行う...
# プロセスの終了を待ち、出力とエラーを取得
stdout, stderr = proc.communicate()
# proc.wait() と proc.returncode で終了コードも確認可能
print(stdout.decode())
ID = str(input('ID >> '))
##########################################################################
command_list = ['yt-dlp', '-f', ID, '-N10', '--progress', cmd]
print(command_list)
# command_list = ['ls', '-a']
try:
# stdoutとstderrをキャプチャする設定
process = subprocess.Popen(
command_list,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
text=True # Python 3.7+ では、text=Trueで出力が文字列になる
)
# 外部コマンドが終了するのを待機し、出力とエラーを取得
stdout, stderr = process.communicate(timeout=15)
if process.returncode == 0:
print("コマンドは正常に終了しました。")
print("標準出力:\n", stdout)
else:
# コマンドがエラーコードを返した場合
print(f"コマンドはエラーコード {process.returncode} で終了しました。")
print("標準エラー出力:\n", stderr)
except FileNotFoundError:
print(f"エラー: コマンド '{command_list[0]}' が見つかりません。パスを確認してください。")
except subprocess.TimeoutExpired:
print("エラー: コマンドがタイムアウトしました。")
except Exception as e:
print(f"予期せぬエラーが発生しました: {e}")
exit()
print(cmd)
# exit()
# print(youtubekey)
# subprocess.call([cmd])
subprocess.call(cmd)
exit()
# yt-dlp -f ${2} -N10 --progress "https://www.youtube.com/watch?v=${1}"