Skip to content

Commit 915d315

Browse files
committed
add the framemd5 output to the tee muxer
1 parent 5cf8f76 commit 915d315

1 file changed

Lines changed: 50 additions & 26 deletions

File tree

vrecord

Lines changed: 50 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -575,8 +575,28 @@ _setup_vrecord_process(){
575575
fi
576576
RECORD_COMMAND+=("${MIDDLEOPTIONS_PRES[@]}" "${MIDDLEOPTIONS_ALL[@]}")
577577
if [[ "${RUNTYPE}" = "record" ]] ; then
578-
RECORD_COMMAND+=(-filter_complex "[0:v:0]${RECORDINGFILTER#,*}${TC_WRITE}${CAPTION_WRITE}[vout];${AUDIOMAP}" -map "[vout]" "${AUDIO_CHANNEL_MAP[@]}")
579-
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)
578+
if [[ "${FRAMEMD5_CHOICE}" = "true" ]] ; then
579+
FRAMEMD5_IDX=1
580+
FRAMEMD5NAME="${LOGDIR}/${FULL_OUTPUT_ID}.framemd5"
581+
RECORD_COMMAND_TEE+=(\|[f=framehash:hash=MD5:onfail=abort:select=v\\\\:"${FRAMEMD5_IDX}"]"${FRAMEMD5NAME}")
582+
RECORD_COMMAND_SPLIT=",split=2[vout][MD5_VOUT]"
583+
RECORD_COMMAND_MAP+=(-map "[vout]" -map "[MD5_VOUT]")
584+
EXTRAOPTIONS+=(-c:v:"${FRAMEMD5_IDX}" rawvideo)
585+
else
586+
RECORD_COMMAND_SPLIT="[vout]"
587+
RECORD_COMMAND_MAP+=(-map "[vout]")
588+
fi
589+
AUDIO_TEE_SELECT_MAP=""
590+
RECORD_COMMAND+=(-c:a:0 pcm_s24le)
591+
for AUD_IDX in "${AUDIO_CHANNEL_IDX[@]}" ; do
592+
AUDIO_TEE_SELECT_MAP+="${AUDIO_TEE_SELECT_MAP:+,}a\\\\:${AUD_IDX}"
593+
for OPTION in "${AUDIO_MIDDLEOPTIONS_TEMPLATE[@]}" ; do
594+
RECORD_COMMAND+=("${OPTION//:X/:${AUD_IDX}}")
595+
done
596+
done
597+
RECORD_COMMAND+=(-filter_complex "[0:v:0]${RECORDINGFILTER#,*}${TC_WRITE}${CAPTION_WRITE}${RECORD_COMMAND_SPLIT};${AUDIOMAP}" "${RECORD_COMMAND_MAP[@]}" "${AUDIO_CHANNEL_MAP[@]}" "${EXTRAOPTIONS[@]}")
598+
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${RECORD_COMMAND_TEE[@]})
599+
580600
RECORD_COMMAND+=("${EXTRAOUTPUTS[@]}")
581601
else
582602
if [[ "${SIGNAL_INPUT}" = 'true' ]] ; then
@@ -626,7 +646,7 @@ _setup_vrecord_process(){
626646
VRECORD_STEPS="2" # Steps: record | player (record is adjusted if actually recording)
627647
RECORD_COMMAND=("${FFMPEG_BIN}")
628648
RECORD_COMMAND+=(-nostdin -nostats "${TIME_LIMIT[@]}" "${GRAB_INPUT[@]}")
629-
RECORD_COMMAND+=("${MIDDLEOPTIONS_PRES[@]}" "${MIDDLEOPTIONS_ALL[@]}")
649+
RECORD_COMMAND+=("${MIDDLEOPTIONS_PRES_AUDIO[@]}" "${MIDDLEOPTIONS_ALL[@]}")
630650
if [[ "${RUNTYPE}" = "record" ]] ; then
631651
RECORD_COMMAND+=(-f "${FORMAT}" -filter_complex "${AUDIOMAP}" "${AUDIO_CHANNEL_MAP[@]}" "${VRECORD_OUTPUT}")
632652
fi
@@ -1829,57 +1849,62 @@ _lookup_choice(){
18291849
_add_mediaconch_rule_set "${CODEC_UNCOMPRESSED_TEST}"
18301850
if [[ "${PIXEL_FORMAT}" = "yuv422p10" ]] ; then
18311851
VIDEOCODECNAME="Uncompressed 10-bit 4:2:2"
1832-
MIDDLEOPTIONS_PRES+=(-c:v v210)
1852+
MIDDLEOPTIONS_PRES+=(-c:v:0 v210)
18331853
elif [[ "${PIXEL_FORMAT}" = "uyvy422" ]] ; then
18341854
VIDEOCODECNAME="Uncompressed 8-bit 4:2:2"
1835-
MIDDLEOPTIONS_PRES+=(-c:v rawvideo -pix_fmt uyvy422 -tag:v 2vuy)
1855+
MIDDLEOPTIONS_PRES+=(-c:v:0 rawvideo -pix_fmt:v:0 uyvy422 -tag:v:0 2vuy)
18361856
fi ;;
18371857
"FFV1 version 3")
18381858
_add_mediaconch_rule_set "${CODEC_FFV1_TEST}"
18391859
VIDEOCODECNAME="FFV1 version 3"
1840-
MIDDLEOPTIONS_PRES+=(-c:v ffv1 -level 3 -g 1 -slices "${FFV1_SLICES}" -slicecrc 1)
1860+
MIDDLEOPTIONS_PRES+=(-c:v:0 ffv1 -level:v:0 3 -g:v:0 1 -slices:v:0 "${FFV1_SLICES}" -slicecrc:v:0 1)
18411861
SUFFIX="_ffv1" ;;
18421862
"JPEG2000")
18431863
VIDEOCODECNAME="JPEG2000"
1844-
MIDDLEOPTIONS_PRES+=(-c:v libopenjpeg)
1864+
MIDDLEOPTIONS_PRES+=(-c:v:0 libopenjpeg)
18451865
SUFFIX="_j2k" ;;
18461866
"ProRes")
18471867
VIDEOCODECNAME="Apple ProRes 422"
1848-
MIDDLEOPTIONS_PRES+=(-c:v prores_ks -flags +ildct -profile:v 2)
1868+
MIDDLEOPTIONS_PRES+=(-c:v:0 prores_ks -flags:v:0 +ildct -profile:v:0 2)
18491869
SUFFIX="_prores" ;;
18501870
"ProRes (HQ)")
18511871
VIDEOCODECNAME="Apple ProRes 422 HQ"
1852-
MIDDLEOPTIONS_PRES+=(-c:v prores_ks -flags +ildct -profile:v 3)
1872+
MIDDLEOPTIONS_PRES+=(-c:v:0 prores_ks -flags:v:0 +ildct -profile:v:0 3)
18531873
SUFFIX="_prores" ;;
18541874
"h264")
18551875
VIDEOCODECNAME="H.264"
1856-
MIDDLEOPTIONS_PRES+=(-c:v h264 -pix_fmt yuv420p)
1876+
MIDDLEOPTIONS_PRES+=(-c:v:0 h264 -pix_fmt:v:0 yuv420p)
18571877
SUFFIX="_h264" ;;
18581878
"HuffYUV")
18591879
VIDEOCODECNAME="HuffYUV"
18601880
if [[ "${PIXEL_FORMAT}" = "yuv422p10" ]] ; then
1861-
MIDDLEOPTIONS_PRES+=(-c:v ffvhuff -pix_fmt yuv422p10le -pred median -context 1)
1881+
MIDDLEOPTIONS_PRES+=(-c:v:0 ffvhuff -pix_fmt:v:0 yuv422p10le -pred:v:0 median -context:v:0 1)
18621882
elif [[ "${PIXEL_FORMAT}" = "uyvy422" ]] ; then
1863-
MIDDLEOPTIONS_PRES+=(-c:v ffvhuff -pix_fmt yuv422p -pred median -context 1)
1883+
MIDDLEOPTIONS_PRES+=(-c:v:0 ffvhuff -pix_fmt:v:0 yuv422p -pred:v:0 median -context:v:0 1)
18641884
fi
18651885
SUFFIX="_huff" ;;
18661886

