J'ai écrit un filtre push en direct qui obtient un flux mpeg-ts contenant de la vidéo h.264 et de l'audio aac. J'ai mis en place un pipeline DirectShow et configurer les broches de sortie. Je peux rendre le flux h.264 mais je reçois des artefacts dans le rendu comme on peut le voir sur cette capture d'écran lors de la diffusion depuis gstreamer en utilisant un videotestsrc et le motif "ball". Cette capture d'écran ne doit contenir qu'un seul point blanc sur fond noir. Les deux supplémentaires sont des "restes" qui apparaissent lors de la lecture de l'animation.Pourquoi ai-je ces artefacts lors de l'utilisation du démultiplexeur Microsoft MPEG-TS et du décodeur H.264 sur un flux MPEG-TS H.264?
Si je diffuse le flux MPEG-2 et change le pipeline en conséquence, le motif s'affiche sans erreur. J'ai essayé d'utiliser les paramètres décrits on msdn pour configurer la broche, à la fois en utilisant H264 et AVC1 fournissant explicitement l'en-tête de séquence et ainsi de suite. Je reçois toujours le même genre d'artefacts. Une chose intéressante est que les artefacts apparaissent principalement à la même fréquence que les I-Frames arrivent, et si nous envoyons seulement des I-Frames (key-int-max = 1), les artefacts disparaissent complètement. De même, les erreurs semblent apparaître dans la moitié supérieure de l'image lorsque l'intervalle I-Frame est de 60, c'est-à-dire toutes les 2 secondes. Lorsque nous passons à une image I chaque seconde image (key-int-max = 2), les artefacts apparaissent uniquement dans une bande étroite en haut de l'image.
Le pipeline GStreamer suivant produit le flux vidéo:
videotestsrc live-source=true pattern=ball ! video/x-raw-yuv,format=(fourcc)I420,width=1366,height=768,framerate=30/1 ! timeoverlay halign=left valign=bottom shaded-background=true ! x264enc bitrate=4096 tune=zerolatency ! h264parse ! queue ! mux. audiotestsrc wave=ticks volume=0.2 ! voaacenc ! mux. mpegtsmux name=mux ! udpsink host=<ip> port=<port>
C'est ce que le pipeline ressemble:
La configuration dans cet exemple est majortype = MEDIATYPE_Video, sous-type = MEDIASUBTYPE_H264, FormatType = FORMAT_MPEG2Vidéo. Aucun entête de séquence spécifiquement fourni, etc.
Donc la question est, sont ces sortes d'artefacts symptômes d'un problème de configuration commun?