第三方模块的使用

207 阅读1分钟

ffmpeg

下载

下载地址:ffmpeg.org//download.h…

image.png

image.png

配置

下载完成后解压该压缩包,在bin文件里会有三个exe文件,复制此时的地址

找到环境变量,在用户变量Path中加入ffmpeg路径

image.png

C:\Users\yhq10>ffmpeg -version
ffmpeg version 7.0.1-essentials_build-www.gyan.dev Copyright (c) 2000-2024 the FFmpeg developers
built with gcc 13.2.0 (Rev5, Built by MSYS2 project)
configuration: --enable-gpl --enable-version3 --enable-static --disable-w32threads --disable-autodetect --enable-fontconfig --enable-iconv --enable-gnutls --enable-libxml2 --enable-gmp --enable-bzlib --enable-lzma --enable-zlib --enable-libsrt --enable-libssh --enable-libzmq --enable-avisynth --enable-sdl2 --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxvid --enable-libaom --enable-libopenjpeg --enable-libvpx --enable-mediafoundation --enable-libass --enable-libfreetype --enable-libfribidi --enable-libharfbuzz --enable-libvidstab --enable-libvmaf --enable-libzimg --enable-amf --enable-cuda-llvm --enable-cuvid --enable-dxva2 --enable-d3d11va --enable-d3d12va --enable-ffnvcodec --enable-libvpl --enable-nvdec --enable-nvenc --enable-vaapi --enable-libgme --enable-libopenmpt --enable-libopencore-amrwb --enable-libmp3lame --enable-libtheora --enable-libvo-amrwbenc --enable-libgsm --enable-libopencore-amrnb --enable-libopus --enable-libspeex --enable-libvorbis --enable-librubberband
libavutil      59.  8.100 / 59.  8.100
libavcodec     61.  3.100 / 61.  3.100
libavformat    61.  1.100 / 61.  1.100
libavdevice    61.  1.100 / 61.  1.100
libavfilter    10.  1.100 / 10.  1.100
libswscale      8.  1.100 /  8.  1.100
libswresample   5.  1.100 /  5.  1.100
libpostproc    58.  1.100 / 58.  1.100

使用

pip install ffmpeg-python -i https://pypi.tuna.tsinghua.edu.cn/simple
import requests
import re
import json
from pprint import pprint
import subprocess

url = "https://www.bilibili.com/video/BV1wD4y1o7AS/"
headers = {
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36',
    'referer': 'https://www.bilibili.com/'
}

html_data = requests.get(url, headers=headers).text
video_data = json.loads(re.findall('<script>window.__playinfo__=(.*?)</script>', html_data)[0])

video_url = video_data['data']['dash']['video'][0]['backupUrl'][0]
audio_url = video_data['data']['dash']['audio'][0]['backupUrl'][0]
video_file = requests.get(video_url, headers=headers).content
audio_file = requests.get(audio_url, headers=headers).content

with open('v1.mp4', 'wb') as f:
    f.write(video_file)

with open('a1.mp3', 'wb') as f:
    f.write(audio_file)

cmd = 'ffmpeg -y -i v1.mp4 -i a1.mp3 -c:v copy -c:a aac -strict experimental new_video.mp4'

subprocess.Popen(cmd, shell=True)

pprint('视频下载成功')