深圳电子商城网站设计html视频播放器

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

深圳电子商城网站设计,html视频播放器,wordpress更换域名的几个步骤,香奈儿网站建设Windows版FFmpeg使用及B站视频下载示例python源码 FFmpeg介绍和下载 FFmpeg 是一个功能强大、灵活且广泛使用的多媒体处理工具#xff0c;无论是在专业领域还是日常使用中#xff0c;都能满足各种多媒体处理需求。FFmpeg 是一个开源项目#xff0c;遵循 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.exeffplay.exeffprobe.exe 作为可执行文件的入口文件体积很小他们在运行的时候如果需要会到 lib 中调用相应的功能。 不带 shared 的里面bin 目录中有 ffmpeg.exeffplay.exeffprobe.exe 三个可执行文件每个 exe 的体积都稍大一点因为它已经把相关的需要用的模块包编译到exe里面去了。不带 shared 的版本单文件可以方便使用。 python代码bilibiliB站下载示例源码 下面给出bilibiliB站上西游记精彩花絮 https://www.bilibili.com/video/BV1gX4y1P7Va/?spm_id_from333.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 rD:\bilibili #视频存放路径设置 FFMPEG_PATH rD:\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(urlurl, headersheaders, timeout20)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(rscriptwindow.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(rtitle data-vue-metatrue(.*?)/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_okTrue)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,checkTrue,stdoutsubprocess.DEVNULL,stderrsubprocess.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(SAVEDIR, fmerged{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 rD:\ffmpeg-7.1-full_build\bin\ffmpeg.exe  # 修改为你的实际路径 若使用不带 shared 的版本可将bin 目录中的 ffmpeg.exe文件直接拷贝到这个程序的文件夹中可将其改为FFMPEG_PATH r.\ffmpeg.exe  # 修改为你的实际路径 附、Python网络爬虫入门 https://blog.csdn.net/cnds123/article/details/121868887 OK