batch-file - 使用 Windows Batch 从输出中检索信息
问题描述
我想得到这个 FFmpeg 输出:
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'D:\Videos\youtube.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
encoder : Lavf57.28.100
Duration: 00:27:58.85, start: 0.000000, bitrate: 12157 kb/s
Stream #0:0(eng): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], 12024 kb/s, 23.98 fps, 23.98 tbr, 11988 tbn, 47.95 tbc (default)
Metadata:
handler_name : VideoHandler
Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 129 kb/s (default)
Metadata:
handler_name : SoundHandler
Stream mapping:
Stream #0:0 -> #0:0 (h264 (native) -> hevc (libx265))
Stream #0:1 -> #0:1 (copy)
Press [q] to stop, [?] for help
Output #0, matroska, to 'D:\Videos\youtube.mkv':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
encoder : Lavf57.83.100
Stream #0:0(eng): Video: hevc (libx265), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], q=2-31, 23.98 fps, 1k tbn, 23.98 tbc (default)
Metadata:
handler_name : VideoHandler
encoder : Lavc57.107.100 libx265
Stream #0:1(eng): Audio: aac (LC) ([255][0][0][0] / 0x00FF), 48000 Hz, stereo, fltp, 129 kb/s (default)
Metadata:
handler_name : SoundHandler
frame= 19 fps=0.0 q=-0.0 size= 3kB time=00:00:00.98 bitrate= 24.7kbits/s speed= 1.9x
frame= 26 fps= 25 q=-0.0 size= 3kB time=00:00:01.00 bitrate= 24.1kbits/s speed=0.972x
frame= 36 fps= 22 q=-0.0 size= 3kB time=00:00:01.47 bitrate= 16.4kbits/s speed=0.913x
frame= 48 fps= 22 q=-0.0 size= 3kB time=00:00:01.96 bitrate= 12.3kbits/s speed=0.895x
frame= 61 fps= 22 q=-0.0 size= 3kB time=00:00:02.94 bitrate= 8.2kbits/s speed=1.07x
frame= 79 fps= 24 q=-0.0 size= 3kB time=00:00:03.43 bitrate= 7.0kbits/s speed=1.05x
frame= 95 fps= 25 q=-0.0 size= 3kB time=00:00:04.41 bitrate= 5.5kbits/s speed=1.17x
frame= 107 fps= 25 q=-0.0 size= 3kB time=00:00:04.90 bitrate= 4.9kbits/s speed=1.14x
frame= 112 fps= 23 q=-0.0 size= 3kB time=00:00:04.90 bitrate= 4.9kbits/s speed=1.02x
frame= 121 fps= 23 q=-0.0 size= 3kB time=00:00:05.39 bitrate= 4.5kbits/s speed=1.01x
frame= 130 fps= 22 q=-0.0 size= 3kB time=00:00:05.88 bitrate= 4.1kbits/s speed=0.998x
frame= 136 fps= 21 q=-0.0 size= 2971kB time=00:00:05.88 bitrate=4133.5kbits/s speed=0.911x
frame= 142 fps= 20 q=-0.0 size= 2971kB time=00:00:06.37 bitrate=3815.4kbits/s speed=0.912x
frame= 147 fps= 20 q=-0.0 size= 2971kB time=00:00:06.37 bitrate=3815.4kbits/s speed=0.851x
frame= 154 fps= 19 q=-0.0 size= 2971kB time=00:00:06.86 bitrate=3543.2kbits/s speed=0.856x
frame= 160 fps= 19 q=-0.0 size= 2971kB time=00:00:07.36 bitrate=3306.8kbits/s speed=0.862x
frame= 168 fps= 18 q=-0.0 size= 2971kB time=00:00:07.36 bitrate=3306.8kbits/s speed=0.808x
frame= 177 fps= 18 q=-0.0 size= 2971kB time=00:00:07.85 bitrate=3100.0kbits/s speed=0.815x
frame= 190 fps= 19 q=-0.0 size= 2971kB time=00:00:08.32 bitrate=2925.3kbits/s speed=0.818x
frame= 191 fps= 18 q=-0.0 size= 2971kB time=00:00:08.32 bitrate=2925.3kbits/s speed=0.777x
frame= 201 fps= 18 q=-0.0 size= 2971kB time=00:00:08.76 bitrate=2775.8kbits/s speed=0.782x
frame= 212 fps= 18 q=-0.0 size= 2971kB time=00:00:09.23 bitrate=2634.9kbits/s speed=0.788x
frame= 220 fps= 18 q=-0.0 size= 2971kB time=00:00:09.68 bitrate=2513.0kbits/s speed=0.789x
frame= 231 fps= 18 q=-0.0 size= 2971kB time=00:00:09.98 bitrate=2437.7kbits/s speed=0.778x
frame= 240 fps= 17 q=-0.0 Lsize= 6190kB time=00:00:09.98 bitrate=5078.7kbits/s speed=0.726x
video:6018kB audio:164kB subtitle:0kB other streams:0kB global headers:2kB muxing overhead: 0.129100%
并将frame=
和fps=
值设置为变量。
我想这可以通过将其输出到文本文件(FFmpeg 将所有内容输出到 STDERR)并FOR
与标记和分隔符一起使用来实现,但是,正如您可能知道的那样,FFmpeg 实时输出该信息,这就是我卡住的地方。批处理是否需要分解成更小的文件并使用CALL
命令来获取信息(只是一个想法)?
我需要一些方法来定期检查带有 frame= 和 fps= 输出的行,将它们的值放入变量中,其余的我可能已经知道该怎么做了。
将这些转换为变量的目的是计算视频转换的百分比和 ETA。
提前致谢。
解决方案
推荐阅读
- javascript - NodeJS使用readline处理上传的文件
- reactjs - 如何知道使用 react-virtualized 实现自动跟随
- python - 如何在一定时间内将物体移动到特定位置?
- python-3.x - 子类的 __init__ 函数是否需要包含父类的 __init__ 函数中使用的所有参数?
- redirect - SSL 重定向和子域重定向
- angular - 在应用程序恢复事件上导航
- python - 在 Sklearn 管道中使用 VotingClassifier 和其他分类器
- jquery - 如何使用 ajax 检索远程 json 文件
- android - 安卓工作室上的安卓模拟器
- c# - 如何使用类作为属性