日常小工具之:不花一分钱,不限制视频大小,用 python 和 ffmpeg 批量视频转格式,并保存到 iphone / ipad

文章讲述了如何通过Python脚本结合ffmpeg工具,对RMVB格式的视频进行批量转换成MP4格式,以便在iPhone中播放。作者提供了安装ffmpeg的方法,以及编写Python脚本的示例,强调了处理文件名中无空格的重要性,并展示了如何遍历文件夹进行转换操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

应用背景

  • 2008 年左右买的一个系列视频,全都是 .rmvb 的格式,想移到 iphone 里面,但是显示解码格式不支持
  • 知乎 看格式转换的工具发现这些工具需要把视频上传上去处理,而且很慢,而且有些还限制视频大小····

在这里插入图片描述

  • 我觉得有必要通过 python 的小脚本来完成这些小事情

解决方案

  • 使用 ffmpeg 工具进行视频格式转换
  • 使用 python 写个简单脚本进行批量处理
  • mp4 格式的视频批量拖入到 iphone

1. ffmpeg 工具安装

2. 使用 ffmpeg

  • 为了方便,我把 ffmpeg 放到了我要处理的视频文件夹目录下
  • 然后再这个文件夹中写脚本来处理文件
    在这里插入图片描述
import os
# 通过 python 执行 cmd 命令
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',
 './初级']
# 判断当前 .rmvb 文件是否已经存在对应的 .mp4 文件,比如对于 a.rmvb 如果已经生成过 a.mp4 那么就返回 True
def get_mp4(files, filename):
    basename = os.path.basename(filename)
    if basename.split(".")[0] + ".mp4" in files:
        return True
# 构造所有的 .rmvb 文件路径,已经生成过 .mp4 格式的文件不重复处理
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

# 根据 filepath_lst 中的内容构造对应的 mp4 文件生成路径,并完成 ffmpeg 的视频转格式任务,
# 也就是 A.rmvb -> A.mp4
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 中搜索 文件 下载就行,这是苹果自带的一个应用~
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

暖仔会飞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值