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

Thibault Saunier tsaunier at gnome.org
Wed Jun 5 22:34:39 UTC 2019


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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/gstreamer-devel/attachments/20190605/9f0e3f54/attachment-0001.html>


More information about the gstreamer-devel mailing list