diff two vids

classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|

diff two vids

Carl Karsten-2

I encoded a 26min movie v1.mp4. Then I cut out 1 min from 9:00 to 10:00 and added fad out/in and encoded to v2.mp4

Now I have AV sync problems that I can see at 7:00 I was doing some other work and noticed the video hiccup a little: it paused then jumped and was back in sync.

To try and narrow down where the problem is, I’d like to compare v1/v2 frame by frame and look for differences. There shouldn’t be any until the fade at 9:00.

Which is why I am trying this, but stuck on an error:

$ gst-launch-1.0 -e \
>     filesrc location=v1.mp4 ! qtdemux ! decodebin ! \
>         video/x-raw, format=RGBA ! videoconvert ! mix. \
>     filesrc location=v2.mp4 ! qtdemux ! decodebin ! \
>         video/x-raw, format=RGBA ! videoconvert ! mix. \
>  frei0r-mixer-difference name=mix ! \
> fakesink

Setting pipeline to PAUSED ... Pipeline is PREROLLING ... Redistribute latency... Redistribute latency... Redistribute latency... ERROR: from element /GstPipeline:pipeline0/GstQTDemux:qtdemux1: Internal data stream error. Additional debug info: qtdemux.c(5850): gst_qtdemux_loop (): /GstPipeline:pipeline0/GstQTDemux:qtdemux1: streaming stopped, reason not-negotiated (-4) ERROR: pipeline doesn't want to preroll. Setting pipeline to NULL ... Freeing pipeline ...


--
Carl K

_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: diff two vids

Mathieu Duponchelle
You're trying to force the output of decodebin to have a specific pixel format, before any video conversion
can take place, that's probably your issue here :)

On 8/28/19 7:43 PM, Carl Karsten wrote:

I encoded a 26min movie v1.mp4. Then I cut out 1 min from 9:00 to 10:00 and added fad out/in and encoded to v2.mp4

Now I have AV sync problems that I can see at 7:00 I was doing some other work and noticed the video hiccup a little: it paused then jumped and was back in sync.

To try and narrow down where the problem is, I’d like to compare v1/v2 frame by frame and look for differences. There shouldn’t be any until the fade at 9:00.

Which is why I am trying this, but stuck on an error:

$ gst-launch-1.0 -e \
>     filesrc location=v1.mp4 ! qtdemux ! decodebin ! \
>         video/x-raw, format=RGBA ! videoconvert ! mix. \
>     filesrc location=v2.mp4 ! qtdemux ! decodebin ! \
>         video/x-raw, format=RGBA ! videoconvert ! mix. \
>  frei0r-mixer-difference name=mix ! \
> fakesink

Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
Redistribute latency...
Redistribute latency...
Redistribute latency...
ERROR: from element /GstPipeline:pipeline0/GstQTDemux:qtdemux1: Internal data stream error.
Additional debug info:
qtdemux.c(5850): gst_qtdemux_loop (): /GstPipeline:pipeline0/GstQTDemux:qtdemux1:
streaming stopped, reason not-negotiated (-4)
ERROR: pipeline doesn't want to preroll.
Setting pipeline to NULL ...
Freeing pipeline ...


--
Carl K

_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel

_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: diff two vids

Carl Karsten-2
In reply to this post by Carl Karsten-2
gst-launch-1.0 -e \
    filesrc location=v1.mp4 ! qtdemux ! decodebin ! \
    filesrc location=v2.mp4 ! qtdemux ! decodebin ! \
 frei0r-mixer-difference name=mix ! \
fakesink

Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
Redistribute latency...
Redistribute latency...
Redistribute latency...
ERROR: from element /GstPipeline:pipeline0/GstQTDemux:qtdemux1: Internal data stream error.
Additional debug info:
qtdemux.c(6073): gst_qtdemux_loop (): /GstPipeline:pipeline0/GstQTDemux:qtdemux1:
streaming stopped, reason not-negotiated (-4)
ERROR: pipeline doesn't want to preroll.
Setting pipeline to NULL ...
Freeing pipeline ...

This works:
gst-launch-1.0 -e     filesrc location=v1.mp4 ! qtdemux ! decodebin ! fakesink





On Wed, Aug 28, 2019 at 12:43 PM Carl Karsten <[hidden email]> wrote:

I encoded a 26min movie v1.mp4. Then I cut out 1 min from 9:00 to 10:00 and added fad out/in and encoded to v2.mp4

