我的一个文件夹中有十个媒体文件。我想创建一个包含两列的文本文件 - 文件名及其持续时间(秒):
video1.mp4|300 seconds
video2.mp4|360 seconds
video3.mp4|420 seconds
...
audio10.wav|120 seconds
我在网上没有找到任何类似的问题,所以我不知道如何做到这一点......
枚举媒体文件并解析Duration:
输出中的行ffmpeg -i
:
@echo off
>output.txt (
for %%F in (*.mpg *.mp4 *.mkv *.avi *.m4a *.flac *.mp3 *.wav) do (
for /f "tokens=2-5 delims=:., " %%a in (
'ffmpeg -i "%%F" 2^>^&1 ^| find "Duration:"'
) do (
set /p =%%~nxF^|<nul
setlocal enableDelayedExpansion
set /a "duration=1%%a*3600 + 1%%b*60 + 1%%c - 366100"
echo !duration!.%%d seconds
endlocal
)
)
)
pause
With ffprobe
(ffmpeg 包的一部分)持续时间将具有微秒精度:
@echo off
>output.txt (
for %%F in (*.mpg *.mp4 *.mkv *.avi *.m4a *.flac *.mp3 *.wav) do (
for /f "tokens=2 delims==" %%a in (
'ffprobe "%%F" -show_entries format^=duration -v quiet -of compact'
) do (
echo %%~nxF^|%%a seconds
)
)
)
pause
或者,您可以使用快多了 MediaInfo CLI输出持续时间(以毫秒为单位):
>output.txt "C:\Program Files (x86)\MediaInfo\MediaInfoCLI.exe" ^
--output=General;%%FileName%%.%%FileExtension%%^|%%Duration%%\r\n ^
*.mpg *.mp4 *.mkv *.avi *.m4a *.flac *.mp3 *.wav
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)