2024-09-15 05:36:41 +03:00
|
|
|
#!/usr/bin/bash
|
|
|
|
|
|
|
|
set -e
|
|
|
|
export TMP_DIR="$(mktemp -d)";
|
|
|
|
|
|
|
|
cleanup() {
|
|
|
|
rm -fr "${TMP_DIR}";
|
|
|
|
}
|
|
|
|
|
|
|
|
trap cleanup EXIT
|
|
|
|
|
|
|
|
|
2024-09-15 06:00:18 +03:00
|
|
|
export INPUT="$1";
|
|
|
|
export OUTPUT="$(realpath "$2")";
|
2024-09-15 05:36:41 +03:00
|
|
|
export BASE_URL="$3"
|
|
|
|
|
|
|
|
if [ -z "${BASE_URL}" ]; then
|
|
|
|
export BASE_URL="CHANGEME";
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
2024-09-15 06:00:18 +03:00
|
|
|
mkdir -p "${OUTPUT}"
|
2024-09-15 05:36:41 +03:00
|
|
|
|
|
|
|
export ORIG="$(pwd)";
|
|
|
|
|
|
|
|
cd "${TMP_DIR}"
|
|
|
|
|
2024-09-15 06:00:18 +03:00
|
|
|
ffmpeg -i "${INPUT}" -filter_complex "[0:a]channelsplit=channel_layout=stereo[left][right]" -map '[left]' -f s8 -ac 1 -ar 48k "${OUTPUT}/left.s8" -map '[right]' -f s8 -ac 1 -ar 48k "${OUTPUT}/right.s8"
|
|
|
|
ffmpeg -i "${INPUT}" -vf fps=20 frame%04d.png
|
2024-09-15 05:36:41 +03:00
|
|
|
|
2024-09-15 06:00:18 +03:00
|
|
|
ls frame*.png | parallel 'echo {}; python3 ${ORIG}/cc-pic.py -W 164 -H 81 -p cover {} ${OUTPUT}/{.}.cpi'
|
2024-09-15 05:36:41 +03:00
|
|
|
rm frame*.png
|
|
|
|
|
|
|
|
cd "${ORIG}"
|
|
|
|
|
2024-09-15 06:00:18 +03:00
|
|
|
export FRAME_COUNT="$(ls ${OUTPUT}/*.cpi | wc -l)";
|
|
|
|
|
|
|
|
printf '{"frame_time": 0.05, "frame_count": %d, "video": "%s", "audio": {"l": "%s", "r": "%s"}}\n' "${FRAME_COUNT}" "${BASE_URL}/frame%04d.cpi" "${BASE_URL}/left.s8" "${BASE_URL}/right.s8" > "${OUTPUT}/info.json"
|
2024-09-15 05:36:41 +03:00
|
|
|
|