标题: [文件操作] 如何写ffmpeg批处理将一批每集1小时左右的aac文件分割为每集20分钟的文件 [打印本页]
作者: tmp05 时间: 2022-5-22 15:08 标题: 如何写ffmpeg批处理将一批每集1小时左右的aac文件分割为每集20分钟的文件
本帖最后由 tmp05 于 2022-5-22 15:15 编辑
有一批每集时长为1小时的aac音频文件,请问如何写ffmpeg批处理将它们分割为每集20分钟的mp3文件,用格式工厂似乎做不到。谢谢了!
找到了这篇,https://blog.csdn.net/iteye_19045/article/details/94879577,但这是去头去尾的,而不是等量分割
作者: Batcher 时间: 2022-5-22 15:58
回复 1# tmp05
先找一个文件试试:
test.bat
ffmpeg.exe
in.aac
放在同一个目录下- @echo off
- cd /d "%~dp0"
- ffmpeg -i "in.aac" -f segment -segment_time 1200 -c copy "out_%%03d.mp3"
复制代码
作者: tmp05 时间: 2022-5-22 20:04
运行后是这样的:
作者: Batcher 时间: 2022-5-23 12:05
回复 3# tmp05 - @echo off
- cd /d "%~dp0"
- ffmpeg -i "in.aac" -acodec libmp3lame "temp.mp3"
- ffmpeg -i "temp.mp3" -f segment -segment_time 60 -c copy "out_%%03d.mp3"
复制代码
作者: tmp05 时间: 2022-5-23 14:07
回复 tmp05
Batcher 发表于 2022-5-23 12:05
单个文件这样可以了,但如何批量?
作者: Batcher 时间: 2022-5-23 14:11
回复 5# tmp05 - @echo off
- cd /d "%~dp0"
- for /f "delims=" %%i in ('dir /b /a-d *.aac') do (
- ffmpeg -i "%%i" -acodec libmp3lame "temp.mp3"
- ffmpeg -i "temp.mp3" -f segment -segment_time 60 -c copy "%%~ni_%%03d.mp3"
- )
复制代码
作者: tmp05 时间: 2022-5-23 16:20
回复 tmp05
Batcher 发表于 2022-5-23 14:11
每次还要确认下?能否再帮完善下,谢谢
作者: Batcher 时间: 2022-5-23 17:39
回复 7# tmp05 - @echo off
- cd /d "%~dp0"
- for /f "delims=" %%i in ('dir /b /a-d *.aac') do (
- ffmpeg -i "%%i" -acodec libmp3lame "temp.mp3" -y
- ffmpeg -i "temp.mp3" -f segment -segment_time 60 -c copy "%%~ni_%%03d.mp3"
- )
复制代码
作者: tmp05 时间: 2022-5-24 13:51
本帖最后由 tmp05 于 2022-5-24 16:38 编辑
回复 8# Batcher
可以了,谢谢版主!另外,请问如何将每个文件三等分,而不是分成20分钟一个文件?要求有点多
作者: tmp05 时间: 2022-5-27 10:01
请问如何将每个文件三等分?
作者: tmp05 时间: 2022-5-29 07:28
有劳版主方便时帮改下语句,谢谢
作者: flashercs 时间: 2022-5-29 19:52
- @echo off
- setlocal enabledelayedexpansion
- cd /d "%~dp0"
- set splitCount=3
- for /f "delims=" %%i in ('dir /b /a-d *.aac') do (
- ffmpeg -y -i "%%i" -acodec libmp3lame "temp.mp3"
- for /f "delims=" %%B in ('ffprobe -show_format -i "temp.mp3" 2^>nul^|findstr /lbic:"duration="') do (
- set %%B
- )
- set /a d=duration/splitCount+1
- ffmpeg -i "temp.mp3" -f segment -segment_time !d! -c copy "%%~ni_%%03d.mp3"
- )
- endlocal
复制代码
作者: tmp05 时间: 2022-5-30 14:58
回复 12# flashercs
执行了下,是这样的:
作者: flashercs 时间: 2022-5-30 15:16
回复 13# tmp05
下载ffprobe http://bcn.bathome.net/tool/ffmpeg,4.3/ffprobe.exe
作者: Batcher 时间: 2022-5-30 15:51
回复 9# tmp05 - @echo off
- cd /d "%~dp0"
- setlocal enabledelayedexpansion
-
- set "SplitCount=3"
- for /f "delims=" %%i in ('dir /b /a-d *.aac') do (
- ffmpeg -i "%%i" -acodec libmp3lame "temp.mp3" -y
- for /f "tokens=2-4 delims=:. " %%a in ('ffmpeg -i "temp.mp3" 2^>^&1 ^| find "Duration:"') do (
- call :Time2SS %%a %%b %%c
- )
- set /a SegTime=SS/SplitCount+1
- ffmpeg -i "temp.mp3" -f segment -segment_time !SegTime! -c copy "%%~ni_%%03d.mp3"
- )
- goto :eof
-
- :Time2SS
- set /a HH=1%1-100
- set /a MM=1%2-100
- set /a SS=1%3-100
- set /a HH2MM=HH*60
- set /a MM+=HH2MM
- set /a MM2SS=MM*60
- set /a SS+=MM2SS
- goto :eof
复制代码
作者: tmp05 时间: 2022-5-31 10:58
回复 15# Batcher
是否将SplitCount=3改为SplitCount=4就是四等分?谢谢!
作者: Batcher 时间: 2022-5-31 11:16
回复 16# tmp05
请亲自尝试一下吧,如果有问题的话咱们再继续研究。
作者: tmp05 时间: 2022-6-2 09:10
回复 17# Batcher
谢谢回复!
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |