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

Thibault Saunier tsaunier at gnome.org
Thu Jun 6 01:08:33 UTC 2019


On Wed, Jun 5, 2019 at 8:32 PM David Ing <ding at panopto.com> wrote:

> 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/
>
>
Yes.



> 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
>
> _______________________________________________
> 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/98d9f4a7/attachment-0001.html>


More information about the gstreamer-devel mailing list