2017-04-09 1 views
0

Je tente de construire un pipeline qui va lire n'importe quel fichier (mp3, ogg, flac, etc.) et met à jour ses balises en utilisant l'élément taginject, mais cela ne fonctionne pas.Le pipeline taginject Gstreamer ne fonctionne pas

Voici mes tentatives:

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

Résultat: Le Pipeline court, mais il crée un fichier de 50 Mo à partir d'un fichier de 4 Mo, et que grand fichier ne peut être lu (et probablement ne contenant pas de balises, aussi).

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

Résultat: Le pipeline court et crée un fichier de sortie jouable, mais il ne contient pas de tags.

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

Résultat: Le pipeline ne fonctionne pas. Il dit taginject ne peut pas être lié avec encodebin.

Je vous serais reconnaissant toute aide à ce sujet, je ne ne sais pas ce que je fais mal (en utilisant probablement les mauvais éléments ... mais je ne peux pas trouver qui sont les bons)

+0

J'ai trouvé la solution (simple): gst-launch-1.0 filesrc location = fichier.mp3! id3demux! taginject tags = "titre = bla, artiste = blub, album = blablub"! id3mux! emplacement de fichier = output_file.mp3 – tagelicht

Répondre

0

Vous devez ajouter un muxer après taginject, par exemple quelque chose comme:

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

L'utilisation de parsebin évite également le décodage.