As part of the last post I initially used a bash script to generate the commands to output the individual videos. As per usual, when I finally got fed up of the limitations and syntax issues in bash I switched to a proper programming language, perl. However this time I learnt a neat trick to doing multi-line commands in bash with comments embedded using the array feature of bash. A multi-line command typically looks like:
melt \
color:black \
out=$audiolen \
...
However what if you want to add comments into the command? You can’t.
To solve this create an array:
cmd=(
# Take black background track for same number of seconds as the MP3, then add 10 seconds of another image
melt
color:black
out=$audiolen
...
)
and then use the following magic to execute it:
"${cmd[@]}"
Using this you can also conditionally add in extra statements if you’re using a pipeline-type program such as imagemagick (convert
) or melt
:
cmd+=(
# Output to the file
-consumer avformat
target="$target"
mlt_profile="hdv_720_25p"
f=mpeg acodec=mp2 ab=96k vcodec=mpeg2video vb=1000k
)