mmm, looks cool, mind sending a shell properly formatted ? ;-) i get errors from it :
=========== ffmpeg -ignore_unknown -async 1 -probesize 1M -analyzeduration 1000000 \ -i $1 -t 00:00:10 -threads 0 -fflags +genpts \ -filter_complex "[0:v]yadif=0:-1:0[deinterlaced];[deinterlaced]split=4[v1][v2][v3][v4];[v1]copy[v1out];[v2]scale=w=1280:h=720:\ force_original_aspect_ratio=disable[v2scale];[v2scale]pad=width=1280:height=720:x=(ow-iw)/2:y=0:color=black[v2out];\ [v3]scale=w=800:h=450:force_original_aspect_ratio=disable[v3scale];[v3scale]pad=width=800:height=450:x=(ow-iw)/2:\ y=0:color=black[v3out];[v4]scale=w=480:h=270:force_original_aspect_ratio=disable[v4scale];[v4scale]pad=width=480:height=270:x=(ow-iw)/2:y=0:color=black[v4out]" \ -map [v1out] -x264opts:v:0 keyint=15:min-keyint=15:no-scenecut -flags:v:0 +cgop -c:v:0 libx264 -profile:v:0 high -level 4.0 -preset superfast -b:v:0 8000k -maxrate:v:0 10000k -minrate:v:0 4000k \ -map [v2out] -x264opts:v:1 keyint=15:min-keyint=15:no-scenecut -flags:v:1 +cgop -c:v:1 libx264 -profile:v:1 high -level 4.0 -preset superfast -b:v:1 3000k -maxrate:v:1 3000k -minrate:v:1 1350k \ -map [v3out] -x264opts:v:2 keyint=15:min-keyint=15:no-scenecut -flags:v:2 +cgop -c:v:2 libx264 -profile:v:2 main -level 3.1 -preset superfast -b:v:2 900k -maxrate:v:2 900k -minrate:v:2 450k \ -map [v4out] -x264opts:v:3 keyint=15:min-keyint=15:no-scenecut -flags:v:3 +cgop -c:v:3 libx264 -profile:v:3 baseline -level 3.0 -preset superfast -b:v:3 450k -maxrate:v:3 450k -minrate:v:3 150k \ -map a:0 -c:a:0 libfdk_aac -b:a:0 128k -metadata:s:a:0 language=ron -map a:0 -c:a:1 libfdk_aac -b:a:1 128k -metadata:s:a:1 language=ron \ -map a:0 -c:a:2 libfdk_aac -b:a:2 128k -metadata:s:a:2 language=ron \ -map a:0 -c:a:3 libfdk_aac -b:a:3 128k -metadata:s:a:3 language=ron \ "[select=\'v:0,v:1,v:2,v:3,a:0\':f=hls:onfail=ignore:\ var_stream_map=\'v:0,agroup:audiov:1,agroup:audio v:2,agroup:audio v:3,agroup:audioa:0,agroup:audio,language:ron,default:yes\':use_localtime=1:\ hls_allow_cache=0:hls_flags=discont_start+delete_segments+omit_endlist+second_level_segment_index+second_level_segment_size+second_level_segment_duration+program_date_time:\ hls_start_number_source=datetime:hls_time=6:hls_list_size=10:hls_segment_filename=%v_stream_%%04d_%%08s_%%013t.ts:master_pl_name=playlist.m3u8]variant_%v_manifest.m3u8 | \ [select=\'v:0,v:1,v:2,v:3,a:0,a:1,a:2,a:3\':f=hls:var_stream_map=\'v:0,a:0v:1,a:1 v:2,a:2 v:3,a:3\':use_localtime=1:hls_allow_cache=0:\ hls_flags=discont_start+temp_file+delete_segments+omit_endlist+second_level_segment_index+second_level_segment_size+second_level_segment_duration+program_date_time:\ hls_start_number_source=datetime:hls_time=6:hls_list_size=10:hls_segment_filename=%v_stream2_%Y%m%d%H%M%S_%%04d_%%08s_%%013t.ts:master_pl_name=playlist2.m3u8]variant2_%v_manifest.m3u8" On Mon, Jul 22, 2019 at 11:45 AM Viorel Dehelean <[email protected]> wrote: > For some strange reason, when using TEE with HLS output, in the master > playlist, the codec information is missing. > > Anybody has any idea why ? > > I am using git version from 2 days ago ... ffmpeg version > N-94345-g1123331f59 > > Thanks > > On Sat, Jul 20, 2019 at 9:38 PM Viorel Dehelean <[email protected]> > wrote: > > > So the final solution for this use case was to use: > > > > ./ffmpeg -ignore_unknown -async 1 -probesize 1M -analyzeduration 1000000 > \ > > -i "udp://<udp stream>:1234?fifo_size=5000000&overrun_nonfatal=1" > > -threads 0 -fflags +genpts \ > > -filter_complex > > > "[0:v]yadif=0:-1:0[deinterlaced];[deinterlaced]split=4[v1][v2][v3][v4];[v1]copy[v1out];[v2]scale=w=1280:h=720:force_original_aspect_ratio=disable[v2scale];[v2scale]pad=width=1280:height=720:x=(ow-iw)/2:y=0:color=black[v2out];[v3]scale=w=800:h=450:force_original_aspect_ratio=disable[v3scale];[v3scale]pad=width=800:height=450:x=(ow-iw)/2:y=0:color=black[v3out];[v4]scale=w=480:h=270:force_original_aspect_ratio=disable[v4scale];[v4scale]pad=width=480:height=270:x=(ow-iw)/2:y=0:color=black[v4out]" > > \ > > -map [v1out] -x264opts:v:0 keyint=15:min-keyint=15:no-scenecut > > -flags:v:0 +cgop -c:v:0 libx264 -profile:v:0 high -level 4.0 -preset > > superfast -b:v:0 8000k -maxrate:v:0 10000k -minrate:v:0 4000k \ > > -map [v2out] -x264opts:v:1 keyint=15:min-keyint=15:no-scenecut > > -flags:v:1 +cgop -c:v:1 libx264 -profile:v:1 high -level 4.0 -preset > > superfast -b:v:1 3000k -maxrate:v:1 3000k -minrate:v:1 1350k \ > > -map [v3out] -x264opts:v:2 keyint=15:min-keyint=15:no-scenecut > > -flags:v:2 +cgop -c:v:2 libx264 -profile:v:2 main -level 3.1 -preset > > superfast -b:v:2 900k -maxrate:v:2 900k -minrate:v:2 450k \ > > -map [v4out] -x264opts:v:3 keyint=15:min-keyint=15:no-scenecut > > -flags:v:3 +cgop -c:v:3 libx264 -profile:v:3 baseline -level 3.0 -preset > > superfast -b:v:3 450k -maxrate:v:3 450k -minrate:v:3 150k \ > > -map a:0 -c:a:0 libfdk_aac -b:a:0 128k -metadata:s:a:0 language=ron \ > > -map a:0 -c:a:1 libfdk_aac -b:a:1 128k -metadata:s:a:1 language=ron \ > > -map a:0 -c:a:2 libfdk_aac -b:a:2 128k -metadata:s:a:2 language=ron \ > > -map a:0 -c:a:3 libfdk_aac -b:a:3 128k -metadata:s:a:3 language=ron \ > > > > > "[select=\'v:0,v:1,v:2,v:3,a:0\':f=hls:onfail=ignore:var_stream_map=\'v:0,agroup:audio > > v:1,agroup:audio v:2,agroup:audio v:3,agroup:audio > > > a:0,agroup:audio,language:ron,default:yes\':use_localtime=1:hls_allow_cache=0:hls_flags=discont_start+delete_segments+omit_endlist+second_level_segment_index+second_level_segment_size+second_level_segment_duration+program_date_time:\ > > > > > hls_start_number_source=datetime:hls_time=6:hls_list_size=10:hls_segment_filename=/origin/35f4574f4aed42d083de1087851f8712/%v_stream_%%04d_%%08s_%%013t.ts:master_pl_name=playlist.m3u8]/origin/35f4574f4aed42d083de1087851f8712/variant_%v_manifest.m3u8|\ > > > > > [select=\'v:0,v:1,v:2,v:3,a:0,a:1,a:2,a:3\':f=hls:var_stream_map=\'v:0,a:0 > > v:1,a:1 v:2,a:2 > > > v:3,a:3\':use_localtime=1:hls_allow_cache=0:hls_flags=discont_start+temp_file+delete_segments+omit_endlist+second_level_segment_index+second_level_segment_size+second_level_segment_duration+program_date_time:\ > > > > > hls_start_number_source=datetime:hls_time=6:hls_list_size=10:hls_segment_filename=/origin/35f4574f4aed42d083de1087851f8712/mux/%v_stream2_%Y%m%d%H%M%S_%%04d_%%08s_%%013t.ts:master_pl_name=playlist2.m3u8]/origin/35f4574f4aed42d083de1087851f8712/mux/variant2_%v_manifest.m3u8" > > > > by adding select to the tee output, the first hls output is satisfied, > and > > the second just uses audio streams 0 thru 3 > > > > Hope it helps somebody else too > > > > Thanks, > > Viorel > > > > On Sat, Jul 20, 2019 at 12:20 AM Viorel Dehelean <[email protected]> > > wrote: > > > >> Answering to myself, in my previous attempt, the second hls output > >> expects a separate set of transcode process, hence the unable to map > stream > >> error. > >> > >> The better solution would be to use tee to send to multiple outputs, > >> however the latest git seems to be suffering from this > >> https://trac.ffmpeg.org/ticket/7907 > >> > >> For my usecase, i need two ABR outputs, one with separate audio > >> renditions (for the test case, just one) and one output with embedded > audio. > >> The problem i am facing now with the latest git is as follows, with one > >> audio track encode process, the separate audio rendition output works > well, > >> however the second ABR which needs to embed audio onto 4 video variants, > >> crashes with: > >> > >> [hls @ 0x55f35ecd1000] Same elementary stream found more than once in > two > >> different variant definitions #0 and #1 > >> > >> which seems to indicate that it does not like to use the same audio > >> stream into multiple variants, which led me to actually create 3 more > audio > >> encodes, as audio encoding is not that expensive CPU wise, but now the > >> separate audio rendition output crashes with > >> > >> [hls @ 0x55b804de5300] Unable to find mapping variant stream > >> > >> which seems to indicate that the muxer has found some streams that are > >> not used in that output. It would be nice to not crash here :) > >> > >> I will post a comment to 7907, however, maybe somebody has a better > idea. > >> > >> Here's what i tried (with 4 audio encodes) > >> > >> ./ffmpeg -ignore_unknown -async 1 -probesize 1M -analyzeduration > 1000000 \ > >> -i "udp://<udp group>:1234?fifo_size=5000000&overrun_nonfatal=1" > >> -threads 0 -fflags +genpts \ > >> -filter_complex > >> > "[0:v]yadif=0:-1:0[deinterlaced];[deinterlaced]split=4[v1][v2][v3][v4];[v1]copy[v1out];[v2]scale=w=1280:h=720:force_original_aspect_ratio=disable[v2scale];[v2scale]pad=width=1280:height=720:x=(ow-iw)/2:y=0:color=black[v2out];[v3]scale=w=800:h=450:force_original_aspect_ratio=disable[v3scale];[v3scale]pad=width=800:height=450:x=(ow-iw)/2:y=0:color=black[v3out];[v4]scale=w=480:h=270:force_original_aspect_ratio=disable[v4scale];[v4scale]pad=width=480:height=270:x=(ow-iw)/2:y=0:color=black[v4out]" > >> \ > >> -map [v1out] -x264opts:v:0 keyint=15:min-keyint=15:no-scenecut > >> -flags:v:0 +cgop -c:v:0 libx264 -profile:v:0 high -level 4.0 -preset > >> superfast -b:v:0 8000k -maxrate:v:0 10000k -minrate:v:0 4000k \ > >> -map [v2out] -x264opts:v:1 keyint=15:min-keyint=15:no-scenecut > >> -flags:v:1 +cgop -c:v:1 libx264 -profile:v:1 high -level 4.0 -preset > >> superfast -b:v:1 3000k -maxrate:v:1 3000k -minrate:v:1 1350k \ > >> -map [v3out] -x264opts:v:2 keyint=15:min-keyint=15:no-scenecut > >> -flags:v:2 +cgop -c:v:2 libx264 -profile:v:2 main -level 3.1 -preset > >> superfast -b:v:2 900k -maxrate:v:2 900k -minrate:v:2 450k \ > >> -map [v4out] -x264opts:v:3 keyint=15:min-keyint=15:no-scenecut > >> -flags:v:3 +cgop -c:v:3 libx264 -profile:v:3 baseline -level 3.0 -preset > >> superfast -b:v:3 450k -maxrate:v:3 450k -minrate:v:3 150k \ > >> -map a:0 -c:a:0 libfdk_aac -b:a:0 128k -metadata:s:a:0 language=ron > \ > >> -map a:0 -c:a:1 libfdk_aac -b:a:1 128k -metadata:s:a:1 language=ron > \ > >> -map a:0 -c:a:2 libfdk_aac -b:a:2 128k -metadata:s:a:2 language=ron > \ > >> -map a:0 -c:a:3 libfdk_aac -b:a:3 128k -metadata:s:a:3 language=ron > \ > >> "[f=hls:onfail=ignore:var_stream_map=\'v:0,agroup:audio > >> v:1,agroup:audio v:2,agroup:audio v:3,agroup:audio > >> > a:0,agroup:audio,language:ron,default:yes\':use_localtime=1:hls_allow_cache=0:hls_flags=discont_start+delete_segments+omit_endlist+second_level_segment_index+second_level_segment_size+second_level_segment_duration+program_date_time:\ > >> > >> > hls_start_number_source=datetime:hls_time=6:hls_list_size=10:hls_segment_filename=/origin/35f4574f4aed42d083de1087851f8712/%v_stream_%%04d_%%08s_%%013t.ts:master_pl_name=playlist.m3u8]/origin/35f4574f4aed42d083de1087851f8712/variant_%v_manifest.m3u8|\ > >> [f=hls:var_stream_map=\'v:0,a:0 v:1,a:1 v:2,a:2 > >> > v:3,a:3\':use_localtime=1:hls_allow_cache=0:hls_flags=discont_start+temp_file+delete_segments+omit_endlist+second_level_segment_index+second_level_segment_size+second_level_segment_duration+program_date_time:\ > >> > >> > hls_start_number_source=datetime:hls_time=6:hls_list_size=10:hls_segment_filename=/origin/35f4574f4aed42d083de1087851f8712/mux/%v_stream2_%Y%m%d%H%M%S_%%04d_%%08s_%%013t.ts:master_pl_name=playlist2.m3u8]/origin/35f4574f4aed42d083de1087851f8712/mux/variant2_%v_manifest.m3u8" > >> > >> Thanks, > >> Viorel > >> > >> > >> On Fri, Jul 19, 2019 at 9:50 PM Viorel Dehelean <[email protected]> > >> wrote: > >> > >>> Slight different command line, i'm trying to produce 2 separate abr > >>> streams with different stream map structures, as well as doing > transcoding > >>> but that should not be of any circumstance: > >>> > >>> ./ffmpeg -ignore_unknown -async 1 -probesize 1M -analyzeduration > 1000000 > >>> \ > >>> -i "udp://<udp group>:1234?fifo_size=5000000&overrun_nonfatal=1" > >>> -threads 0 -fflags +genpts \ > >>> -filter_complex > >>> > "[0:v]yadif=0:-1:0[deinterlaced];[deinterlaced]split=4[v1][v2][v3][v4];[v1]copy[v1out];[v2]scale=w=1280:h=720:force_original_aspect_ratio=disable[v2scale];[v2scale]pad=width=1280:height=720:x=(ow-iw)/2:y=0:color=black[v2out];[v3]scale=w=800:h=450:force_original_aspect_ratio=disable[v3scale];[v3scale]pad=width=800:height=450:x=(ow-iw)/2:y=0:color=black[v3out];[v4]scale=w=480:h=270:force_original_aspect_ratio=disable[v4scale];[v4scale]pad=width=480:height=270:x=(ow-iw)/2:y=0:color=black[v4out]" > >>> \ > >>> -map [v1out] -x264opts:v:0 keyint=15:min-keyint=15:no-scenecut > >>> -flags:v:0 +cgop -c:v:0 libx264 -profile:v:0 high -level 4.0 -preset > >>> superfast -b:v:0 8000k -maxrate:v:0 10000k -minrate:v:0 4000k \ > >>> -map [v2out] -x264opts:v:1 keyint=15:min-keyint=15:no-scenecut > >>> -flags:v:1 +cgop -c:v:1 libx264 -profile:v:1 high -level 4.0 -preset > >>> superfast -b:v:1 3000k -maxrate:v:1 3000k -minrate:v:1 1350k \ > >>> -map [v3out] -x264opts:v:2 keyint=15:min-keyint=15:no-scenecut > >>> -flags:v:2 +cgop -c:v:2 libx264 -profile:v:2 main -level 3.1 -preset > >>> superfast -b:v:2 900k -maxrate:v:2 900k -minrate:v:2 450k \ > >>> -map [v4out] -x264opts:v:3 keyint=15:min-keyint=15:no-scenecut > >>> -flags:v:3 +cgop -c:v:3 libx264 -profile:v:3 baseline -level 3.0 > -preset > >>> superfast -b:v:3 450k -maxrate:v:3 450k -minrate:v:3 150k \ > >>> -map a:0 -c:a:0 libfdk_aac -b:a:0 128k -metadata:s:a:0 > language=ron \ > >>> -f hls \ > >>> -var_stream_map "v:0,agroup:audio v:1,agroup:audio v:2,agroup:audio > >>> v:3,agroup:audio > a:0,agroup:audio,name:Romanian,language:ron,isdefault:yes" > >>> \ > >>> -use_localtime 1 -hls_allow_cache 0 -hls_flags > >>> > delete_segments+omit_endlist+second_level_segment_index+second_level_segment_size+second_level_segment_duration+program_date_time > >>> \ > >>> -hls_start_number_source datetime -hls_time 6 -hls_list_size 10 > >>> -hls_segment_filename > >>> > /origin/35f4574f4aed42d083de1087851f8712/%v_stream_%Y%m%d%H%M%S_%%04d_%%08s_%%013t.ts > >>> \ > >>> -master_pl_name playlist.m3u8 > >>> /origin/35f4574f4aed42d083de1087851f8712/variant_%v_manifest.m3u8 \ > >>> -var_stream_map "v:0,a:0 v:1,a:0 v:2,a:0 v:3,a:0" \ > >>> -use_localtime 1 -hls_allow_cache 0 -hls_flags > >>> > delete_segments+omit_endlist+second_level_segment_index+second_level_segment_size+second_level_segment_duration+program_date_time > >>> \ > >>> -hls_start_number_source datetime -hls_time 6 -hls_list_size 10 > >>> -hls_segment_filename > >>> > /origin/35f4574f4aed42d083de1087851f8712/mux/%v_stream2_%Y%m%d%H%M%S_%%04d_%%08s_%%013t.ts > >>> \ > >>> -master_pl_name playlist2.m3u8 > >>> /origin/35f4574f4aed42d083de1087851f8712/mux/variant2_%v_manifest.m3u8 > >>> > >>> > >>> and i'm getting: > >>> > >>> > >>> [hls @ 0x561859fcf900] Unable to map stream at v:1 > >>> [hls @ 0x561859fcf900] Variant stream info update failed with status > >>> ffffffea > >>> Could not write header for output file #1 (incorrect codec parameters > >>> ?): Invalid argument > >>> Error initializing output stream 1:0 -- > >>> > >>> On Fri, Jul 19, 2019 at 5:34 PM andrei ka <[email protected]> > >>> wrote: > >>> > >>>> oups, i had extra space in command line, actually it works fine with > 2nd > >>>> stream_map > >>>> _______________________________________________ > >>>> ffmpeg-user mailing list > >>>> [email protected] > >>>> https://ffmpeg.org/mailman/listinfo/ffmpeg-user > >>>> > >>>> To unsubscribe, visit link above, or email > >>>> [email protected] with subject "unsubscribe". > >>> > >>> > _______________________________________________ > ffmpeg-user mailing list > [email protected] > https://ffmpeg.org/mailman/listinfo/ffmpeg-user > > To unsubscribe, visit link above, or email > [email protected] with subject "unsubscribe". _______________________________________________ ffmpeg-user mailing list [email protected] https://ffmpeg.org/mailman/listinfo/ffmpeg-user To unsubscribe, visit link above, or email [email protected] with subject "unsubscribe".
