应用背景
- 2008 年左右买的一个系列视频,全都是
.rmvb
的格式,想移到 iphone
里面,但是显示解码格式不支持 - 上 知乎 看格式转换的工具发现这些工具需要把视频上传上去处理,而且很慢,而且有些还限制视频大小····
- 我觉得有必要通过
python
的小脚本来完成这些小事情
解决方案
- 使用
ffmpeg
工具进行视频格式转换 - 使用
python
写个简单脚本进行批量处理 - 将
mp4
格式的视频批量拖入到 iphone
中
1. ffmpeg 工具安装
- 可以参考文章:Mac 安装 FFmpeg (无需brew命令)
- ffmpeg 下载地址 在这里
2. 使用 ffmpeg
- 为了方便,我把
ffmpeg
放到了我要处理的视频文件夹目录下 - 然后再这个文件夹中写脚本来处理文件
import os
os.system("./ffmpeg -i ./初级/初03过去时.rmvb ./初级/初03过去时.mp4")
警告
⚠️:如果使用我的代码进行批量处理,最好保证要转换的 视频名称
中没有 空格
否则对应的文件会转换不成功~- 比如
沙雕 视频.rmvb
更名为 沙雕_视频.rmvb
然后再应用本文的代码
3. 批量处理所有视频文件夹中的文件
- 这部分我用的
jupyter notebook
写脚本的,大家自行参考有用的代码拿去
import os
dirs = os.listdir("./")
dir_paths = [os.path.join("./", dir_) for dir_ in dirs]
dir_paths
['./中A级',
'./ffmpeg',
'./中B级',
'./未命名1.ipynb',
'./高级',
'./未命名.ipynb',
'./.ipynb_checkpoints',
'./初级']
def get_mp4(files, filename):
basename = os.path.basename(filename)
if basename.split(".")[0] + ".mp4" in files:
return True
filepath_lst = []
for dir_path in dir_paths:
try:
files = os.listdir(dir_path)
filepaths = [os.path.join(dir_path, file) for file in files if not get_mp4(files, file)]
filepath_lst.append(filepaths)
except:
pass
filepath_lst
[['./中A级/中A07双宾宾补.rmvb',
'./中A级/中A04完成时态.rmvb',
'./中A级/中A09句型小结.rmvb',
'./中A级/中A05情态动词.rmvb',
'./中A级/中A06论比较级.rmvb',
'./中A级/中A08被动语态.rmvb',
'./中A级/中A03将来时态.rmvb',
'./中A级/中A02 be goig.vmark',
'./中A级/中A01代词介词.rmvb',
'./中A级/中A02 be goig.rmvb'],
['./中B级/中B05状语从句.rmvb',
'./中B级/中B04what句型.rmvb',
'./中B级/中B07动名词态.vmark',
'./中B级/中B06不定式态.vmark',
'./中B级/中B06不定式态.rmvb',
'./中B级/中B09逻辑主语.rmvb',
'./中B级/中B07动名词态.rmvb',
'./中B级/中B02名词从句.rmvb',
'./中B级/中B03定词从句.rmvb',
'./中B级/中B09逻辑主语.vmark',
'./中B级/中B08分词概念.rmvb',
'./中B级/中B01副词状语.rmvb'],
['./高级/高级07ps级.rmvb',
'./高级/高级05成语.rmvb',
'./高级/高级08六级.rmvb',
'./高级/高级02倒装.rmvb',
'./高级/高级01虚拟.rmvb',
'./高级/高级01虚拟.vmark',
'./高级/高级09白领.rmvb',
'./高级/高级03省略.rmvb',
'./高级/高级06四级.rmvb',
'./高级/高级04转换.rmvb'],
['./.ipynb_checkpoints/未命名1-checkpoint.ipynb',
'./.ipynb_checkpoints/未命名-checkpoint.ipynb'],
['./初级/初01主系表.rmvb',
'./初级/初04不定式.rmvb',
'./初级/初06定 语.rmvb',
'./初级/初05therbe.rmvb',
'./初级/初07祈使句.rmvb',
'./初级/初语音B).rmvb',
'./初级/初语音A).rmvb']]
from tqdm import tqdm
newpath_lst = []
for oldpaths in tqdm(filepath_lst):
for old_path in tqdm(oldpaths):
olds = os.path.splitext(old_path)
new_path = olds[0] + ".mp4"
print(new_path)
try:
os.system(f"./ffmpeg -i {old_path} {new_path}")
except Exception as e:
print(e)
4. 将 .mp4 的文件批量拖入 iphone 中保存
- 把
MP4
的视频直接拖到文稿底下
- 就可以在
iphone / ipad
的 文件
中进行查看了 - 如果没有
文件
这个 app
,直接在苹果的 app store
中搜索 文件
下载就行,这是苹果自带的一个应用~