erplibre/script/selenium/combine_video.sh

51 lines
1.7 KiB
Bash
Executable file

#!/usr/bin/env bash
# Get two last .webm file
videos=($(ls -t *.webm | head -n 2))
if [ ${#videos[@]} -ne 2 ]; then
echo "Error : you need two files .webm in root directory"
exit 1
fi
timestamp=$(date +"%Y%m%d_%H%M%S")
output_name="output_${timestamp}.webm"
video1="${videos[0]}"
video2="${videos[1]}"
echo "first video ${video1}"
echo "second video ${video2}"
# Obtenez les durées des vidéos
duration1=$(ffmpeg -i "$video1" 2>&1 | grep 'Duration' | cut -d ' ' -f 4 | tr -d ,)
duration2=$(ffmpeg -i "$video2" 2>&1 | grep 'Duration' | cut -d ' ' -f 4 | tr -d ,)
echo "duration 1 : ${duration1}"
echo "duration 2 : ${duration2}"
# Convertir les durées en secondes
duration1_sec=$(echo "$duration1" | awk -F: '{ print ($1 * 3600) + ($2 * 60) + $3 }')
duration2_sec=$(echo "$duration2" | awk -F: '{ print ($1 * 3600) + ($2 * 60) + $3 }')
echo "duration 1 sec : ${duration1_sec}"
echo "duration 2 sec : ${duration2_sec}"
# Déterminer la durée la plus courte
min_duration=$(echo "$duration1_sec $duration2_sec" | awk '{print ($1 < $2) ? $1 : $2}')
echo "Min duration : ${min_duration}"
# Créez la sortie
#output_name="output.mp4"
# Utiliser ffmpeg pour couper et empiler les vidéos
#ffmpeg -i "$video1" -i "$video2" -filter_complex "
# [0:v]trim=start=0:end=$min_duration,setpts=PTS-STARTPTS[v0];
# [1:v]trim=start=0:end=$min_duration,setpts=PTS-STARTPTS[v1];
# [v0][v1]hstack=inputs=2" "$output_name"
#echo "Les vidéos ont été combinées en $output_name"
ffmpeg -i "${videos[0]}" -i "${videos[1]}" -filter_complex "hstack=inputs=2" "${output_name}"
# with normalize size video
#ffmpeg -i "${videos[0]}" -i "${videos[1]}" -filter_complex "[0:v]scale=320:240[v0]; [1:v]scale=320:240[v1]; [v0][v1]hstack=inputs=2" "${output_name}"
echo "${output_name}"