Now I have AV sync problems that I can see at 7:00 I was doing some other work and noticed the video hiccup a little: it paused then jumped and was back in sync.

To try and narrow down where the problem is, I’d like to compare v1/v2 frame by frame and look for differences. There shouldn’t be any until the fade at 9:00.

Which is why I am trying this, but stuck on an error:

$ gst-launch-1.0 -e \
>     filesrc location=v1.mp4 ! qtdemux ! decodebin ! \
>         video/x-raw, format=RGBA ! videoconvert ! mix. \
>     filesrc location=v2.mp4 ! qtdemux ! decodebin ! \
>         video/x-raw, format=RGBA ! videoconvert ! mix. \
>  frei0r-mixer-difference name=mix ! \
> fakesink

Setting pipeline to PAUSED ... Pipeline is PREROLLING ... Redistribute latency... Redistribute latency... Redistribute latency... ERROR: from element /GstPipeline:pipeline0/GstQTDemux:qtdemux1: Internal data stream error. Additional debug info: qtdemux.c(5850): gst_qtdemux_loop (): /GstPipeline:pipeline0/GstQTDemux:qtdemux1: streaming stopped, reason not-negotiated (-4) ERROR: pipeline doesn't want to preroll. Setting pipeline to NULL ... Freeing pipeline ...


--
Carl K


--
Carl K

_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: diff two vids

Krzysztof Konopko-3
Hi Carl,

I was just curious what your pipeline does and the following did not have negotiation error:

gst-launch-1.0 -e \
     filesrc location=v1.mp4 ! qtdemux ! decodebin ! \
         videoconvert ! mix. \
     filesrc location=v2.mp4 ! qtdemux ! decodebin ! \
         videoconvert ! mix. \
  frei0r-mixer-difference name=mix ! \
 fakesink

ie. no caps enforced in the pipeline explicitly and 'videoconvert' negotiating the best common format.

BTW, adding `--gst-debug=3` option showed me that (in my case at least) I420 was still used instead of RGBA.

Hope this helps,
Kris

On Sun, 2019-09-01 at 15:05 -0500, Carl Karsten wrote:
gst-launch-1.0 -e \
    filesrc location=v1.mp4 ! qtdemux ! decodebin ! \
    filesrc location=v2.mp4 ! qtdemux ! decodebin ! \
 frei0r-mixer-difference name=mix ! \
fakesink

Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
Redistribute latency...
Redistribute latency...
Redistribute latency...
ERROR: from element /GstPipeline:pipeline0/GstQTDemux:qtdemux1: Internal data stream error.
Additional debug info:
qtdemux.c(6073): gst_qtdemux_loop (): /GstPipeline:pipeline0/GstQTDemux:qtdemux1:
streaming stopped, reason not-negotiated (-4)
ERROR: pipeline doesn't want to preroll.
Setting pipeline to NULL ...
Freeing pipeline ...

This works:
gst-launch-1.0 -e     filesrc location=v1.mp4 ! qtdemux ! decodebin ! fakesink





On Wed, Aug 28, 2019 at 12:43 PM Carl Karsten <[hidden email]> wrote:

I encoded a 26min movie v1.mp4. Then I cut out 1 min from 9:00 to 10:00 and added fad out/in and encoded to v2.mp4

Now I have AV sync problems that I can see at 7:00 I was doing some other work and noticed the video hiccup a little: it paused then jumped and was back in sync.

To try and narrow down where the problem is, I’d like to compare v1/v2 frame by frame and look for differences. There shouldn’t be any until the fade at 9:00.

Which is why I am trying this, but stuck on an error:

$ gst-launch-1.0 -e \
>     filesrc location=v1.mp4 ! qtdemux ! decodebin ! \
>         video/x-raw, format=RGBA ! videoconvert ! mix. \
>     filesrc location=v2.mp4 ! qtdemux ! decodebin ! \
>         video/x-raw, format=RGBA ! videoconvert ! mix. \
>  frei0r-mixer-difference name=mix ! \
> fakesink


Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
Redistribute latency...
Redistribute latency...
Redistribute latency...
ERROR: from element /GstPipeline:pipeline0/GstQTDemux:qtdemux1: Internal data stream error.
Additional debug info:
qtdemux.c(5850): gst_qtdemux_loop (): /GstPipeline:pipeline0/GstQTDemux:qtdemux1:
streaming stopped, reason not-negotiated (-4)
ERROR: pipeline doesn't want to preroll.
Setting pipeline to NULL ...
Freeing pipeline ...


