哔哩哔哩视频下载视频转mp4脚本
时间: 2025-05-03 13:40:45 浏览: 38
### bilibili 下载视频转换 MP4 格式的 Python 脚本
为了实现将哔哩哔哩下载的视频转换为 MP4 文件的功能,可以编写一段 Python 脚本来处理不同类型的源文件(如 m4s 或 blv),并利用 `ffmpeg` 进行最终的格式转换。
#### 处理音频和视频分离的情况
当遇到音频和视频分别存储于不同的 `.m4s` 文件时,先通过命令行调用 `ffmpeg` 将两者合并:
```bash
ffmpeg -i video.m4s -i audio.m4s -c copy output.mp4
```
这段指令会读取指定路径下的音视频片段,并将其无损地合成为一个完整的 MP4 文件[^2]。
对于单个 BLV 文件,则可以直接执行转码操作而无需额外拼接步骤。下面给出一个较为通用的 Python 实现方案来自动化上述过程:
```python
import os
from pathlib import Path
def merge_m4s_to_mp4(video_path, audio_path, output_filename="output"):
"""
合并 .m4s 文件至单一 MP4 容器内
参数:
video_path (str): 视频部分的绝对/相对路径.
audio_path (str): 音轨部分的绝对/相对路径.
output_filename (str): 输出文件名,默认 'output'.
返回值:
str: 新创建媒体文件的位置字符串表示形式.
"""
command = f'ffmpeg -y -i "{video_path}" -i "{audio_path}" \
-codec copy "{output_filename}.mp4"'
try:
result = os.system(command)
if not result == 0:
raise Exception(f"Failed to execute FFmpeg with error code {result}")
return str(Path(output_filename).with_suffix('.mp4'))
except Exception as e:
print(e)
if __name__ == "__main__":
# 用户应根据实际情况修改这些变量指向正确的输入文件位置
vid_file = "path/to/video/file"
aud_file = "path/to/audio/file"
final_output = merge_m4s_to_mp4(vid_file, aud_file)
if final_output is None:
exit(-1)
print(f"Merged file saved at {final_output}")
```
此代码段定义了一个函数用于接收两个参数——即视频流与声音轨道各自的本地地址;之后构建起一条合适的 shell 指令交给操作系统去运行完成实际的任务;最后返回新生成多媒体资源的确切存放地点给调用者知晓.
阅读全文
相关推荐



















