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 list [hidden email] https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
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 <[hidden email]> wrote:
_______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
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:
_______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
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 <[hidden email]> wrote:
_______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
Hah, nice !
On 6/6/19 12:34 AM, Thibault Saunier
wrote:
_______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
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 <[hidden email]> wrote:
_______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
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? On Wed, Jun 5, 2019 at 3:38 PM Thibault Saunier <[hidden email]> wrote:
_______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
On Wed, Jun 5, 2019 at 8:32 PM David Ing <[hidden email]> wrote:
Yes.
_______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
Free forum by Nabble | Edit this page |