I was wondering if anyone on the development list was familiar with this code and could provide pointers on how to fix up the code due to the below problem.
> On Jul 12, 2018, at 7:27 PM, Ronak Patel <ronak2121-at-yahoo....@ffmpeg.org> > wrote: > > > >> On Jul 12, 2018, at 6:21 PM, Ronak Patel <ronak2121-at-yahoo....@ffmpeg.org> >> wrote: >> >> Hey Carl, >> >> So I dug into this more today and I have root caused what's exactly >> happening here. >> >> The problematic code is this: >> https://github.com/FFmpeg/FFmpeg/blob/master/libavformat/hlsenc.c#L1368 >> <https://github.com/FFmpeg/FFmpeg/blob/master/libavformat/hlsenc.c#L1368> >> This is where the filename is set and the next line actually opens the file. >> >> The logic for this hls_window method is the following: >> >> 1. Make a new temporary file. >> 2. Write out a new HLS manifest header. >> 3. Loop through all available segments and write out all of the entries for >> them. >> 4. Close the temporary file when finished. >> 5. Rename the temporary file to the target file name. >> 6. Rinse and repeat for every single fragment. >> >> Therefore, if you can imagine a 153 hour audio file, we write out a totally >> new HLS manifest 550800 times (153 * 60 * 60 assuming a 1s fragment >> duration) that gets progressively larger as each fragment is generated. >> >> This is a classic O(N^2) algorithm implementation, instead of: >> >> 1. Creating the destination file up front & write the manifest header. >> 2. Append the new segment to the file. >> 3. If this is the last segment, write out EXT-X-ENDLIST. >> >> There's no looping involved, nor the need to make temporary files. >> >> FYI that I've noticed the same sort of pattern being applied to MPEG DASH: >> https://github.com/FFmpeg/FFmpeg/blob/master/libavformat/dashenc.c#L786 >> <https://github.com/FFmpeg/FFmpeg/blob/master/libavformat/dashenc.c#L786> >> >> To implement something like this, looks like we'd have to significantly >> re-engineer the code. Do you have any pointers on how to go about doing >> this? Or, would you be able to help do this? >> > > I was thinking about this and I think it must have been implemented this way > because of live hls streams? Not writing to the main manifest directly and > keeping that stream open does release any file system locks that there would > be otherwise. > > Is this the reason why this was done this way at all? > > >> Thanks for all your help, >> >> Ronak >> >>> On Jun 27, 2018, at 2:04 PM, Carl Zwanzig <c...@tuunq.com> wrote: >>> >>> Hi, >>> >>> I haven't traced it out completely, but take a look at the flag >>> HLS_TEMP_FILE in libavformat/hlsenc.c. >>> >>> Later, >>> >>> z! >> _______________________________________________ >> ffmpeg-user mailing list >> ffmpeg-u...@ffmpeg.org >> http://ffmpeg.org/mailman/listinfo/ffmpeg-user >> >> To unsubscribe, visit link above, or email >> ffmpeg-user-requ...@ffmpeg.org with subject "unsubscribe". > > _______________________________________________ > ffmpeg-user mailing list > ffmpeg-u...@ffmpeg.org > http://ffmpeg.org/mailman/listinfo/ffmpeg-user > > To unsubscribe, visit link above, or email > ffmpeg-user-requ...@ffmpeg.org with subject "unsubscribe". _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel