ffmpeg -display_rotation:v:0 90 -i input.mp4 -c copy output.mp4
以上代码可以把 mp4 视频旋转 90 度后生成一个新的视频。
我现在想把这个代码转换成批处理文件。
首先,批处理提供一个输入选项,让我可以输入要处理的 mp4 文件所在的文件夹路径。
其次,批处理开始旋转文件夹中的所有视频,删除原始 mp4 文件,把旋转后的 mp4 文件,命名为旋转之前的文件名。
感谢大佬援手。刚问了 gpt3.5 跟 google 双子星,都没得到正确答案。
1
mfsw OP 补充下,我希望批处理中调用的 ffmpeg 所在的路径是 C:\ffmpeg\ffmpeg.exe
|
2
defunct9 320 天前 via iPhone
写个 python
|
3
ltyj2003 320 天前 via Android
https://blog.csdn.net/McdullGemini/article/details/104256559
参考这个写批量转换 整体流程 源文件夹 转换 存入新文件夹 源文件夹删除 新文件夹改名为原文件夹 |
4
ltyj2003 320 天前 via Android
针对一楼问题,两个方法
1 、命令行里面把 ffmpeg 写为绝对路径即可 2 、系统设置里添加环境变量 |
5
jasonyang9 320 天前
照一个之前写的批处理魔改的,参考下
SET FFMPEG=C:\ffmpeg\ffmpeg.exe SET FFPARAM=-display_rotation:v:0 90 -c copy SET SRCPATH=??? SET SRCEXT=*.mp4 SET DSTEXT=*.new.mp4 FOR /R "%SRCPATH%" %%F IN (%SRCEXT%) DO ( SET "infile=%%~fF" SET "outfile=%%~fF" SETLOCAL enableDelayedExpansion "%FFMPEG%" %FFPARAM% "!infile!" "!outfile!" ENDLOCAL ) SRCPATH 是 Hard-coded ,你要传参进去另写 没有覆盖原始 MP4 的逻辑,你自己写 成品后希望 LZ 能共享出来 哈哈 |
6
e2k 320 天前
@echo off
chcp 65001 setlocal enabledelayedexpansion set /p folderPath=请输入要处理的文件夹路径: set "ffmpegPath=C:\ffmpeg\ffmpeg.exe" for %%F in ("%folderPath%\*.mp4") do ( echo 正在处理文件:"%%~nfF" "%ffmpegPath%" -display_rotation:v:0 90 -i "%%F" -c copy "%%~dpnF_rotated.mp4" echo 处理命令:"%ffmpegPath%" -display_rotation:v:0 90 -i "%%F" -c copy "%%~dpnF_rotated.mp4" if exist "%%~dpnF_rotated.mp4" ( del "%%F" ren "%%~dpnF_rotated.mp4" "%%~nxF" echo 文件处理完成:"%%~nxF" ) else ( echo 无法旋转文件:"%%~nxF" ) ) endlocal pause |
7
SuperXX 320 天前 via iPhone
用 Python glob 和 subprocess 运行你的命令就行了
|
8
Tsccai 320 天前
这还不简单。
第一步,把 ffmpeg 添加到环境变量,这样你在任意目录下都可以调用。 第二步,写个批处理,遍历*.mp4 ,逐一转码写入目标目录,再删除原文件,把这个批处理放进你的视频目录即可。 至于如何用批处理遍历文件和字符串操作来生成新的文件名,建议直接百度。最后要提醒的是不要在一开始就使能删除原文件的代码,否则很可能出现你这边还在调试呢,那边批处理直接把你原文件干掉了。 |
9
janus77 320 天前
这种就真可以问 GPT 了,我也确实用 GPT 帮我写了好几个脚本
|
10
XxxxD 320 天前
python 有个库是 subprocess, 引用命令行,写个小脚本批量处理
|
12
PrinceofInj 319 天前
这个 GPT 绝对可以搞定,我之所以这么肯定是因为前不久望让 GPT 给我写了一个几乎一样功能的
|