|
发表于 2024-10-22 13:26:54
|
显示全部楼层
你可以使用 Python 的 `subprocess` 模块来运行 `ffprobe` 命令并捕获其输出,然后对输出进行分析。以下是实现步骤:
1. 使用 `subprocess.run` 执行 `ffprobe` 命令。
2. 捕获命令输出。
3. 判断输出中是否包含 `video` 或 `audio`。
Here's a complete example:
- import subprocess
- def check_media_type(file_path):
- # 执行 ffprobe 命令并捕获输出
- result = subprocess.run(
- ['ffprobe', '-v', 'error', '-show_entries', 'stream=codec_type', '-of', 'csv=p=0', file_path],
- stdout=subprocess.PIPE,
- stderr=subprocess.PIPE,
- text=True
- )
-
- if result.stdout:
- output = result.stdout.strip().split('\n')
- if 'video' in output:
- return 'video'
- elif 'audio' in output:
- return 'audio'
- return 'unknown'
- # 用法
- file_path = 'example.mp4'
- media_type = check_media_type(file_path)
- print(f'The file is a {media_type}')
复制代码
### 解释:
- `subprocess.run`:用于执行命令;
- `stdout=subprocess.PIPE`:捕获标准输出;
- `stderr=subprocess.PIPE`:捕获标准错误输出;
- `text=True`:将输出作为文本处理,而不是字节。
- `result.stdout.strip().split('\n')`:去掉输出的空格并按行分割。
通过这个方法,你可以将 `ffprobe` 的输出存入变量,并根据内容判断文件的类型。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |
|