mp4 file changes size during playback

Mathieu Duponchelle mathieu at centricular.com
Wed Dec 4 17:14:20 UTC 2019


That's an interesting file, but I'm not sure it is a a compliant one:  the resolution change is
advertised through SPS in the bitstream, but the MP4 header says "avc1", which as far as I remembe
means the H264 bitstream should not contain any SPS (please double check this, haven't looked at the spec).

Ideally, the tool you produced this file with would use an "avc3" stream format, and not hold
any parameter sets in its MP4 header. That way, you could detect resolution changes by simply
plugging a demuxer and a parser together and looking for new caps. Currently you can only do that
either by also plugging a decoder afterwards and looking for caps changes, or analysing the SPS
manually :)

Best,

-- 
Mathieu Duponchelle · https://www.centricular.com


On 12/3/19 10:50 PM, David Ing wrote:
> I have an mp4 file which changes size during playback.  But I noticed that gst-discoverer-1.0 does not report the fact that the size changes.
>
> I have two questions.
>
>  1. In theory, what is the fastest way to scan the file to determine where the size changes?
>  2. In practice, what is the easiest way (given the current state of gstreamer) to scan the file and determine where the size changes?
>
> Here is the file which changes size during playback:
>
>     https://drive.google.com/drive/folders/1f4pGNDhzCvsg1xXWj4y9DS3vXkaglOvZ?usp=sharing
>
> Here is the gst-discoverer-1.0 output:
>
>     $ *gst-discoverer-1.0 -v screencap.m4v *
>     Analyzing file:///home/ding/mess/repro/screencap.m4v
>     Done discovering file:///home/ding/mess/repro/screencap.m4v
>
>     Topology:
>       container: video/quicktime, variant=(string)iso
>         video: video/x-h264, stream-format=(string)avc, alignment=(string)au, level=(string)4.2, profile=(string)main, codec_data=(buffer)014d402affe1002b674d402a965402a835f35602d40404050000030001000003003ce060007d0000030177009a9503b4244d4001000468ce3520, width=(int)996, height=(int)632, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)30/1, interlace-mode=(string)progressive, chroma-format=(string)4:2:0, bit-depth-luma=(uint)8, bit-depth-chroma=(uint)8, parsed=(boolean)true
>           Tags:
>             video codec: H.264 / AVC
>             bitrate: 309812
>             datetime: 2019-11-01T17:40:33Z
>             title: n/a
>             container format: ISO MP4/M4A
>          
>           Codec:
>             video/x-h264, stream-format=(string)avc, alignment=(string)au, level=(string)4.2, profile=(string)main, codec_data=(buffer)014d402affe1002b674d402a965402a835f35602d40404050000030001000003003ce060007d0000030177009a9503b4244d4001000468ce3520, width=(int)996, height=(int)632, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)30/1, 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: 14c5bd3783191c8af25f30b00a879f8f7bdaa4367c8ecbd954b38e5367507175/001
>           Width: 1350
>           Height: 846
>           Depth: 24
>           Frame rate: 30/1
>           Pixel aspect ratio: 1/1
>           Interlaced: false
>           Bitrate: 309812
>           Max bitrate: 0
>
>     Properties:
>       Duration: 0:00:34.861322222
>       Seekable: yes
>       Live: no
>       Tags:
>           video codec: H.264 / AVC
>           bitrate: 309812
>           datetime: 2019-11-01T17:40:33Z
>           title: n/a
>           container format: ISO MP4/M4A
>
>
> _______________________________________________
> 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/20191204/c415c8c9/attachment.html>


More information about the gstreamer-devel mailing list