Executando verificação de segurança...
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" 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 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 "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 "DOWNLOAD_PATH/live_raw.%(ext)s" "URL"

RAW_FILE=(ls "DOWNLOAD_PATH" | grep live_raw | head -n 1)
RAW_PATH="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 "RAW_PATH" -c copy "DOWNLOAD_PATH/live_completa.mp4" -y

Calcula blocos

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

if [ -z "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=((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...