[{"data":1,"prerenderedAt":93},["ShallowReactive",2],{"content:\u002F2026\u002Frclone-ffmpeg":3,"surround:\u002F2026\u002Frclone-ffmpeg":86},{"id":4,"title":5,"body":6,"categories":63,"date":65,"description":66,"draft":67,"extension":68,"image":69,"meta":70,"navigation":72,"path":73,"permalink":69,"published":69,"readingTime":74,"recommend":69,"references":69,"seo":79,"sitemap":80,"stem":81,"tags":82,"type":84,"updated":65,"__hash__":85},"content\u002Fposts\u002F2026\u002Frclone-ffmpeg.md","用 Rclone+FFmpeg 代替臃肿的上传工具",{"type":7,"value":8,"toc":57},"minimark",[9,14,26,37,40,44,47,54],[10,11,13],"h2",{"id":12},"rclone","Rclone",[15,16,17,18,25],"p",{},"输入 ",[19,20,23],"code",{"className":21,"code":23,"language":24},[22],"language-bash","rclone config","bash"," 后开始。",[27,28,35],"pre",{"className":29,"code":31,"filename":32,"language":33,"meta":34},[30],"language-sh","[mu-s4]\ntype = s3\nprovider = Other\naccess_key_id = 看不见\nsecret_access_key = 看不见\nendpoint = https:\u002F\u002Fs3.bitiful.net\n","~\u002F.config\u002Frclone\u002Frclone.conf","sh","",[19,36,31],{"__ignoreMap":34},[15,38,39],{},"这是我的 Rclone 配置，在完成之后就是这样的。",[10,41,43],{"id":42},"ffmpeg","FFmpeg",[15,45,46],{},"FFmpeg 是一个非常强大的媒体处理工具，理论上，可以将它和 Rclone 一起搭配，制作成一个简易的图片上传脚本。",[27,48,52],{"className":49,"code":50,"filename":51,"language":33,"meta":34},[30],"#!\u002Fbin\u002Fbash\n\n# 配置\nOUTPUT_DIR=\".\u002Foutput\"  # 本地输出目录\nRCLONE_REMOTE=\"bitiful:mu-s4\"  # Rclone 远程路径\n\n# 创建输出目录\nmkdir -p \"$OUTPUT_DIR\"\n\n# 让用户输入图片文件名\necho \"请输入图片文件名：\"\nread -r INPUT_FILE\n\n# 检查文件是否存在\nif [ ! -f \"$INPUT_FILE\" ]; then\n    echo \"错误：文件 '$INPUT_FILE' 不存在！\"\n    exit 1\nfi\n\n# 获取当前年份和日期\nYEAR=$(date +\"%Y\")\nDATETIME=$(date +\"%m%d\")\nOUTPUT_FILE=\"$OUTPUT_DIR\u002F${DATETIME}.avif\"\n\n# 理论上可以再加点硬件参数加速处理\necho \"转换中: $INPUT_FILE -> $OUTPUT_FILE\"\nffmpeg -i \"$INPUT_FILE\" -vf \"crop=iw:iw\u002F2\" -c:v libaom-av1 -pix_fmt yuv420p \"$OUTPUT_FILE\"\n\n# 检查转换是否成功\nif [ $? -eq 0 ]; then\n    echo \"转换成功!\"\n    \n    # 上传到云端（按年份分类）\n    echo \"正在上传到 rclone: ${RCLONE_REMOTE}\u002F${YEAR}\u002F\"\n    rclone copy \"$OUTPUT_FILE\" \"${RCLONE_REMOTE}\u002F${YEAR}\u002F\"\n    \n    if [ $? -eq 0 ]; then\n        echo \"上传成功! 路径: ${RCLONE_REMOTE}\u002F${YEAR}\u002F${DATETIME}.avif\"\n    else\n        echo \"上传失败!\"\n        exit 1\n    fi\nelse\n    echo \"转换失败!\"\n    exit 1\nfi\n","~\u002FPictures\u002Fimage.sh",[19,53,50],{"__ignoreMap":34},[15,55,56],{},"本人懒得研究 Shell 脚本🫠，所以让 AI 根据我的需求代写了一个，实测可用。",{"title":34,"searchDepth":58,"depth":58,"links":59},4,[60,62],{"id":12,"depth":61,"text":13},2,{"id":42,"depth":61,"text":43},[64],"代码","2026-05-06 17:02:31","PicGO 和 PicList 虽然配置简单容易上手，但却是用 Electron 开发的，因此我并不怎么想用。",false,"md",null,{"slots":71},{},true,"\u002F2026\u002Frclone-ffmpeg",{"text":75,"minutes":76,"time":77,"words":78},"2 min read",1.63,97800,326,{"title":5,"description":66},{"loc":73},"posts\u002F2026\u002Frclone-ffmpeg",[83,13,43],"图床","tech","ySIMRB6pf6G20FonjsBlBloayw1ueyj2F3gHQsHtlTo",[87,69],{"title":88,"path":89,"stem":90,"date":91,"type":92,"children":-1},"生活片段 - 我最近的状态","\u002F2026\u002Flife-0501","posts\u002F2026\u002Flife-0501","2026-05-01 11:42:37","story",1778603188196]