@@ -576,11 +576,22 @@ _setup_vrecord_process(){
576576 if [[ -n " ${VIDEOCODECNAME} " ]] ; then
577577 MIDDLEOPTIONS_PRES+=(-metadata:s:v:0 encoder=" ${VIDEOCODECNAME} " )
578578 fi
579- RECORD_COMMAND+=(" ${MIDDLEOPTIONS_PRES[@]} " " ${MIDDLEOPTIONS_ALL[@]} " )
580579 if [[ " ${RUNTYPE} " = " record" ]] ; then
581- RECORD_COMMAND+=(-filter_complex " [0:v:0]${RECORDINGFILTER# ,* }${TC_WRITE}${CAPTION_WRITE} [vout];${AUDIOMAP} " -map " [vout]" " ${AUDIO_CHANNEL_MAP[@]} " )
582- RECORD_COMMAND+=(-f tee [f= ${FORMAT} :select= v,${AUDIO_TEE_SELECT_MAP} ]" ${VRECORD_OUTPUT} " \| [f= nut:onfail= abort:select= v,${AUDIO_TEE_SELECT_MAP} ,a\\\\ :0]pipe:1" ${EXTRA_TEE_OUTPUTS} " )
583- RECORD_COMMAND+=(" ${EXTRAOUTPUTS[@]} " )
580+ if [[ -n " ${EXTRA_MP4_FILTER} " ]] ; then
581+ FILTER_CHAIN_ADDITIONS=" ${EXTRA_MP4_FILTER} "
582+ SELECTED_AUDIO_MAP=" ${AUDIOMAP_MP4} "
583+ echo " HEYYY Y $FILTER_CHAIN_ADDITIONS "
584+ else
585+ FILTER_CHAIN_ADDITIONS=" [vout]"
586+ SELECTED_AUDIO_MAP=" ${AUDIOMAP} "
587+ echo " HEYYY N"
588+ fi
589+ RECORD_COMMAND+=(-filter_complex " [0:v:0]${RECORDINGFILTER# ,* }${TC_WRITE}${CAPTION_WRITE}${FILTER_CHAIN_ADDITIONS} ;${SELECTED_AUDIO_MAP} " -map " [vout]" " ${AUDIO_CHANNEL_MAP[@]} " )
590+ RECORD_COMMAND+=(" ${MIDDLEOPTIONS_PRES[@]} " " ${MIDDLEOPTIONS_ALL[@]} " )
591+ if [[ -n " ${EXTRA_MP4_FILTER} " ]] ; then
592+ RECORD_COMMAND+=(" ${EXTRA_MP4_CODER[@]} " )
593+ fi
594+ RECORD_COMMAND+=(-f tee [f= ${FORMAT} :select= v\\\\ :0,${AUDIO_TEE_SELECT_MAP} ]" ${VRECORD_OUTPUT} " \| [f= nut:onfail= abort:select= v\\\\ :0,${AUDIO_TEE_SELECT_MAP} ,a\\\\ :0]pipe:1" ${EXTRA_TEE_OUTPUTS[@]} " )
584595 else
585596 if [[ " ${SIGNAL_INPUT} " = ' true' ]] ; then
586597 PIPE_OUTPUT=(-c:v ffv1)
@@ -1746,6 +1757,8 @@ _set_some_params(){
17461757 fi
17471758}
17481759
1760+ # this is the audio codec template for all sidecar mp4s
1761+ AUDIO_CODER_TEMPLATE_MP4=(-map " [stereoXXXMP4]" -c:a:XXX aac)
17491762# decipher vrecord options as specified by user
17501763_lookup_choice (){
17511764 case " ${2} " in
@@ -1794,38 +1807,38 @@ _lookup_choice(){
17941807 _add_mediaconch_rule_set " ${CODEC_UNCOMPRESSED_TEST} "
17951808 if [[ " ${PIXEL_FORMAT} " = " yuv422p10" ]] ; then
17961809 VIDEOCODECNAME=" Uncompressed 10-bit 4:2:2"
1797- MIDDLEOPTIONS_PRES+=(-c:v v210)
1810+ MIDDLEOPTIONS_PRES+=(-c:v:0 v210)
17981811 elif [[ " ${PIXEL_FORMAT} " = " uyvy422" ]] ; then
17991812 VIDEOCODECNAME=" Uncompressed 8-bit 4:2:2"
1800- MIDDLEOPTIONS_PRES+=(-c:v rawvideo -pix_fmt uyvy422 -tag:v 2vuy)
1813+ MIDDLEOPTIONS_PRES+=(-c:v:0 rawvideo -pix_fmt:v:0 uyvy422 -tag:v:0 2vuy)
18011814 fi ;;
18021815 " FFV1 version 3" )
18031816 _add_mediaconch_rule_set " ${CODEC_FFV1_TEST} "
18041817 VIDEOCODECNAME=" FFV1 version 3"
1805- MIDDLEOPTIONS_PRES+=(-c:v ffv1 -level 3 -g 1 -slices " ${FFV1_SLICE_CHOICE} " -slicecrc 1)
1818+ MIDDLEOPTIONS_PRES+=(-c:v:0 ffv1 -level:v:0 3 -g:v:0 1 -slices:v:0 " ${FFV1_SLICE_CHOICE} " -slicecrc:v:0 1)
18061819 SUFFIX=" _ffv1" ;;
18071820 " JPEG2000" )
18081821 VIDEOCODECNAME=" JPEG2000"
1809- MIDDLEOPTIONS_PRES+=(-c:v libopenjpeg)
1822+ MIDDLEOPTIONS_PRES+=(-c:v:0 libopenjpeg)
18101823 SUFFIX=" _j2k" ;;
18111824 " ProRes" )
18121825 VIDEOCODECNAME=" Apple ProRes 422"
1813- MIDDLEOPTIONS_PRES+=(-c:v prores_ks -flags +ildct -profile:v 2)
1826+ MIDDLEOPTIONS_PRES+=(-c:v:0 prores_ks -flags +ildct -profile:v:0 2)
18141827 SUFFIX=" _prores" ;;
18151828 " ProRes (HQ)" )
18161829 VIDEOCODECNAME=" Apple ProRes 422 HQ"
1817- MIDDLEOPTIONS_PRES+=(-c:v prores_ks -flags +ildct -profile:v 3)
1830+ MIDDLEOPTIONS_PRES+=(-c:v:0 prores_ks -flags +ildct -profile:v:0 3)
18181831 SUFFIX=" _prores" ;;
18191832 " h264" )
18201833 VIDEOCODECNAME=" H.264"
1821- MIDDLEOPTIONS_PRES+=(-c:v h264 -pix_fmt yuv420p)
1834+ MIDDLEOPTIONS_PRES+=(-c:v:0 h264 -pix_fmt:v:0 yuv420p)
18221835 SUFFIX=" _h264" ;;
18231836 " HuffYUV" )
18241837 VIDEOCODECNAME=" HuffYUV"
18251838 if [[ " ${PIXEL_FORMAT} " = " yuv422p10" ]] ; then
1826- MIDDLEOPTIONS_PRES+=(-c:v ffvhuff -pix_fmt yuv422p10le -pred median -context 1)
1839+ MIDDLEOPTIONS_PRES+=(-c:v:0 ffvhuff -pix_fmt:v:0 yuv422p10le -pred:v:0 median -context:v:0 1)
18271840 elif [[ " ${PIXEL_FORMAT} " = " uyvy422" ]] ; then
1828- MIDDLEOPTIONS_PRES+=(-c:v ffvhuff -pix_fmt yuv422p -pred median -context 1)
1841+ MIDDLEOPTIONS_PRES+=(-c:v:0 ffvhuff -pix_fmt:v:0 yuv422p -pred:v:0 median -context:v:0 1)
18291842 fi
18301843 SUFFIX=" _huff" ;;
18311844
@@ -1835,25 +1848,30 @@ _lookup_choice(){
18351848
18361849 # audio codec
18371850 " 24-bit PCM" )
1838- MIDDLEOPTIONS_PRES +=(-c:a pcm_s24le)
1851+ AUDIO_CODER_TEMPLATE +=(-c:a:XXX pcm_s24le)
18391852 AUDIO_EXT=' wav' ;;
18401853 " 24-bit FLAC" )
1841- MIDDLEOPTIONS_PRES +=(-c:a flac)
1842- MIDDLEOPTIONS_PRES +=(-sample_fmt s32)
1843- MIDDLEOPTIONS_PRES +=(-bits_per_raw_sample:a 24)
1854+ AUDIO_CODER_TEMPLATE +=(-c:a:XXX flac)
1855+ AUDIO_CODER_TEMPLATE +=(-sample_fmt:a:XXX s32)
1856+ AUDIO_CODER_TEMPLATE +=(-bits_per_raw_sample:a:XXX 24)
18441857 AUDIO_EXT=' flac' ;;
18451858 " AAC" )
1846- MIDDLEOPTIONS_PRES+=(-c:a aac) ;;
1859+ MIDDLEOPTIONS_PRES+=(-c:a:XXX aac) ;;
18471860
18481861 # audio mappings
18491862 " 2 Stereo Tracks (Channels 1 & 2 -> 1st Track Stereo, Channels 3 & 4 -> 2nd Track Stereo)" )
18501863 AUDIOMAP=" [0:a:0]asplit[orig],pan=stereo| c0=c0 | c1=${PHASE_VALUE_2} c1[stereo1];[0:a:0]pan=stereo| c0=c2 | c1=${PHASE_VALUE_4} c3[stereo2]"
1864+ AUDIOMAP_MP4=" [0:a:0]asplit[orig],pan=stereo| c0=c0 | c1=${PHASE_VALUE_2} c1,asplit=2[stereo1][stereo3MP4];[0:a:0]pan=stereo| c0=c2 | c1=${PHASE_VALUE_4} c3,asplit=2[stereo2][stereo4MP4]"
18511865 AUDIO_PLAY_MAP=" pan=4c|c0=c0|c1=${PHASE_VALUE_2} c1|c2=c2|c3=${PHASE_VALUE_4} c3"
18521866 AUDIO_PLAY_LABELS=" ,drawtext=fontfile=${DEFAULTFONT} :text='L(1)':fontcolor=white:fontsize=18:x=0:y=0,drawtext=fontfile=${DEFAULTFONT} :text='R(1)':fontcolor=white:fontsize=18:x=0:y=20,drawtext=fontfile=${DEFAULTFONT} :text='L(2)':fontcolor=white:fontsize=18:x=0:y=40,drawtext=fontfile=${DEFAULTFONT} :text='R(2)':fontcolor=white:fontsize=18:x=0:y=60"
1853- AUDIO_CHANNEL_MAP+=(-map " [orig]" )
1854- AUDIO_CHANNEL_MAP+=(-map " [stereo1]" )
1855- AUDIO_CHANNEL_MAP+=(-map " [stereo2]" )
1856- AUDIO_TEE_SELECT_MAP=" a\\\\ :1,a\\\\ :2" ;;
1867+ AUDIO_CHANNEL_MAP+=(-map " [orig]" -c:a:0 flac)
1868+ AUDIO_CODER_TEMPLATE+=(-map " [stereoXXX]" )
1869+ AUDIO_CHANNEL_MAP+=(" ${AUDIO_CODER_TEMPLATE[@]// XXX/ 1} " )
1870+ AUDIO_CHANNEL_MAP+=(" ${AUDIO_CODER_TEMPLATE[@]// XXX/ 2} " )
1871+ AUDIO_TEE_SELECT_MAP=" a\\\\ :1,a\\\\ :2"
1872+ AUDIO_CHANNEL_MAP_MP4+=(" ${AUDIO_CODER_TEMPLATE_MP4[@]// XXX/ 3} " )
1873+ AUDIO_CHANNEL_MAP_MP4+=(" ${AUDIO_CODER_TEMPLATE_MP4[@]// XXX/ 4} " )
1874+ AUDIO_TEE_SELECT_MAP_MP4=" a\\\\ :3,a\\\\ :4" ;;
18571875 " 1 Stereo Track (From Channels 1 & 2)" )
18581876 AUDIOMAP=" [0:a:0]asplit[orig],pan=stereo| c0=c0 | c1=${PHASE_VALUE_2} c1[stereo1]"
18591877 AUDIO_PLAY_MAP=" pan=stereo|c0=c0|c1=${PHASE_VALUE_2} c1"
@@ -2445,6 +2463,7 @@ _review_all_options(){
24452463 _review_option " VIDEO_INPUT_CHOICE" " ${VIDEO_INPUT_OPTIONS[@]} "
24462464 _review_option " AUDIO_INPUT_CHOICE" " ${AUDIO_INPUT_OPTIONS[@]} "
24472465 _review_option " VIDEO_BIT_DEPTH_CHOICE" " ${VIDEO_BITDEPTH_OPTIONS[@]} "
2466+ _review_option " AUDIO_CODEC_CHOICE" " ${AUDIO_CODEC_OPTIONS[@]} "
24482467 _review_option " AUDIO_MAPPING_CHOICE" " ${CHANNEL_MAPPING_OPTIONS[@]} "
24492468 if [[ -z " ${ALT_INPUT} " ]] ; then
24502469 _review_option " TIMECODE_CHOICE" " ${TIMECODE_OPTIONS[@]} "
@@ -2889,7 +2908,6 @@ if [[ "${DEVICE_INPUT_CHOICE}" = "0" ]] ; then
28892908 if [[ " ${VIDEO_CODEC_CHOICE} " = " FFV1 version 3" ]] ; then
28902909 _review_option -n -d " 16" " FFV1_SLICE_CHOICE" " ${FFV1_SLICE_OPTIONS[@]} "
28912910 fi
2892- _review_option " AUDIO_CODEC_CHOICE" " ${AUDIO_CODEC_OPTIONS[@]} "
28932911elif [[ " ${DEVICE_INPUT_CHOICE} " = " 1" ]] ; then
28942912 _review_option " DV_CONTAINER_CHOICE" " ${DV_CONTAINER_OPTIONS[@]} "
28952913 FORMAT=" rawvideo"
@@ -2933,16 +2951,17 @@ if [[ "${DEVICE_INPUT_CHOICE}" = "0" ]] ; then
29332951 fi
29342952 if [[ " ${FRAMEMD5_CHOICE} " = " true" ]] ; then
29352953 FRAMEMD5NAME=" ${LOGDIR} /${FULL_OUTPUT_ID} .framemd5"
2936- EXTRA_TEE_OUTPUTS+=( " |[f=framemd5:select=v]${FRAMEMD5NAME} " )
2954+ EXTRA_TEE_OUTPUTS+=" |[f=framemd5:select=v\\\\ :0 ]${FRAMEMD5NAME} "
29372955 fi
29382956 if [[ " ${SIGNAL_INPUT} " = ' true' ]] ; then
29392957 AUDIOMAP=$( sed " s/0:a:0/1:a:0/g" <<< " $AUDIOMAP" )
29402958 fi
29412959 if [[ " ${MP4_CHOICE} " = " true" ]] ; then
29422960 RECORDINGFILTER_MP4+=" ,bwdif"
2943- RECORD_COMMAND_MP4+=(-filter_complex " [0:v:0]${RECORDINGFILTER_MP4# ,* } [mp4_v_out];${AUDIOMAP} " )
29442961 MP4NAME=" ${DIR} /${FULL_OUTPUT_ID} .mp4"
2945- EXTRAOUTPUTS+=(" ${MIDDLEOPTIONS_ALL[@]} " -movflags write_colr+faststart " ${RECORD_COMMAND_MP4[@]} " -pix_fmt yuv420p -c:v h264 -c:a aac -map " [mp4_v_out]" " ${AUDIO_CHANNEL_MAP[@]} " " ${MP4NAME} " )
2962+ EXTRA_MP4_FILTER=" ,split=2[vout][mp4_v];[mp4_v]${RECORDINGFILTER_MP4# ,* } [mp4_v_out]"
2963+ EXTRA_MP4_CODER=(-map " [mp4_v_out]" " ${MIDDLEOPTIONS_ALL[@]} " -c:v:1 libopenh264 -pix_fmt:v:1 yuv420p " ${AUDIO_CHANNEL_MAP_MP4[@]} " )
2964+ EXTRA_TEE_OUTPUTS+=" |[f=mp4:movflags=write_colr+faststart:select=v\\\\ :1,${AUDIO_TEE_SELECT_MAP_MP4} ]${MP4NAME} "
29462965 fi
29472966 if [[ " ${FORMAT} " = " Matroska" ]] ; then
29482967 _review_option " EMBED_LOGS_CHOICE" " ${EMBED_LOGS_OPTIONS[@]} "
0 commit comments