FFprobe 在对音频 MAX_level 统计数据使用 -show_entries 时更改 FPS
FFprobe change FPS when using -show_entries for audio MAX_level stats
我正在使用 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 此帧)
您可以看到 MAX_level(第 2 列)值每 0,026122
秒生成一次。所以,如果你计算所有帧数 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 命令来获得正确的结果。
提前致谢
使用 asetnsamples 将 1 秒的媒体内容合并为 1 帧。
ffprobe -f lavfi -i amovie=my_audio_file.mp3,asetnsamples=44100,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
将 asetnsamples 值设置为输入的采样率。
我正在使用 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 此帧)
您可以看到 MAX_level(第 2 列)值每 0,026122
秒生成一次。所以,如果你计算所有帧数 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 命令来获得正确的结果。
提前致谢
使用 asetnsamples 将 1 秒的媒体内容合并为 1 帧。
ffprobe -f lavfi -i amovie=my_audio_file.mp3,asetnsamples=44100,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
将 asetnsamples 值设置为输入的采样率。