@ -225,6 +225,7 @@ static inline SegmentType select_segment_type(SegmentType segment_type, enum AVC
static int init_segment_types ( AVFormatContext * s )
{
DASHContext * c = s - > priv_data ;
int has_mp4_streams = 0 ;
for ( int i = 0 ; i < s - > nb_streams ; + + i ) {
OutputStream * os = & c - > streams [ i ] ;
SegmentType segment_type = select_segment_type (
@ -235,6 +236,12 @@ static int init_segment_types(AVFormatContext *s)
av_log ( s , AV_LOG_ERROR , " Could not select DASH segment type for stream %d \n " , i ) ;
return AVERROR_MUXER_NOT_FOUND ;
}
has_mp4_streams | = segment_type = = SEGMENT_TYPE_MP4 ;
}
if ( c - > hls_playlist & & ! has_mp4_streams ) {
av_log ( s , AV_LOG_WARNING , " No mp4 streams, disabling HLS manifest generation \n " ) ;
c - > hls_playlist = 0 ;
}
return 0 ;
@ -510,7 +517,7 @@ static void output_segment_list(OutputStream *os, AVIOContext *out, AVFormatCont
}
avio_printf ( out , " \t \t \t \t </SegmentList> \n " ) ;
}
if ( c - > hls_playlist & & start_index < os - > nb_segments )
if ( c - > hls_playlist & & start_index < os - > nb_segments & & os - > segment_type = = SEGMENT_TYPE_MP4 )
{
int timescale = os - > ctx - > streams [ 0 ] - > time_base . den ;
char temp_filename_hls [ 1024 ] ;
@ -944,6 +951,8 @@ static int write_manifest(AVFormatContext *s, int final)
OutputStream * os = & c - > streams [ i ] ;
if ( st - > codecpar - > codec_type ! = AVMEDIA_TYPE_AUDIO )
continue ;
if ( os - > segment_type ! = SEGMENT_TYPE_MP4 )
continue ;
get_hls_playlist_name ( playlist_file , sizeof ( playlist_file ) , NULL , i ) ;
ff_hls_write_audio_rendition ( c - > m3u8_out , ( char * ) audio_group ,
playlist_file , i , is_default ) ;
@ -967,6 +976,8 @@ static int write_manifest(AVFormatContext *s, int final)
int stream_bitrate = st - > codecpar - > bit_rate + os - > muxer_overhead ;
if ( st - > codecpar - > codec_type ! = AVMEDIA_TYPE_VIDEO )
continue ;
if ( os - > segment_type ! = SEGMENT_TYPE_MP4 )
continue ;
av_strlcpy ( codec_str , os - > codec_str , sizeof ( codec_str ) ) ;
if ( max_audio_bitrate ) {
agroup = ( char * ) audio_group ;