GES is not rotating a *.mov file which is tagged for rotation

David Ing ding at panopto.com
Thu Jun 6 00:32:27 UTC 2019


I was using 1.14.4 ... I will try to upgrade to 1.16.

Just to be clear:  I am relying on the Windows build for 1.16.  Is this
change part of the published 1.16 build for windows?

https://gstreamer.freedesktop.org/data/pkg/windows/1.16.0/


On Wed, Jun 5, 2019 at 3:38 PM Thibault Saunier <tsaunier at gnome.org> wrote:

> I actually just checked with your file and with 1.16 (which is the version
> where that feature was introduced) and
>
>   ges-launch-1.0 +clip file:///home/thiblahute/Downloads/rotate-180.mov
>
> works just fine and rotation is applied as required.
>
> On Wed, Jun 5, 2019 at 6:35 PM Mathieu Duponchelle <
> mathieu at centricular.com> wrote:
>
>> Hah, nice !
>>
>> On 6/6/19 12:34 AM, Thibault Saunier wrote:
>>
>> GES should do it automatically since
>> https://gitlab.freedesktop.org/gstreamer/gst-editing-services/commit/77dac21488f2217c9fc0cb7a7bfba1f5c0ef8789
>> can check if that works:
>>
>> gst-launch-1.0 uridecodebin uri=file://your/file.move ! videoflip !
>> video-direction=auto ! videoconvert ! autovideosink
>>
>> Regards,
>>
>> Thibault
>>
>> On Wed, Jun 5, 2019 at 6:30 PM Mathieu Duponchelle <
>> mathieu at centricular.com> wrote:
>>
>>> GES itself will not do that, as a standard GES source only uses
>>> uridecodebin. The way image-orientation
>>> works is that the demuxer (qtdemux here) will parse the tag and forward
>>> it downstream. Other elements
>>> such as videoflip can then use it to actually perform the rotation. See
>>> the difference in behaviour between
>>> the following pipelines:
>>>
>>> gst-launch-1.0 uridecodebin uri=
>>> file:///home/meh/Downloads/rotate-180.mov ! xvimagesink
>>> gst-launch-1.0 uridecodebin uri=
>>> file:///home/meh/Downloads/rotate-180.mov ! videoflip
>>> video-direction=auto ! xvimagesink
>>>
>>> It could be argued that GES should always add a videoflip element with
>>> video-direction=auto, but for now
>>> you can probably add videoflip as an effect :)
>>>
>>> On 6/5/19 11:24 PM, David Ing wrote:
>>>
>>> Also, here is the output of gst-discoverer-1.0 --verbose
>>>
>>> I highlighted the relevant section which is image orientation:
>>> rotate-180.
>>>
>>> $ gst-discoverer-1.0 --verbose rotate-180.mov
>>> Analyzing file:///C:/Users/ding/Desktop/rotate-180.mov
>>> Done discovering file:///C:/Users/ding/Desktop/rotate-180.mov
>>>
>>> Topology:
>>>   container: video/quicktime
>>>     audio: audio/mpeg, mpegversion=(int)4, framed=(boolean)true,
>>> stream-format=(string)raw, level=(string)2, base-profile=(string)lc,
>>> profile=(string)lc, codec_data=(buffer)1208, rate=(int)44100,
>>> channels=(int)1
>>>       Tags:
>>>         audio codec: MPEG-4 AAC audio
>>>         maximum bitrate: 64000
>>>         bitrate: 64000
>>>         datetime: 2016-03-14T08:26:08Z
>>>         QT atom: buffer of 34 bytes
>>>         container format: Quicktime
>>>
>>>       Codec:
>>>         audio/mpeg, mpegversion=(int)4, framed=(boolean)true,
>>> stream-format=(string)raw, level=(string)2, base-profile=(string)lc,
>>> profile=(string)lc, codec_data=(buffer)1208, rate=(int)44100,
>>> channels=(int)1
>>>       Additional info:
>>>         None
>>>       Stream ID:
>>> a2bd37016805819d7874188ad12d70943361aa53b0c7253a2b9813b7f8ab3cb5/002
>>>       Language: <unknown>
>>>       Channels: 1 (unknown layout)
>>>       Sample rate: 44100
>>>       Depth: 32
>>>       Bitrate: 64000
>>>       Max bitrate: 64000
>>>     video: video/x-h264, stream-format=(string)avc,
>>> alignment=(string)au, level=(string)4.1, profile=(string)high,
>>> codec_data=(buffer)01640029ffe1001067640029ac5680780227e59a8080808101000528ee04f2c0,
>>> width=(int)1920, height=(int)1080, framerate=(fraction)24/1,
>>> pixel-aspect-ratio=(fraction)1/1, colorimetry=(string)bt709,
>>> interlace-mode=(string)progressive, chroma-format=(string)4:2:0,
>>> bit-depth-luma=(uint)8, bit-depth-chroma=(uint)8, parsed=(boolean)true
>>>       Tags:
>>>         image orientation: rotate-180
>>>         video codec: H.264 / AVC
>>>         bitrate: 17149794
>>>         datetime: 2016-03-14T08:26:08Z
>>>         QT atom: buffer of 34 bytes
>>>         container format: Quicktime
>>>
>>>       Codec:
>>>         video/x-h264, stream-format=(string)avc, alignment=(string)au,
>>> level=(string)4.1, profile=(string)high,
>>> codec_data=(buffer)01640029ffe1001067640029ac5680780227e59a8080808101000528ee04f2c0,
>>> width=(int)1920, height=(int)1080, framerate=(fraction)24/1,
>>> pixel-aspect-ratio=(fraction)1/1, colorimetry=(string)bt709,
>>> interlace-mode=(string)progressive, chroma-format=(string)4:2:0,
>>> bit-depth-luma=(uint)8, bit-depth-chroma=(uint)8, parsed=(boolean)true
>>>       Additional info:
>>>         None
>>>       Stream ID:
>>> a2bd37016805819d7874188ad12d70943361aa53b0c7253a2b9813b7f8ab3cb5/001
>>>       Width: 1920
>>>       Height: 1080
>>>       Depth: 24
>>>       Frame rate: 24/1
>>>       Pixel aspect ratio: 1/1
>>>       Interlaced: false
>>>       Bitrate: 17149794
>>>       Max bitrate: 0
>>>
>>> Properties:
>>>   Duration: 0:00:10.955000000
>>>   Seekable: yes
>>>   Live: no
>>>   Tags:
>>>       audio codec: MPEG-4 AAC audio
>>>       maximum bitrate: 64000
>>>       bitrate: 64000
>>>       datetime: 2016-03-14T08:26:08Z
>>>       QT atom: buffer of 34 bytes
>>>       container format: Quicktime
>>>       image orientation: rotate-180
>>>       video codec: H.264 / AVC
>>>
>>> WARNING: no real random source present!
>>>
>>> On Wed, Jun 5, 2019 at 12:51 PM David Ing <ding at panopto.com> wrote:
>>>
>>>> I have an old *.mov file ...
>>>>
>>>>
>>>> https://drive.google.com/file/d/1qNm2ISC5qnI3VN0MwemCcb_QjweJAjYF/view?usp=sharing
>>>>
>>>> ... which is tagged in a way that indicates it should be rotated when
>>>> it is displayed.  Below (at end of this message) is an excerpt from an
>>>> ffprobe command which demonstrates the how the file is tagged (I
>>>> highlighted the relevant output).
>>>>
>>>> I am using the file as a GESUriClip inside of a GESTimeline, and the
>>>> rotation is not being applied.  It comes through upside-down.
>>>>
>>>> *My question is*:  Is this a bug?  Or am I expected to detect the tags
>>>> manually and then modify the "video-direction" property of GESVideoSource
>>>> myself?
>>>>
>>>> ---------------------------------
>>>> $ *ffprobe -v quiet -show_streams rotate-180.mov*
>>>> [STREAM]
>>>> index=0
>>>> codec_name=h264
>>>> codec_long_name=H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10
>>>> profile=High
>>>> codec_type=video
>>>> codec_time_base=2191/105200
>>>> codec_tag_string=avc1
>>>> codec_tag=0x31637661
>>>> width=1920
>>>> height=1080
>>>> coded_width=1920
>>>> coded_height=1088
>>>> has_b_frames=0
>>>> sample_aspect_ratio=N/A
>>>> display_aspect_ratio=N/A
>>>> pix_fmt=yuv420p
>>>> level=41
>>>> color_range=tv
>>>> color_space=bt709
>>>> color_transfer=bt709
>>>> color_primaries=bt709
>>>> chroma_location=left
>>>> field_order=unknown
>>>> timecode=N/A
>>>> refs=1
>>>> is_avc=true
>>>> nal_length_size=4
>>>> id=N/A
>>>> r_frame_rate=24/1
>>>> avg_frame_rate=52600/2191
>>>> time_base=1/600
>>>> start_pts=0
>>>> start_time=0.000000
>>>> duration_ts=6573
>>>> duration=10.955000
>>>> bit_rate=17150952
>>>> max_bit_rate=N/A
>>>> bits_per_raw_sample=8
>>>> nb_frames=263
>>>> nb_read_frames=N/A
>>>> nb_read_packets=N/A
>>>> DISPOSITION:default=1
>>>> DISPOSITION:dub=0
>>>> DISPOSITION:original=0
>>>> DISPOSITION:comment=0
>>>> DISPOSITION:lyrics=0
>>>> DISPOSITION:karaoke=0
>>>> DISPOSITION:forced=0
>>>> DISPOSITION:hearing_impaired=0
>>>> DISPOSITION:visual_impaired=0
>>>> DISPOSITION:clean_effects=0
>>>> DISPOSITION:attached_pic=0
>>>> DISPOSITION:timed_thumbnails=0
>>>> TAG:rotate=180
>>>> TAG:creation_time=2016-03-14T08:26:08.000000Z
>>>> TAG:language=und
>>>> TAG:handler_name=Core Media Video
>>>> TAG:encoder=H.264
>>>> [SIDE_DATA]
>>>> side_data_type=Display Matrix
>>>> displaymatrix=
>>>> 00000000:       -65536           0           0
>>>> 00000001:            0      -65536           0
>>>> 00000002:    125829120    70778880  1073741824
>>>>
>>>> rotation=-180
>>>> [/SIDE_DATA]
>>>> [/STREAM]
>>>>
>>>
>>> _______________________________________________
>>> gstreamer-devel mailing listgstreamer-devel at lists.freedesktop.orghttps://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
>>>
>>>
>>> _______________________________________________
>>> gstreamer-devel mailing list
>>> gstreamer-devel at lists.freedesktop.org
>>> https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
>>
>>
>> _______________________________________________
>> gstreamer-devel mailing listgstreamer-devel at lists.freedesktop.orghttps://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
>>
>>
>>
>> _______________________________________________
>> gstreamer-devel mailing list
>> gstreamer-devel at lists.freedesktop.org
>> https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
>
> _______________________________________________
> gstreamer-devel mailing list
> gstreamer-devel at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/gstreamer-devel/attachments/20190605/604d698e/attachment-0001.html>


More information about the gstreamer-devel mailing list