--
Carl K


_______________________________________________
gstreamer-devel mailing list
[hidden email]

https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel

_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: diff two vids

Carl Karsten-2
Thanks for the tip on videoconvert being common.   I always flounder on what to try first.

I'm making progress - no errors with fakesink and xvimagesink

now to write a file.

I should care about this?

(gst-launch-1.0:3996): GStreamer-CRITICAL **: 15:04:04.049: gst_segment_to_running_time: assertion 'segment->format == format' failed

gst-launch-1.0 -e \
    filesrc location=v1.mp4 ! qtdemux ! decodebin ! videoconvert ! mix. \
    filesrc location=v2.mp4 ! qtdemux ! decodebin ! videoconvert ! mix. \
 frei0r-mixer-difference name=mix ! \
 videoconvert ! \
 avenc_mpeg2video ! mpegtsmux ! filesink location=diff.mp4

same with   x264enc


On Mon, Sep 2, 2019 at 5:17 AM Krzysztof Konopko <[hidden email]> wrote:
Hi Carl,

I was just curious what your pipeline does and the following did not have negotiation error:

gst-launch-1.0 -e \
     filesrc location=v1.mp4 ! qtdemux ! decodebin ! \
         videoconvert ! mix. \
     filesrc location=v2.mp4 ! qtdemux ! decodebin ! \
         videoconvert ! mix. \
  frei0r-mixer-difference name=mix ! \
 fakesink

ie. no caps enforced in the pipeline explicitly and 'videoconvert' negotiating the best common format.

BTW, adding `--gst-debug=3` option showed me that (in my case at least) I420 was still used instead of RGBA.

Hope this helps,
Kris

On Sun, 2019-09-01 at 15:05 -0500, Carl Karsten wrote:
gst-launch-1.0 -e \
    filesrc location=v1.mp4 ! qtdemux ! decodebin ! \
    filesrc location=v2.mp4 ! qtdemux ! decodebin ! \
 frei0r-mixer-difference name=mix ! \
fakesink

Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
Redistribute latency...
Redistribute latency...
Redistribute latency...
ERROR: from element /GstPipeline:pipeline0/GstQTDemux:qtdemux1: Internal data stream error.
Additional debug info:
qtdemux.c(6073): gst_qtdemux_loop (): /GstPipeline:pipeline0/GstQTDemux:qtdemux1:
streaming stopped, reason not-negotiated (-4)
ERROR: pipeline doesn't want to preroll.
Setting pipeline to NULL ...
Freeing pipeline ...

This works:
gst-launch-1.0 -e     filesrc location=v1.mp4 ! qtdemux ! decodebin ! fakesink





On Wed, Aug 28, 2019 at 12:43 PM Carl Karsten <[hidden email]> wrote:

I encoded a 26min movie v1.mp4. Then I cut out 1 min from 9:00 to 10:00 and added fad out/in and encoded to v2.mp4

Now I have AV sync problems that I can see at 7:00 I was doing some other work and noticed the video hiccup a little: it paused then jumped and was back in sync.

To try and narrow down where the problem is, I’d like to compare v1/v2 frame by frame and look for differences. There shouldn’t be any until the fade at 9:00.

Which is why I am trying this, but stuck on an error:

$ gst-launch-1.0 -e \
>     filesrc location=v1.mp4 ! qtdemux ! decodebin ! \
>         video/x-raw, format=RGBA ! videoconvert ! mix. \
>     filesrc location=v2.mp4 ! qtdemux ! decodebin ! \
>         video/x-raw, format=RGBA ! videoconvert ! mix. \
>  frei0r-mixer-difference name=mix ! \
> fakesink


Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
Redistribute latency...
Redistribute latency...
Redistribute latency...
ERROR: from element /GstPipeline:pipeline0/GstQTDemux:qtdemux1: Internal data stream error.
Additional debug info:
qtdemux.c(5850): gst_qtdemux_loop (): /GstPipeline:pipeline0/GstQTDemux:qtdemux1:
streaming stopped, reason not-negotiated (-4)
ERROR: pipeline doesn't want to preroll.
Setting pipeline to NULL ...
Freeing pipeline ...


--
Carl K


_______________________________________________
gstreamer-devel mailing list
[hidden email]

https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel


--
Carl K

_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel