如何批量压缩AnkiDroid媒体文件夹中大于1MB的MP4视频文件
如何批量压缩AnkiDroid媒体文件夹中大于1MB的MP4视频文件
嘿,这个需求太实用了——毕竟10k张卡片的媒体文件堆起来体积肯定不小!针对你要批量压缩AnkiDroid媒体文件夹里大于1MB的MP4文件,我给你整理了几个在Termux环境下能直接上手的方案,先提醒一句:一定要先备份媒体文件夹,避免操作失误弄丢你的手语视频素材!
第一步:必做的备份操作
先把/storage/emulated/0/Android/data/com.ichi2.anki/files/AnkiDroid/collection.media整个文件夹复制到手机的其他目录(比如内部存储的Backup文件夹)或者电脑上,确保原文件万无一失。
方案一:用find命令一键批量压缩(推荐)
这个方法直接筛选符合条件的文件并执行压缩,还能避免直接覆盖原文件,安全性拉满。
完整命令:
tsu cd /storage/emulated/0/Android/data/com.ichi2.anki/files/AnkiDroid/collection.media find . -maxdepth 1 -type f -name "*.mp4" -size +1M -exec bash -c 'ffmpeg -i "$0" -vcodec libx265 -crf 40 -c:a copy "$0.temp.mp4" && mv "$0.temp.mp4" "$0"' {} \;
命令拆解(帮你理解每一步):
tsu:切换到root权限,确保能读写AnkiDroid的媒体文件夹cd ...:进入Anki的媒体文件目录find . -maxdepth 1 -type f -name "*.mp4" -size +1M:.:当前目录-maxdepth 1:只搜索当前目录(不递归子文件夹,Anki媒体文件一般都在根目录)-type f:只找文件,排除文件夹-name "*.mp4":只筛选MP4格式文件-size +1M:只挑大于1MB的文件
-exec bash -c '...' {} \;:对每个找到的文件执行压缩逻辑:ffmpeg -i "$0" -vcodec libx265 -crf 40 -c:a copy "$0.temp.mp4":用你熟悉的参数压缩视频,-c:a copy直接复制音频流(节省时间,如果你需要压缩音频可以改成-acodec aac -b:a 64k),输出临时文件避免损坏原文件mv "$0.temp.mp4" "$0":压缩完成后用临时文件替换原文件
提前测试(可选):
如果你想先确认find命令找到的文件是不是你要处理的,可以先执行这条命令预览:
find . -maxdepth 1 -type f -name "*.mp4" -size +1M -print
方案二:分步处理(更适合新手,容错率高)
如果你担心批量操作出问题,可以把大文件先移到临时文件夹单独处理,再放回原目录:
步骤1:把大MP4移到临时文件夹
tsu cd /storage/emulated/0/Android/data/com.ichi2.anki/files/AnkiDroid/collection.media mkdir temp_large_mp4 find . -maxdepth 1 -type f -name "*.mp4" -size +1M -exec mv {} temp_large_mp4/ \;
步骤2:批量压缩临时文件夹里的文件
cd temp_large_mp4 for file in *.mp4; do ffmpeg -i "$file" -vcodec libx265 -crf 40 -c:a copy "../$file" done
步骤3:确认无误后清理临时文件夹
压缩完成后打开AnkiDroid检查几张卡片的视频能不能正常播放,没问题的话就可以删除临时文件夹了:
cd .. rm -rf temp_large_mp4
几个实用小贴士
- 如果Termux里没有ffmpeg,先执行
pkg install ffmpeg安装 crf 40是你已经在用的参数,这个值越高压缩率越大、画质越低,可根据实际需求调整(比如调到35-38提升画质,或42进一步缩小体积)- 处理完后打开AnkiDroid,建议同步一次,确保媒体文件和卡片关联正常
备注:内容来源于stack exchange,提问作者yoannjap
相关产品推荐
相关产品推荐

