本帖最后由 xp3000 于 2023-2-4 17:42 编辑
这个问题在于有人不知道下载的ffmpeg放哪里
ffmpeg放入C:\Windows\System32文件夹就可以了
下面这个只处理目录下一级的文件夹的ts视频- @echo off&setlocal enabledelayedexpansion
- @REM 保存为ANSI编码,文件名排序后合并视频
-
- set s=^^^^^^^^^^^^^^^^^^^^^^^^^^
- for /d %%a in (*) do (echo.进入文件夹:%%a
- pushd %~dp0%%a&type nul>"%%a.txt"
- setlocal
- for /f "delims=" %%i in ('dir /b/a-d/on "*.ts"') do (
- set "ss=!s!!s!!s!!s!!s!%%i"&set "^^=!ss:~-64!"&set _!^^!=!^^!
- )
- for /f "delims==_^^" %%j in ('set _^|sort /+1') do (
- echo;file %%j>>"%%a.txt"&echo; 即将合并文件 %%j
- )
- popd
- endlocal
- ffmpeg -f concat -i "%~dp0%%a\%%a.txt" -vcodec copy -acodec copy "%~dp0%%a.mp4" -y
- del /f /s /q "%~dp0%%a\%%a.txt" >nul 2>nul
- )
- pause
复制代码 ffmpeg后面有个-y,不需要覆盖就删除
这一个处理根目录内所有文件夹的ts视频- @echo off&setlocal enabledelayedexpansion
- @REM 保存为ANSI编码,文件名排序后合并视频
- cd \
- set s=^^^^^^^^^^^^^^^^^^^^^^^^^^
- for /f "delims=" %%a in ('dir /a:d /b/s *') do (
- pushd "%%a"&echo.进入"%%a"
- if exist *.ts (type nul>"%%a\%%~na.txt"
- echo.
- setlocal
- for /f "delims=" %%i in ('dir /b/a-d/on "*.ts"') do (
- set "ss=!s!!s!!s!!s!!s!%%i"&set "^^=!ss:~-64!"&set _!^^!=!^^!
- )
- for /f "delims==_^^" %%j in ('set _^|sort /+1') do (
- echo;file %%j>>"%%a\%%~na.txt"&echo; 即将合并文件 %%j
- )
- popd
- endlocal
- ffmpeg -f concat -i "%%a\%%~na.txt" -vcodec copy -acodec copy "%~dp0%%~na.mp4" -y
-
- del /f /s /q "%%a\%%~na.txt" >nul 2>nul
- ) else (echo %%a不存在ts视频)
- )
- pause
复制代码
|