当前位置: 首页 > wzjs >正文

网站建设销售工作好么关键词在线采集

网站建设销售工作好么,关键词在线采集,购物网站排名女装,传媒公司起名大全Windows版FFmpeg使用及B站视频下载示例python源码 FFmpeg介绍和下载 FFmpeg 是一个功能强大、灵活且广泛使用的多媒体处理工具,无论是在专业领域还是日常使用中,都能满足各种多媒体处理需求。FFmpeg 是一个开源项目,遵循 LGPL 或 GPL 许可。…

Windows版FFmpeg使用及B站视频下载示例python源码

FFmpeg介绍和下载

FFmpeg 是一个功能强大、灵活且广泛使用的多媒体处理工具,无论是在专业领域还是日常使用中,都能满足各种多媒体处理需求。FFmpeg 是一个开源项目,遵循 LGPL 或 GPL 许可。这意味着你可以免费使用、修改和分发它。组成:

ffmpeg:这是 FFmpeg 的核心工具,用于处理多媒体文件的转换、录制、播放等操作。

ffplay:一个简单的多媒体播放器,用于播放视频和音频文件。

ffprobe:用于分析多媒体文件的元数据,例如文件格式、编码信息、时长等。

FFmpeg 支持几乎所有常见的视频和音频格式,如 MP4、AVI、MKV、MOV、WAV、MP3、FLV 等。它还支持多种编解码器,如 H.264、H.265、AAC、MP3 等。

使用方式

FFmpeg 是一个命令行工具,可以通过命令行参数来执行各种操作。例如:

    转换格式:ffmpeg -i input.mp4 -c:v libx264 output.avi

    提取音频:ffmpeg -i video.mp4 -q:a 0 -map a audio.mp3

常用参数

输入输出相关

-i <input>:指定输入文件。

-f <format>:强制指定输入或输出文件格式。

-y:自动覆盖输出文件。

-n:禁止覆盖输出文件。

编码器和解码器

-c:v <codec>:指定视频编解码器。

-c:a <codec>:指定音频编解码器。

-c copy:直接拷贝流,不进行重新编码。

更多情况可见https://ffmpeg.org/ffmpeg.html#Trancoding

也可以通过编程接口(如Python、C/C++)调用其功能,方便集成到其他软件中。

Windows版本的FFmpeg下载

打开 FFmpeg 官网https://ffmpeg.org/,选择Download(下载)。

选择左边的 release builds(发布版本)

可以选择下载上面红色圈中的 release-full 版本,

选择带 shared 的还是不带 shared 的版本,其实都是可以的。

下载后,解压使用。解压进入 bin 目录

带 shared 的里面,多了 include、lib 目录。把 FFmpeg 依赖的模块包单独的放在的 lib 目录中。ffmpeg.exe,ffplay.exe,ffprobe.exe 作为可执行文件的入口,文件体积很小,他们在运行的时候,如果需要,会到 lib 中调用相应的功能。

不带 shared 的里面,bin 目录中有 ffmpeg.exe,ffplay.exe,ffprobe.exe 三个可执行文件,每个 exe 的体积都稍大一点,因为它已经把相关的需要用的模块包编译到exe里面去了。不带 shared 的版本,单文件可以方便使用。

python代码bilibili(B站)下载示例源码

下面给出bilibili(B站)上西游记精彩花絮

https://www.bilibili.com/video/BV1gX4y1P7Va/?spm_id_from=333.788.recommend_more_video.10

使用python及第三方模块requests实现

先介绍代码中使用的模块

requests模块。这个模块是用来发送HTTP请求的,比如GET、POST等,非常常用。方便与 Web API 进行交互。requests是第三方库,不是Python的标准库,需要额外安装,通常用pip install requests来安装。所以这个需要用户自己安装。

json模块。这个模块用于处理JSON数据,比如解析和生成JSON。例如将 Python 字典转换为 JSON 字符串,或将 JSON 字符串解析为 Python 对象。json是Python的内置库,从Python 2.6开始就存在了,所以不需要安装。