18671887
# video pixel format and bit depth
18681888
"10 bit") PIXEL_FORMAT="yuv422p10" ;;
18691889
"8 bit") PIXEL_FORMAT="uyvy422" ;;
18701890

1891+
1892+
18711893
# audio codec
18721894
"24-bit PCM")
1873-
MIDDLEOPTIONS_PRES+=(-c:a pcm_s24le)
1874-
MIDDLEOPTIONS_PRES+=(-rf64 auto)
1895+
MIDDLEOPTIONS_PRES_AUDIO+=(-c:a pcm_s24le)
1896+
MIDDLEOPTIONS_PRES_AUDIO+=(-rf64 auto)
1897+
AUDIO_MIDDLEOPTIONS_TEMPLATE+=(-c:a:X pcm_s24le)
18751898
AUDIO_EXT='wav' ;;
18761899
"24-bit FLAC")
1877-
MIDDLEOPTIONS_PRES+=(-c:a flac)
1878-
MIDDLEOPTIONS_PRES+=(-sample_fmt s32)
1879-
MIDDLEOPTIONS_PRES+=(-bits_per_raw_sample:a 24)
1900+
MIDDLEOPTIONS_PRES_AUDIO+=(-c:a flac)
1901+
MIDDLEOPTIONS_PRES_AUDIO+=(-sample_fmt s32)
1902+
MIDDLEOPTIONS_PRES_AUDIO+=(-bits_per_raw_sample:a 24)
1903+
AUDIO_MIDDLEOPTIONS_TEMPLATE+=(-c:a:X flac -sample_fmt:a:X s32 -bits_per_raw_sample:a:X 24)
18801904
AUDIO_EXT='flac' ;;
18811905
"AAC")
1882-
MIDDLEOPTIONS_PRES+=(-c:a aac) ;;
1906+
MIDDLEOPTIONS_PRES_AUDIO+=(-c:a aac)
1907+
AUDIO_MIDDLEOPTIONS_TEMPLATE+=(-c:a:X aac) ;;
18831908

