2014-11-05 83 views
0

我有一个叫ffprobe.log该文件包含这样的文字:计算数量

ffprobe version N-63113-g72dcd48 Copyright (c) 2007-2014 the FFmpeg developers 

Duration: 00:00:35.37, start: 0.000000, bitrate: 60268 kb/s 

我应该做这个操作:

1)isulate的从符号开始的持续时间值HH:MM:SS:毫秒:分钟:秒:毫秒

2)将整个值乘以25(视频pal模式),例如在这种情况下为35.37(秒) x 25(frames)== 884,25

3)向下取整= 884

4)把值884中的可变%number_Of_Frames_at_25fps%I

何可以做什么?非常感谢!

(NB:帧0 +帧1 +式2 + ...... + frame24 == 1秒)

+0

仅仅因为一些在命令行上运行或使用批处理文件或任何其他“包含文本的黑盒子”*不表示它是DOS! – 2014-11-05 15:27:32

回答

0

有了一些变化this,但同样的想法

@echo off 
    setlocal enableextensions disabledelayedexpansion 
    set "frameRate=25" 

    for /f "tokens=2" %%a in (' 
     type ffprobe.log ^| findstr /b /c:"Duration:" 
    ') do set "timecode=%%a" 
    set "timecode=:%timecode:.=:%" 

    for /f "tokens=1-4 delims=:," %%a in (
     "%timecode::0=: %"  
    ) do set /a "number_Of_Frames_at_%frameRate%fps=((%%a00)*3600 + (%%b00)*60 + (%%c00) + (%%d0)/10) * %frameRate%/100" 

    echo %number_Of_Frames_at_25fps% 
+0

请考虑只有一个名为duration.txt的.txt文件,其中包含:0:00:35.368667请你可以将唯一的例程转换为frame_number中的这个表示法吗? – user3572760 2014-11-05 16:38:11

+0

@ user3572760 remove'“tokens = 2”',改变''type ...^| | findstr ...'到文件名,将'(%% d0)/ 10'改成'(%% d0)/ 100000' – 2014-11-05 18:09:31