Gstreamer taginject 管道不起作用

Gstreamer taginject pipeline doesnt work

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

这是我的尝试:

gst-launch-1.0 filesrc location=file.mp3 ! decodebin ! taginject tags="title=bla,artist=blub" ! filesink location=output_file.mp3

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

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

结果:管道 运行s 并创建了一个可播放的输出文件,但它不包含标签。

gst-launch-1.0 filesrc location=file.mp3 ! decodebin ! taginject tags="title=test,artist=blub" ! encodebin ! 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 避免解码。