【问题标题】:FFprobe change FPS when using -show_entries for audio MAX_level stats使用 -show_entries 获取音频 MAX_level 统计信息时,FFprobe 会更改 FPS
【发布时间】: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


    【解决方案1】:

    使用 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 值设置为输入的采样率。

    【讨论】:

      猜你喜欢
      • 2015-03-03
      • 2012-04-11
      • 1970-01-01
      • 1970-01-01
      • 2012-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多