Gstreamer标记注入管道不工作

Gstreamer标记注入管道不工作,gstreamer,Gstreamer,我正在尝试构建一个管道,该管道将读取任何文件(mp3、ogg、flac等),并使用taginject元素更新其标记,但它不起作用 以下是我的尝试: gst-launch-1.0 filesrc location=file.mp3!德克宾!taginject tags=“title=bla,artist=blub”!filesink location=output_file.mp3 结果:管道运行,但它从4mb文件创建了一个50mb文件,并且该大文件不可播放(可能也不包含标记) gst-launc

我正在尝试构建一个管道,该管道将读取任何文件(mp3、ogg、flac等),并使用
taginject
元素更新其标记,但它不起作用

以下是我的尝试:

gst-launch-1.0 filesrc location=file.mp3!德克宾!taginject tags=“title=bla,artist=blub”!filesink location=output_file.mp3

结果:管道运行,但它从4mb文件创建了一个50mb文件,并且该大文件不可播放(可能也不包含标记)

gst-launch-1.0 filesrc location=file.mp3!taginject tags=“title=test,artist=blub”!filesink location=output_file.mp3

结果:管道运行并创建可播放的输出文件,但不包含任何标记

gst-launch-1.0 filesrc location=file.mp3!德克宾!taginject tags=“title=test,artist=blub”!编码箱!filesink location=output_file.mp3

结果:管道未运行。它说taginject不能与encodebin链接


如果您能在这方面提供帮助,我将不胜感激。我只是不知道我做错了什么(可能使用了错误的元素…但我无法找到正确的元素)

您需要在taginject之后添加一个muxer,例如:

gst-launch-1.0 filesrc location=file.mp3 ! parsebin ! \
taginject tags="title=bla,artist=blub" ! id3v2mux ! \
filesink location=output_file.mp3
使用parsebin也可以避免解码。

找到了(简单)解决方案:gst-launch-1.0 filesrc location=file.mp3!id3demux!taginject tags=“title=bla,artist=blub,album=blablub”!id3mux!filesink location=output_file.mp3