[{"data":1,"prerenderedAt":243},["ShallowReactive",2],{"posts:\u002Fposts\u002F2024-03-12-bash-join-to-video":3},{"id":4,"title":5,"body":6,"categories":228,"date":230,"description":231,"extension":232,"image":231,"lang":231,"meta":233,"navigation":84,"path":234,"seo":235,"stem":236,"tags":237,"titleInPicture":241,"__hash__":242},"posts\u002Fposts\u002F2024-03-12-bash-join-to-video.md","Bash script to join frames into a video",{"type":7,"value":8,"toc":226},"minimark",[9,13,222],[10,11,12],"p",{},"Assuming that you rendered a video into individual frames contained in a folder, this bash script requires you to input the folder name, and it outputs a webm video of the frame sequence, named the same as the input folder.",[14,15,20],"pre",{"className":16,"code":17,"language":18,"meta":19,"style":19},"language-bash shiki shiki-themes github-dark","#!\u002Fbin\u002Fsh\ndie () {\n    echo >&2 \"$@\"\n    exit 1\n}\n\nif [ \"$#\" -eq 1 ]; then\n\n    input=$1\n    echo \"making video from .\u002F$input\u002F*.png into $input.webm\"\n    read -p \"Press enter to continue\"\n    ffmpeg -framerate 20 -pattern_type glob -i \".\u002F$input\u002F*.png\" \"$input.webm\"\nelse\n    echo \"please provide the input frames folder\";\nfi\n","bash","",[21,22,23,32,43,64,73,79,86,115,120,133,152,164,199,205,216],"code",{"__ignoreMap":19},[24,25,28],"span",{"class":26,"line":27},"line",1,[24,29,31],{"class":30},"sAwPA","#!\u002Fbin\u002Fsh\n",[24,33,35,39],{"class":26,"line":34},2,[24,36,38],{"class":37},"svObZ","die",[24,40,42],{"class":41},"s95oV"," () {\n",[24,44,46,50,54,58,61],{"class":26,"line":45},3,[24,47,49],{"class":48},"sDLfK","    echo",[24,51,53],{"class":52},"snl16"," >&2",[24,55,57],{"class":56},"sU2Wk"," \"",[24,59,60],{"class":48},"$@",[24,62,63],{"class":56},"\"\n",[24,65,67,70],{"class":26,"line":66},4,[24,68,69],{"class":48},"    exit",[24,71,72],{"class":48}," 1\n",[24,74,76],{"class":26,"line":75},5,[24,77,78],{"class":41},"}\n",[24,80,82],{"class":26,"line":81},6,[24,83,85],{"emptyLinePlaceholder":84},true,"\n",[24,87,89,92,95,98,101,103,106,109,112],{"class":26,"line":88},7,[24,90,91],{"class":52},"if",[24,93,94],{"class":41}," [ ",[24,96,97],{"class":56},"\"",[24,99,100],{"class":48},"$#",[24,102,97],{"class":56},[24,104,105],{"class":52}," -eq",[24,107,108],{"class":48}," 1",[24,110,111],{"class":41}," ]; ",[24,113,114],{"class":52},"then\n",[24,116,118],{"class":26,"line":117},8,[24,119,85],{"emptyLinePlaceholder":84},[24,121,123,126,129],{"class":26,"line":122},9,[24,124,125],{"class":41},"    input",[24,127,128],{"class":52},"=",[24,130,132],{"class":131},"s9osk","$1\n",[24,134,136,138,141,144,147,149],{"class":26,"line":135},10,[24,137,49],{"class":48},[24,139,140],{"class":56}," \"making video from .\u002F",[24,142,143],{"class":41},"$input",[24,145,146],{"class":56},"\u002F*.png into ",[24,148,143],{"class":41},[24,150,151],{"class":56},".webm\"\n",[24,153,155,158,161],{"class":26,"line":154},11,[24,156,157],{"class":48},"    read",[24,159,160],{"class":48}," -p",[24,162,163],{"class":56}," \"Press enter to continue\"\n",[24,165,167,170,173,176,179,182,185,188,190,193,195,197],{"class":26,"line":166},12,[24,168,169],{"class":37},"    ffmpeg",[24,171,172],{"class":48}," -framerate",[24,174,175],{"class":48}," 20",[24,177,178],{"class":48}," -pattern_type",[24,180,181],{"class":56}," glob",[24,183,184],{"class":48}," -i",[24,186,187],{"class":56}," \".\u002F",[24,189,143],{"class":41},[24,191,192],{"class":56},"\u002F*.png\"",[24,194,57],{"class":56},[24,196,143],{"class":41},[24,198,151],{"class":56},[24,200,202],{"class":26,"line":201},13,[24,203,204],{"class":52},"else\n",[24,206,208,210,213],{"class":26,"line":207},14,[24,209,49],{"class":48},[24,211,212],{"class":56}," \"please provide the input frames folder\"",[24,214,215],{"class":41},";\n",[24,217,219],{"class":26,"line":218},15,[24,220,221],{"class":52},"fi\n",[223,224,225],"style",{},"html pre.shiki code .sAwPA, html code.shiki .sAwPA{--shiki-default:#6A737D}html pre.shiki code .svObZ, html code.shiki .svObZ{--shiki-default:#B392F0}html pre.shiki code .s95oV, html code.shiki .s95oV{--shiki-default:#E1E4E8}html pre.shiki code .sDLfK, html code.shiki .sDLfK{--shiki-default:#79B8FF}html pre.shiki code .snl16, html code.shiki .snl16{--shiki-default:#F97583}html pre.shiki code .sU2Wk, html code.shiki .sU2Wk{--shiki-default:#9ECBFF}html pre.shiki code .s9osk, html code.shiki .s9osk{--shiki-default:#FFAB70}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"title":19,"searchDepth":34,"depth":34,"links":227},[],[229],"blog","2024-03-12",null,"md",{},"\u002Fposts\u002F2024-03-12-bash-join-to-video",{"title":5,"description":12},"posts\u002F2024-03-12-bash-join-to-video",[238,239,240],"utilities","tool_bash","gist",false,"my47Ire5D3q0SbT6VrRwTTvjguWzavCAC1QZ9eiFhVU",1791578988078]