【问题标题】:How does one obtain the lavfi.aphasemeter.phase frame metadata in FFMPEG?如何获得 FFMPEG 中的 lavfi.aphasemeter.phase 帧元数据?
【发布时间】:2017-11-28 00:49:12
【问题描述】:

我正在尝试导出声音文件相位的数字表示。

FFMPEG 的相位计滤波器似乎适合计算这个数字;文档明确说:

过滤器还导出帧元数据 lavfi.aphasemeter.phase,它表示当前音频帧的平均相位。值在 [-1, 1] 范围内。 -1 表示左右声道完全异相,1 表示声道同相。

https://ffmpeg.org/ffmpeg-filters.html#aphasemeter

但是,我似乎无法弄清楚如何使用此过滤器来获取该数值。当我尝试各种命令时,我会收到各种错误消息。例如,ffmpeg -i input_file.wav -f aphasemeter.phase 说我需要一个输出,但 ffmpeg -i input_file.wav -f aphasemeter.phase output_file.txt 产生 is not a suitable output format \ output_file.txt: Invalid argument

我正在寻找 -1 到 1 的值;对此的图形表示——虽然看起来是该过滤器的主要观点——不是我想要的。

有什么想法吗?

如果重要的话,我正在使用 WSL,通过 apt-get 安装了 ffmpeg。

【问题讨论】:

    标签: ffmpeg phase


    【解决方案1】:

    可以使用 (a) 元数据过滤器访问和导出记录的元数据值。

    ffmpeg -i in.wav -af aphasemeter=video=0,ametadata=print:file=inwav-phase.txt -f null -
    

    文本文件将包含格式中的数据,

    ...
    frame:105  pts:107512  pts_time:2.23983
    lavfi.aphasemeter.phase=0.600750
    frame:106  pts:108536  pts_time:2.26117
    lavfi.aphasemeter.phase=0.554201
    ...
    

    【讨论】:

    • 要添加到这个出色答案的一条评论是,在 Windows 上,命令的文本文件部分中的路径信息 (...ametadata=print:file=c:\fake\path\inwav-例如phase.txt)会导致问题。但是,*nix 系统可以接受。
    • 你必须转义并引用路径:file='c\:\\fake\\path\\inwav-phase.txt'
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-02
    • 1970-01-01
    • 1970-01-01
    • 2020-04-29
    • 1970-01-01
    相关资源
    最近更新 更多