pprint模块,全称是Pretty Print,用于美化输出数据结构,比如字典和列表,使其更易读。这个也是Python的标准库,属于内置模块,不需要安装。

re模块,正则表达式模块,支持字符串匹配、搜索、替换等操作,常用于文本处理和模式匹配。。同样,这是Python内置的,无需安装。

os模块,提供了与操作系统交互的功能,比如文件和目录操作、环境变量等。是内置的,不需要额外安装。

subprocess模块,用于运行外部命令或程序。允许生成新的进程,连接输入/输出/错误管道,并获取返回码。是Python标准库的一部分,不需要安装。

sys模块,提供对Python解释器相关的操作,比如访问命令行参数、退出程序、获取模块路径等。属于内置模块,无需安装。

urllib.parse.urlparse。urllib.parse是用于处理URL的模块,urlparse是其中的一个函数,用来解析URL。urllib是Python的标准库,所以不需要安装。在Python 3中,urllib被分成了几个子模块,比如urllib.request、urllib.parse等。

代码逻辑如下

发送HTTP请求获取网页内容。

从网页内容中解析出视频和音频的URL。

下载视频和音频文件。

使用FFmpeg工具合并视频和音频文件。

注意,该代码通用性极低,不能下载B站所有视频,仅能下载‌B站未加密、无分片(如.m3u8索引文件)、非会员/付费‌的公开视频。

源码如下:

import requests
import json
import pprint
import re
import os
import subprocess
import sys
from urllib.parse import urlparse# 全局常量定义
SAVE_DIR = r'D:\bilibili' #视频存放路径设置
FFMPEG_PATH = r'D:\ffmpeg-7.1-full_build\bin\ffmpeg.exe'  # 修改为实际路径
ILLEGAL_CHARS = r'[<>:"/\\|?*\x00-\x1F]'def clean_filename(filename):"""清理文件名中的非法字符"""return re.sub(ILLEGAL_CHARS, '_', filename).strip()def getResponse(url):"""获取url响应体(带重试机制)"""# 设置请求头以模拟浏览器访问headers = {'referer': 'https://www.bilibili.com/','User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36'}try:response = requests.get(url=url, headers=headers, timeout=20)response.raise_for_status()return responseexcept RequestException as e:raise RuntimeError(f"网络请求失败: {str(e)}") from edef parseResponse(url):"""解析响应体"""try:# 验证域名if 'bilibili.com' not in urlparse(url).netloc:raise ValueError("非B站视频链接")response = getResponse(url)# 提取视频信息html_data_match = re.search(r'<script>window\.__playinfo__=(.*?)</script>', response.text)if not html_data_match:raise ValueError("未找到视频数据")try:jsonData = json.loads(html_data_match.group(1))except json.JSONDecodeError as e:raise ValueError("视频数据解析失败") from e# 提取标题title_match = re.search(r'<title data-vue-meta="true">(.*?)</title>', response.text)if not title_match:raise ValueError("未找到视频标题")videoTitle = clean_filename(title_match.group(0).split('>')[1].split('<')[0])# 验证媒体流数据try:audioUrl = jsonData['data']['dash']['audio'][0]['baseUrl']videoUrl = jsonData['data']['dash']['video'][0]['baseUrl']except (KeyError, IndexError) as e:raise ValueError("视频流信息不完整") from ereturn {'videoTitle': videoTitle,'audioUrl': audioUrl,'videoUrl': videoUrl,}except Exception as e:raise RuntimeError(f"解析响应失败: {str(e)}") from edef saveMedia(fileName, content, mediaType):"""保存媒体文件"""try:os.makedirs(SAVE_DIR, exist_ok=True)safe_name = f"{clean_filename(fileName)}.{mediaType}"full_path = os.path.join(SAVE_DIR, safe_name)with open(full_path, 'wb') as f:f.write(content)print(f"[√] {mediaType.upper()}保存成功: {safe_name}")return full_pathexcept (IOError, OSError) as e:raise RuntimeError(f"文件保存失败: {str(e)}") from edef AvMerge(Mp3Path, Mp4Path, savePath):"""合并音视频"""try:if not os.path.isfile(FFMPEG_PATH):raise FileNotFoundError("FFmpeg路径不存在")print("[!] 开始合并音视频...")cmd = [FFMPEG_PATH,'-y',  # 覆盖输出文件'-i', Mp4Path,'-i', Mp3Path,'-c:v', 'copy','-c:a', 'aac','-strict', 'experimental',savePath]try:subprocess.run(cmd,check=True,stdout=subprocess.DEVNULL,stderr=subprocess.DEVNULL)except subprocess.CalledProcessError as e:raise RuntimeError(f"合并失败(错误码 {e.returncode})") from eprint(f"[√] 合并完成: {os.path.basename(savePath)}")# 清理临时文件for path in [Mp3Path, Mp4Path]:try:if os.path.exists(path):os.remove(path)print(f"[!] 已清理临时文件: {os.path.basename(path)}")except Exception as e:print(f"[!] 清理文件失败: {str(e)}")except Exception as e:raise RuntimeError(f"合并过程出错: {str(e)}") from edef main():try:url = input("请输入B站视频url地址: ").strip()if not url.startswith(('http://', 'https://')):raise ValueError("请输入有效的URL地址")videoInfo = parseResponse(url)base_name = videoInfo['videoTitle']# 下载音频audio_content = getResponse(videoInfo['audioUrl']).contentmp3_path = saveMedia(base_name, audio_content, 'mp3')# 下载视频video_content = getResponse(videoInfo['videoUrl']).contentmp4_path = saveMedia(base_name, video_content, 'mp4')# 合并文件merged_path = os.path.join(SAVE_DIR, f'merged_{base_name}.mp4')AvMerge(mp3_path, mp4_path, merged_path)print(f"[√] 全部操作已完成!保存路径: {merged_path}")except Exception as e:print(f"[X] 程序运行出错: {str(e)}")sys.exit(1)if __name__ == '__main__':main()

