1

Muito bom, criei alguns scripts e adicionei alguns alias seguindo a mesma ideia.

Talvez isso te atenda bem tbm, esse trecho corta o video em videos menores.

`#!/bin/bash

Uso:

./download_serie_live.sh "https://youtu.be/-1GWW4XjO10" --tempo-total-horas=8 --tempo-total-minutos=15 --tempo-video-minutos=15

URL_DEFAULT="https://youtu.be/-1GWW4XjO10"
URL="$URL_DEFAULT"

DOWNLOAD_PATH="HOME/Downloads/YoutubeLiveParts/PartTwo"mkdirp"HOME/Downloads/YoutubeLiveParts/PartTwo" mkdir -p "DOWNLOAD_PATH"

Valores padrão

INICIO_HORAS=0
INICIO_MINUTOS=0
TEMPO_TOTAL_MINUTOS_EXTRA=0

Parsing de parâmetros

for arg in "$@"
do
case argintempototalhoras=)TEMPOTOTALHORAS="arg in --tempo-total-horas=*) TEMPO_TOTAL_HORAS="{arg#=}" ;;
--tempo-total-minutos=
) TEMPO_TOTAL_MINUTOS_EXTRA="{arg#*=}" ;; --tempo-video-minutos=*) TEMPO_VIDEO_MINUTOS="{arg#=}" ;;
--quantidade-videos=
) QUANTIDADE_VIDEOS="{arg#*=}" ;; --inicio-horas=*) INICIO_HORAS="{arg#=}" ;;
--inicio-minutos=
) INICIO_MINUTOS="{arg#*=}" ;; http*) URL="arg" ;;
esac
done

if [ -z "TEMPOTOTALHORAS"][z"TEMPO_TOTAL_HORAS" ] || [ -z "TEMPO_VIDEO_MINUTOS" ]; then
echo "Uso: $0 [URL] --tempo-total-horas=10 --tempo-total-minutos=15 --tempo-video-minutos=30 [--quantidade-videos=20] [--inicio-horas=H] [--inicio-minutos=M]"
exit 1
fi

echo ">>> Usando URL: $URL"
echo ">>> Baixando vídeo..."

Baixar vídeo consolidado

yt-dlp --no-part -o "DOWNLOADPATH/liveraw.DOWNLOAD_PATH/live_raw.%(ext)s" "URL"

RAW_FILE=(ls"(ls "DOWNLOAD_PATH" | grep live_raw | head -n 1)
RAW_PATH="DOWNLOADPATH/DOWNLOAD_PATH/RAW_FILE"

if [ ! -f "$RAW_PATH" ]; then
echo "❌ ERRO: Arquivo da live não foi encontrado. Verifique o link."
exit 1
fi

Converte para .mp4

echo ">>> Convertendo para MP4..."
ffmpeg -i "RAWPATH"ccopy"RAW_PATH" -c copy "DOWNLOAD_PATH/live_completa.mp4" -y

Calcula blocos

TOTAL_MINUTOS=((TEMPOTOTALHORAS60+TEMPOTOTALMINUTOSEXTRA))SEGMENTOMINUTOS=((TEMPO_TOTAL_HORAS * 60 + TEMPO_TOTAL_MINUTOS_EXTRA)) SEGMENTO_MINUTOS=TEMPO_VIDEO_MINUTOS
INICIO_TOTAL_MINUTOS=$((INICIO_HORAS * 60 + INICIO_MINUTOS))

if [ -z "QUANTIDADEVIDEOS"];thenQUANTIDADEVIDEOS=QUANTIDADE_VIDEOS" ]; then QUANTIDADE_VIDEOS=(( (TOTAL_MINUTOS + SEGMENTO_MINUTOS - 1) / SEGMENTO_MINUTOS ))
fi

convert_to_hhmmss() {
local t=$1
printf "%02d:%02d:%02d" $((t/3600)) $(((t%3600)/60)) $((t%60))
}

Corta em partes

for ((i=0; i<QUANTIDADE_VIDEOS; i++))
do
START_MIN=((INICIOTOTALMINUTOS+iSEGMENTOMINUTOS))STARTSEC=((INICIO_TOTAL_MINUTOS + i * SEGMENTO_MINUTOS)) START_SEC=((START_MIN * 60))
START_TIME=$(convert_to_hhmmss $START_SEC)

END_MIN=$((INICIO_TOTAL_MINUTOS + (i+1) * SEGMENTO_MINUTOS))
if [ $END_MIN -gt $((INICIO_TOTAL_MINUTOS + TOTAL_MINUTOS)) ]; then
    END_MIN=$((INICIO_TOTAL_MINUTOS + TOTAL_MINUTOS))
fi
END_SEC=$((END_MIN * 60))
DURATION=$((END_SEC - START_SEC))

echo ">>> Cortando parte $((i+1)) (Início: $START_TIME, Duração: ${DURATION}s)"
ffmpeg -ss $START_TIME -i "$DOWNLOAD_PATH/live_completa.mp4" -t $DURATION -c copy \
    "$DOWNLOAD_PATH/parte_$((i+1)).mp4" -y

done

echo "✅ Processo finalizado! Arquivos salvos em: $DOWNLOAD_PATH"`

Carregando publicação patrocinada...