filesink cannot write output file more than 2048 MB, windows, gstreamer 1.16.1 mingw x64
Nicolas Dufresne
nicolas at ndufresne.ca
Wed Sep 15 12:59:09 UTC 2021
Le mercredi 15 septembre 2021 à 11:44 +0300, Артем Семенов via gstreamer-devel a
écrit :
> Hello, James.
>
> You are wrong, it's not a "low down" windows issue.
>
> I found this:
>
> 1. "filesink: fails with matroskamux when writing files larger than 2GiB on
> Windows"
> https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/579
>
> 2. "meson: Ensure large file support for fseeko"
> https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/517
>
> And it looks like this fix was backported into 1.16 (1.16.3).
This one was confusing, this MR was closed, as in the end it was a Meson bug
(regression in the transition to Meson):
https://github.com/mesonbuild/meson/pull/7272
This is a bit specific to MSys Windows builds, MSVC build should not be
affected.
p.s. Note that the hard limit on FAT is 4G files (unsigned).
>
> On 15.09.2021, 09:13:57:
>
> > That is a windows issue that cannot be fixed. (Well it can, but it is low down
> > in windows)
> > James
>
>
> >
> > > On 15 Sep 2021, at 8:25 am, Артем Семенов via gstreamer-devel
> > > <gstreamer-devel at lists.freedesktop.org> wrote:
> > >
> > > Hello.
> > >
> > > Windows, gstreamer 1.16.1 mingw x64:
> > >
> > > When the output file reaches a size greater than 2048 MB, filesink stops
> > > recording and generates an error:
> > >
> > > GST_DEBUG=3
> > >
> > > 0:19:09.838828958 5464 000002C708342300 WARN filesink
> > > gstfilesink.c:606:gst_file_sink_event:<filesink> error: Error while seeking
> > > in file "{path_to_output_file}".
> > > 0:19:09.838856894 5464 000002C708342300 WARN filesink
> > > gstfilesink.c:606:gst_file_sink_event:<filesink> error: system error:
> > > Invalid argument
> > >
> > > GST_DEBUG=5
> > >
> > > 1:00:17.891237294 6080 000001CC520A4940 DEBUG filesink
> > > gstfilesink.c:504:gst_file_sink_do_seek:<filesink> Seeking to offset
> > > 2147862966 using fseeko
> > > 1:00:17.891284786 6080 000001CC520A4940 DEBUG filesink
> > > gstfilesink.c:714:gst_file_sink_flush_buffer:<filesink> Flushing out buffer
> > > of size 24
> > > 1:00:17.891333954 6080 000001CC520A4940 DEBUG filesink
> > > gstfilesink.c:658:gst_file_sink_render_buffers:<filesink> writing 1 buffers
> > > (1 memories, 24 bytes) at position 1074029354
> > >
> > > 1:00:17.912922452 6080 000001CC520A4940 DEBUG filesink
> > > gstfilesink.c:535:gst_file_sink_do_seek:<filesink> Seeking failed: Invalid
> > > argument
> > > 1:00:17.912970224 6080 000001CC520A4940 WARN filesink
> > > gstfilesink.c:606:gst_file_sink_event:<filesink> error: Error while seeking
> > > in file "{path_to_output_file}".
> > >
> > > Obviously, this is due to the fact that the 32-bit version of the fseek
> > > function is used instead of the 64-bit one.
> > >
> > > Has this been fixed in subsequent releases?
> > >
More information about the gstreamer-devel
mailing list