我试图构建一个管道,它将读取任何文件(mp3,ogg,flac等)并使用taginject
元素更新其标签,但它无效。
以下是我的尝试:
gst-launch-1.0 filesrc location=file.mp3 ! decodebin ! 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 ! decodebin ! taginject tags="title=test,artist=blub" ! encodebin ! filesink location=output_file.mp3
结果:管道未运行。它说taginject不能与encodebin链接。
我很感激任何帮助,我只是不知道我做错了什么(可能使用了错误的元素......但我找不到哪些是正确的)
答案 0 :(得分:0)
您需要在taginject之后添加一个多路复用器,例如:类似的东西:
gst-launch-1.0 filesrc location=file.mp3 ! parsebin ! \
taginject tags="title=bla,artist=blub" ! id3v2mux ! \
filesink location=output_file.mp3
同样使用parsebin可以避免解码。