【发布时间】:2020-08-14 16:48:04
【问题描述】:
我正在使用 FFprobe 从音频中获取 MAX_level 统计信息。
问题
这个 ffprobe 命令使用 my_audio_file.mp3 作为输入文件来为每一帧生成 MAX_level。
ffprobe -f lavfi -i amovie=my_audio_file.mp3,astats=metadata=1:reset=1 -show_entries frame=pkt_pts_time:frame_tags=lavfi.astats.Overall.MAX_level -of csv=p=0 1> my_output_log.txt
当我执行它时,我会生成 my_output_log.txt 文件,其中包含 csv 格式的帧时间和此帧的 MAX_level 值。 (1 列 - 帧时间 | 2 列 - 此帧的 MAX_level)
您可以看到每0,026122 秒生成一次 MAX_level(第 2 列)值。因此,如果将所有帧数为 0 秒,则得到 39 帧。输入文件持续时间 = 3m 20s,然后我得到具有 +-8000 MAX_level 值的输出文件,但我只需要 200 个 MAX_level 值。
0.000000,0.000000
0.026122,0.000000
0.052245,0.000000
0.078367,0.000000
0.104490,0.000000
0.130612,0.000000
0.156735,0.000000
0.182857,0.000000
0.208980,0.000000
0.235102,1.000000
0.261224,5792.000000
0.287347,9111.000000
0.313469,9847.000000
0.339592,9208.000000
0.365714,8498.000000
0.391837,9649.000000
0.417959,12201.000000
0.444082,11763.000000
0.470204,9013.000000
0.496327,9048.000000
0.522449,8826.000000
0.548571,9932.000000
0.574694,9382.000000
0.600816,9013.000000
0.626939,8052.000000
0.653061,8317.000000
0.679184,5445.000000
0.705306,6925.000000
0.731429,7136.000000
0.757551,7029.000000
0.783673,7610.000000
0.809796,9199.000000
0.835918,8443.000000
0.862041,7847.000000
0.888163,6878.000000
0.914286,7385.000000
0.940408,9294.000000
0.966531,8105.000000
0.992653,8620.000000
1.018776,7286.000000
<38 frames>
2.011429,4573.000000
2.037551,5155.000000
2.063673,4527.000000
<etc>
我想每秒生成一帧来优化这个过程,
因为我在 android 设备上执行了这个命令,它生成了 17 秒。
输出应该是这样的:
0.000000,0.000000
1.018776,7286.000000
2.011429,4573.000000
3.004082,9935.000000
4.022857,6132.000000
<frame per second>
200.012457,1002.000000
问题
如何将 FPS 更改为 1 以获得每秒的 MAX_level 值?您可以修改或使用其他 ffprobe 命令来获得正确的结果。
提前谢谢
【问题讨论】:
标签: android ffmpeg frame-rate frames ffprobe