说明

其中,代码行:FFMPEG_PATH = r"D:\ffmpeg-7.1-full_build\bin\ffmpeg.exe"  # 修改为你的实际路径

若使用不带 shared 的版本,可将bin 目录中的 ffmpeg.exe文件,直接拷贝到这个程序的文件夹中,可将其改为:FFMPEG_PATH = r".\ffmpeg.exe"  # 修改为你的实际路径

OK!

http://www.dtcms.com/wzjs/208252.html

相关文章:

  • 龙岗网站建设报价百度关键词查询
  • 漯河网站建设费用地推是什么
  • 网站建设 公司排名指数基金怎么买才赚钱
  • 做app网站需要什么个人博客网站
  • wordpress主题代码高亮win优化大师怎么样
  • 南和网站建设百度风云榜
  • 改动网站标题网站托管维护
  • 深圳做自适应网站销售营销方案100例
  • 安卓做视频网站朋友圈网络营销
  • 建瓯市建设银行网站企业qq手机版
  • 有做a50期货的网站百度一下的网址
  • php网站怎么做集群磁力在线搜索引擎
  • 郑州做响应式网站网络推广外包业务销售
  • 建设网站教程视频下载seo 优化 服务
  • 自适应网站建设选哪家百度老旧版本大全
  • 免费虚拟主机管理系统下载上海seo外包
  • 西宁企业网站建设开发seo排名优化
  • 给人家做网站服务器自己搭吗谷歌账号
  • 房产门户网站平台搭建今日国际新闻
  • 手机网站内容管理企业推广策划方案
  • 网站代码如何优化做销售找客户渠道
  • wordpress添加邀请码输入框无锡seo公司找哪家好
  • 做贷超网站 前期需要什么分析东莞网络优化调查公司
  • 小码王少儿编程加盟超级优化大师
  • 做dj网站能赚钱吗网站单向外链推广工具
  • 云南建设厅网站助理工程师百度云盘网页登录入口
  • php快速建网站青岛网站优化公司哪家好
  • 手机端网站建设的费用清单seo优化是做什么的
  • 鄂州网站制作淘宝关键词热度查询工具
  • 南宁营销网站建设宁波seo外包方案