| # Stack the five side-by-side arms into one labelled comparison video. | |
| # Each row is [pose reference | generated output], captioned with the RoPE shift applied, the lag | |
| # it predicts, and the lag actually measured by score_arms.py. | |
| set -euo pipefail | |
| HERE=/home/xinyuy/flexvideo/LTX-2/test_temporal_offset | |
| SRC=$HERE/out_viz/with_condition | |
| FONT=/usr/share/fonts/truetype/dejavu/DejaVuSansMono.ttf | |
| LABELS=( | |
| "A_base|A reference | output RoPE +0 predicted lag 0 measured 0" | |
| "B_rope_p8|B reference | output RoPE +8 predicted lag -8 measured -8" | |
| "C_rope_p16|C reference | output RoPE +16 predicted lag -16 measured -16" | |
| "D_rope_m16|D reference | output RoPE -16 predicted lag +16 measured +16" | |
| "E_content_p16|E reference | output CONTENT +16 (control) predicted lag -16 measured -16" | |
| ) | |
| inputs=() ; filters=() ; labels="" | |
| i=0 | |
| for entry in "${LABELS[@]}"; do | |
| IFS='|' read -r arm text <<<"$entry" | |
| inputs+=(-i "$SRC/$arm.mp4") | |
| # Escape the caption for drawtext, then reserve a 40px black bar above each row for it. | |
| esc=${text//:/\\:} | |
| filters+=("[$i:v]scale=960:320,pad=960:360:0:40:black,drawtext=fontfile=$FONT:text='$esc':fontcolor=white:fontsize=17:x=8:y=12[v$i]") | |
| labels+="[v$i]" | |
| i=$((i+1)) | |
| done | |
| ffmpeg -y -loglevel error "${inputs[@]}" \ | |
| -filter_complex "$(IFS=';'; echo "${filters[*]}");${labels}vstack=inputs=$i[out]" \ | |
| -map "[out]" -r 24 -c:v libx264 -crf 18 -pix_fmt yuv420p "$HERE/comparison_grid.mp4" | |
| echo "wrote $HERE/comparison_grid.mp4" | |
| ffprobe -v error -select_streams v:0 -show_entries stream=width,height,nb_frames -of csv=p=0 "$HERE/comparison_grid.mp4" | |
Xet Storage Details
- Size:
- 1.65 kB
- Xet hash:
- 87fe33dac2d14ad5a5cb58ae3878f340b9ec07b425a348f6003a6d8a0468b321
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.