18841909
# audio mappings
18851910
"2 Stereo Tracks (Channels 1 & 2 -> 1st Track Stereo, Channels 3 & 4 -> 2nd Track Stereo)")
@@ -1890,23 +1915,23 @@ _lookup_choice(){
18901915
AUDIO_CHANNEL_MAP+=(-map "[orig]")
18911916
AUDIO_CHANNEL_MAP+=(-map "[stereo1]")
18921917
AUDIO_CHANNEL_MAP+=(-map "[stereo2]")
1893-
AUDIO_TEE_SELECT_MAP="a\\\\:1,a\\\\:2" ;;
1918+
AUDIO_CHANNEL_IDX=(1 2) ;;
18941919
"1 Stereo Track (From Channels 1 & 2)")
18951920
AUDIOMAP="[0:a:0]asplit[orig],pan=stereo| c0=c0 | c1=${PHASE_VALUE_2}c1[stereo1]"
18961921
AUDIOMAP_MP4="[0:a:0]pan=stereo| c0=c0 | c1=${PHASE_VALUE_2}c1[stereo1]"
18971922
AUDIO_PLAY_MAP="pan=stereo|c0=c0|c1=${PHASE_VALUE_2}c1"
18981923
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"
18991924
AUDIO_CHANNEL_MAP+=(-map "[orig]")
19001925
AUDIO_CHANNEL_MAP+=(-map "[stereo1]")
1901-
AUDIO_TEE_SELECT_MAP="a\\\\:1" ;;
1926+
AUDIO_CHANNEL_IDX=(1) ;;
19021927
"1 Stereo Track (From Channels 3 & 4)")
19031928
AUDIOMAP="[0:a:0]asplit[orig],pan=stereo| c0=c2 | c1=${PHASE_VALUE_2}c3[stereo1]"
19041929
AUDIOMAP_MP4="[0:a:0]pan=stereo| c0=c2 | c1=${PHASE_VALUE_2}c3[stereo1]"
19051930
AUDIO_PLAY_MAP="pan=stereo|c0=c2|c1=${PHASE_VALUE_2}c3"
19061931
AUDIO_PLAY_LABELS=",drawtext=fontfile=${DEFAULTFONT}:text='L(1)':fontcolor=white:fontsize=18:x=0:y=40,drawtext=fontfile=${DEFAULTFONT}:text='R(1)':fontcolor=white:fontsize=18:x=0:y=60"
19071932
AUDIO_CHANNEL_MAP+=(-map "[orig]")
19081933
AUDIO_CHANNEL_MAP+=(-map "[stereo1]")
1909-
AUDIO_TEE_SELECT_MAP="a\\\\:1" ;;
1934+
AUDIO_CHANNEL_IDX=(1) ;;
19101935
"Channel 1 -> 1st Track Mono, Channel 2 -> 2nd Track Mono")
19111936
AUDIOMAP="[0:a:0]asplit[orig],pan=mono| c0=c0[mono1];[0:a:0]pan=mono| c0=${PHASE_VALUE_2}c1[mono2]"
19121937
AUDIOMAP_MP4="[0:a:0]pan=mono| c0=c0[mono1];[0:a:0]pan=mono| c0=${PHASE_VALUE_2}c1[mono2]"
@@ -1915,7 +1940,7 @@ _lookup_choice(){
19151940
AUDIO_CHANNEL_MAP+=(-map "[orig]")
19161941
AUDIO_CHANNEL_MAP+=(-map "[mono1]")
19171942
AUDIO_CHANNEL_MAP+=(-map "[mono2]")
1918-
AUDIO_TEE_SELECT_MAP="a\\\\:1,a\\\\:2" ;;
1943+
AUDIO_CHANNEL_IDX=(1 2) ;;
19191944
"Channel 2 -> 1st Track Mono, Channel 1 -> 2nd Track Mono")
19201945
AUDIOMAP="[0:a:0]asplit[orig],pan=mono| c0=${PHASE_VALUE_2}c1[mono1];[0:a:0]pan=mono| c0=c0[mono2]"
19211946
AUDIOMAP_MP4="[0:a:0]pan=mono| c0=${PHASE_VALUE_2}c1[mono1];[0:a:0]pan=mono| c0=c0[mono2]"
@@ -1924,23 +1949,23 @@ _lookup_choice(){
19241949
AUDIO_CHANNEL_MAP+=(-map "[orig]")
19251950
AUDIO_CHANNEL_MAP+=(-map "[mono1]")
19261951
AUDIO_CHANNEL_MAP+=(-map "[mono2]")
1927-
AUDIO_TEE_SELECT_MAP="a\\\\:1,a\\\\:2" ;;
1952+
AUDIO_CHANNEL_IDX=(1 2) ;;
19281953
"Channel 1 -> Single Track Mono")
19291954
AUDIOMAP="[0:a:0]asplit[orig],pan=mono| c0=c0[mono1]"
19301955
AUDIOMAP_MP4="[0:a:0]pan=mono| c0=c0[mono1]"
19311956
AUDIO_PLAY_MAP="pan=mono| c0=c0"
19321957
AUDIO_PLAY_LABELS=",drawtext=fontfile=${DEFAULTFONT}:text='M(1)':fontcolor=white:fontsize=18:x=0:y=0"
19331958
AUDIO_CHANNEL_MAP+=(-map "[orig]")
19341959
AUDIO_CHANNEL_MAP+=(-map "[mono1]")
1935-
AUDIO_TEE_SELECT_MAP="a\\\\:1" ;;
1960+
AUDIO_CHANNEL_IDX=(1) ;;
19361961
"Channel 2 -> Single Track Mono")
19371962
AUDIOMAP="[0:a:0]asplit[orig],pan=mono| c0=c1[mono1]"
19381963
AUDIOMAP_MP4="[0:a:0]pan=mono| c0=c1[mono1]"
19391964
AUDIO_PLAY_MAP="pan=mono| c0=c1"
19401965
AUDIO_PLAY_LABELS=",drawtext=fontfile=${DEFAULTFONT}:text='M(1)':fontcolor=white:fontsize=18:x=0:y=20"
19411966
AUDIO_CHANNEL_MAP+=(-map "[orig]")
19421967
AUDIO_CHANNEL_MAP+=(-map "[mono1]")
1943-
AUDIO_TEE_SELECT_MAP="a\\\\:1" ;;
1968+
AUDIO_CHANNEL_IDX=(1) ;;
19441969
# Audio mode channel options
19451970
"Mono")
19461971
AUDIOMAP="[0:a:0]pan=mono| c0=c0[mono1]"
@@ -3106,7 +3131,6 @@ if [[ "${DEVICE_INPUT_CHOICE}" = "0" ]] ; then
31063131
fi
31073132
if [[ "${FRAMEMD5_CHOICE}" = "true" ]] ; then
31083133
FRAMEMD5NAME="${LOGDIR}/${FULL_OUTPUT_ID}.framemd5"
3109-
EXTRAOUTPUTS+=(-an -f framemd5 "${FRAMEMD5NAME}")
31103134
fi
31113135
if [[ "${SIGNAL_INPUT}" = 'true' ]] ; then
31123136
AUDIOMAP=$(sed "s/0:a:0/1:a:0/g" <<< "$AUDIOMAP")

0 commit comments

Comments
 (0)