ffprobe - 如何从输出中省略流处置信息?

ffprobe - 如何从输出中省略流处置信息?

ffprobe- 对于给定的音频文件,我想要获取流信息(具体来说,采样率、持续时间、比特率、通道数)和所有元数据标签(例如 id3),但没有别的经过大量研究,我得出了以下 ffprobe 命令:

ffprobe -v error -show_streams -show_format -select_streams a:0 \
        -show_entries "stream=codec_name,bit_rate,channels,sample_rate :
                       format=duration" \
        -of default=noprint_wrappers=1 Song.mp3

使用此命令,您可以在 show_entries arg 值中看到,我只包括 codec_name、bit_rate、channels 和 sample_rate。

但是,输出(见下文)包含这个不需要的 DISPOSITION=xyz 废话,而我在“show_entries”参数中没有要求这个废话。哪组选项/参数会从我的输出中排除这个 DISPOSITION=xyz 内容?

我已经阅读过ffprobe 文档,但不太容易理解,而且找不到我想要的东西。

注意 - 我知道我可以将此命令输出通过管道传输到 grep -v,但这对我来说不是一个选项,因为我将在我的应用程序内将此命令作为子进程运行,并且需要它高效 - grep 意味着启动另一个进程...不是一个选项。

换句话说,我需要这样做ffprobe 和 ffprobe 仅限

codec_name=vorbis
sample_rate=44100
channels=2
bit_rate=240000
DISPOSITION:default=0       // DON'T WANT THIS :(
DISPOSITION:dub=0           // DON'T WANT THIS :(
...
DISPOSITION:timed_thumbnails=0       // DON'T WANT THIS :(
TAG:ALBUM=Healing Music for Reiki 1
TAG:ARTIST=Aeoliah
TAG:DATE=1995
TAG:FMPS_PLAYCOUNT=1
TAG:FMPS_RATING_AMAROK_SCORE=0.235
TAG:GENRE=New Age
TAG:TITLE=Souls In Ecstacy
TAG:track=2
duration=1682.506667

答案1

这是因为您-show_streams在那里有。此外,要显示标签,您不需要-show_format

使用

./ffprobe -v error -select_streams a:0
 -show_entries "stream=codec_name,bit_rate,channels,sample_rate : format=duration : format_tags : stream_tags"
 -of default=noprint_wrappers=1 Song.mp3

相关内容