[FFmpeg-devel] [PATCH v2] avformat/hlsenc: merge mpegts and fmp4 workflow to one workflow
Steven Liu
lq at chinaffmpeg.org
Sat Aug 3 00:22:42 EEST 2019
> 在 2019年8月2日,22:46,Ian Klassen <ian at virtualfunc.com> 写道:
>
> On Fri, Aug 2, 2019 at 5:46 AM Michael Niedermayer <michael at niedermayer.cc>
> wrote:
>
>> On Wed, Jul 31, 2019 at 04:07:22PM +0800, Steven Liu wrote:
>>> write mpegts or fmp4 context into buffer, and flush the buffer into
>>> output file when split fragment. merge two format split workflow into
>>> one workflow
>>>
>>> Signed-off-by: Steven Liu <lq at chinaffmpeg.org>
>>> ---
>>> libavformat/hlsenc.c | 200 ++++++++++++++++++++-----------------------
>>> 1 file changed, 92 insertions(+), 108 deletions(-)
>>
>> make -j5 ffmpeg && ./ffmpeg -f lavfi -re -i testsrc -c:v h264 -hls_flags
>> delete_segments -hls_key_info_file file.keyinfo -t 2 /tmp/file-hlsencry.m3u8
>> ...
>> Output #0, hls, to '/tmp/file-hlsencry.m3u8':
>> Metadata:
>> encoder : Lavf58.30.100
>> Stream #0:0: Video: h264 (libx264), yuv444p, 320x240 [SAR 1:1 DAR
>> 4:3], q=-1--1, 25 fps, 90k tbn, 25 tbc
>> Metadata:
>> encoder : Lavc58.56.100 libx264
>> Side data:
>> cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: -1
>> [hls @ 0x24a1800] Opening '/tmp/file-hlsencry0.ts' for writingA speed=
>> 0x
>> *** Error in `./ffmpeg': free(): invalid size: 0x0000000002b4aa50 ***
>> Aborted (core dumped)
>>
>>
>> [hls @ 0x25662840] Opening '/tmp/file-hlsencry0.ts' for writing speed=
>> 0x
>> ==13307== Invalid read of size 8
>> ==13307== at 0x6BD2FE: avio_close_dyn_buf (in ffmpeg/ffmpeg_g)
>> ==13307== by 0x6F5742: hls_write_trailer (in ffmpeg/ffmpeg_g)
>> ==13307== by 0x763E0A: av_write_trailer (in ffmpeg/ffmpeg_g)
>> ==13307== by 0x4D390A: transcode (in ffmpeg/ffmpeg_g)
>> ==13307== by 0x4B1E1C: main (in ffmpeg/ffmpeg_g)
>> ==13307== Address 0x3dcc6f50 is 8 bytes after a block of size 8 alloc'd
>> ==13307== at 0x4C2A6C5: memalign (vg_replace_malloc.c:727)
>> ==13307== by 0x4C2A760: posix_memalign (vg_replace_malloc.c:876)
>> ==13307== by 0x116963F: av_mallocz (in ffmpeg/ffmpeg_g)
>> ==13307== by 0x6BBA37: ffio_open_whitelist (in ffmpeg/ffmpeg_g)
>> ==13307== by 0x78B1E9: io_open_default (in ffmpeg/ffmpeg_g)
>> ==13307== by 0x6F353D: hls_start (in ffmpeg/ffmpeg_g)
>> ==13307== by 0x6F7312: hls_init (in ffmpeg/ffmpeg_g)
>> ==13307== by 0x761D12: avformat_init_output (in ffmpeg/ffmpeg_g)
>> ==13307== by 0x762434: avformat_write_header (in ffmpeg/ffmpeg_g)
>> ==13307== by 0x4C9D58: check_init_output_file (in ffmpeg/ffmpeg_g)
>> ==13307== by 0x4CB23D: init_output_stream.constprop.23 (in
>> ffmpeg/ffmpeg_g)
>> ==13307== by 0x4D079F: reap_filters (in ffmpeg/ffmpeg_g)
>> ==13307==
>> [hls @ 0x25662840] Opening '/tmp/file-hlsencry.m3u8.tmp' for writing
>>
>> if you cannot reproduce, tell me and ill rebuild and provide better
>> debug info
>>
>> Thanks
>>
>> [...]
>> --
>> Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
>>
>> Its not that you shouldnt use gotos but rather that you should write
>> readable code and code with gotos often but not always is less readable
>> _______________________________________________
>> ffmpeg-devel mailing list
>> ffmpeg-devel at ffmpeg.org
>> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>>
>> To unsubscribe, visit link above, or email
>> ffmpeg-devel-request at ffmpeg.org with subject "unsubscribe".
>
>
> Is this patch to address bug #7975? https://trac.ffmpeg.org/ticket/7975
No,
Just merge two workflow into one workflow,
fix 7975 next step, just modify the code block at hlsenc_io_open->flush buffer data->hlsenc_io_close.
modify to hlsenc_io_open->flush buffer data->check status-> reopen (hlsenc_io_open)->reflush data(option retry times)->hlsenc_io_close.
>
> I tested it on Windows and it still crashes when attempting to write to a
> http server that doesn't support persistent connections:
>
> [http @ 0000029C0EBAD080] URL read error: End of file
> [http @ 0000029C0D410740] Opening 'http://127.0.0.1/stream2.ts' for writing
> [http @ 0000029C0EBAD080] URL read error: Error number -10053 occurred
> [http @ 0000029C0D410740] Opening 'http://127.0.0.1/stream.m3u8' for writing
> av_interleaved_write_frame(): Unknown error
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request at ffmpeg.org with subject "unsubscribe".
Thanks
Steven
More information about the ffmpeg-devel
mailing list