[FFmpeg-devel] [PATCH] libavformat/hlsenc: only initialize the "start_pts" value if the incoming packet is a video packet.

Boris Nagels develop at focusware.nl
Thu Nov 1 11:32:57 EET 2018

The packet type should be checked before the start value is assigned. For example, if the first packet to arrive is an audio packet, the value of start-pts is in the timebase units of the audio stream. This will cause the stream to be split on every I-frame of the video stream since the pts value of the audio stream is typically much smaller than the pts value of the video stream.
 libavformat/hlsenc.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libavformat/hlsenc.c b/libavformat/hlsenc.c
index 902896ef81..85167761b9 100644
--- a/libavformat/hlsenc.c
+++ b/libavformat/hlsenc.c
@@ -2201,7 +2201,7 @@ static int hls_write_packet(AVFormatContext *s, AVPacket *pkt)
         end_pts = init_list_dur + after_init_list_dur ;
-    if (vs->start_pts == AV_NOPTS_VALUE) {
+    if (st->codecpar->codec_type == AVMEDIA_TYPE_VIDEO && vs->start_pts == AV_NOPTS_VALUE) {
         vs->start_pts = pkt->pts;
         vs->end_frame = st->nb_frames;

More information about the ffmpeg-devel mailing list