Hoje venho compartilhar com vocês alguns scripts que eu uso a algum tempo no meu dia a dia, pra quem não sabe, trabalho com Visão Computacional aqui na Dataside e o'que eu mais preciso utilizar são imagens e vídeos, e onde temos um bom montante de vídeos na Internet? No Youtube, é claro!
Com isso em mente criei alguns scripts que me ajudam a baixar, recortar e até concatenar vídeos de uma forma fácil e intuitiva utilizando algumas bibliotecas no Python, vem comigo que eu vou te mostrar como!
Primeiramente, temos que instalar as bibliotecas que iremos utilizar:
pip install pytube
pip install moviepy
Para baixar os vídeos, utilizamos os seguintes comandos:
Na linha 1 e 2 importamos as bibliotecas, a biblioteca ‘sys’ é apenas para encerrar a aplicação caso o link do vídeo esteja errado, e a ‘pytube’ é a biblioteca que instalamos anteriormente
Na linha 4 colocamos o vídeo que queremos realizar o download
Das linhas 6 a 9 salvamos na memória o link colocado anteriormente e, caso o link seja inválido caímos no except e encerramos o script (Bota o link certo eim!)
Nas linhas 13, 14 e 15 podemos escolher qual a qualidade que queremos no vídeo, neste caso, estou usando a qualidade melhor existente.
Na linha 18 também podemos salvar apenas o áudio do vídeo se for desejado, basta comentar as linhas 13, 14 e 15 e manter a linha 18
E na linha 22, baixamos o vídeo na pasta 'vídeos'
Prontinho, é assim que baixamos os vídeos do Youtube! Simples não?
Agora irei mostrar como cortamos partes indesejadas dos vídeos com a biblioteca ‘moviepy’, segue abaixo:
Na linha 1 importamos a biblioteca que iremos utilizar para recortar os vídeos
Na linha 4 a 6 criamos uma função para pegar o tempo atual que iremos passar adiante
Na linha 9 e 10 escolhemos o tempo do vídeo que queremos recortar
e na linha 12 e 13 baixamos o vídeo na pasta vídeos com o vídeo recortado, simples não?
Agora para concatenar precisaremos de mais de um vídeo (falando o óbvio), segue abaixo:
Na linha 1 importamos a biblioteca que iremos utilizar para a concatenação dos vídeos
Nas linhas 4 criamos uma função que concatena os vídeos
Na linha 6 percorremos a lista dos vídeos que queremos concatenar
Na linha 7 concatenamos os vídeos
Na linha 8 salvamos o vídeo no caminho passado pela função
Na linha 11 passamos uma lista com os caminhos para os vídeos que queremos concatenar
Na linha 13 e 15 passamos o caminho de saída para onde o vídeo irá ser salvo e em diante chamamos a função que criamos anteriormente.
Enfim, por hoje é isso, deixo abaixo os códigos completos pra quem quiser testar:
tube.py:
import sys
from pytube import YouTube
VIDEO_URL = 'https://www.youtube.com/watch?v=92MfvxbDsCs'
try:
yt = YouTube(VIDEO_URL)
except:
print("[INFO] Link errado!")
sys.exit()
# Resolução do vídeo
video = yt.streams.get_highest_resolution()
# video = yt.streams.get_lowest_resolution()
# video = yt.streams.get_by_resolution('720p')
# Download
video.download('videos')
trimm_videos.py:
from moviepy.video.io.ffmpeg_tools import ffmpeg_extract_subclip
def get_sec(time_str):
h, m, s = time_str.split(':')
return int(h) * 3600 + int(m) * 60 + int(s)
start_time = get_sec('0:00:14')
end_time = get_sec('0:00:19')
ffmpeg_extract_subclip("videos/DATASIDE_LIBERTY.mp4", start_time, end_time,
targetname="videos/DATASIDE_LIBERTY-trimm.mp4")
concatenate_videos.py:
from moviepy.editor import concatenate_videoclips, VideoFileClip
def concatenate(video_clip_paths, output_path):
clips = [VideoFileClip(c) for c in video_clip_paths]
final_clip = concatenate_videoclips(clips, method="compose")
final_clip.write_videofile(output_path, codec="libx264")
clips = ['videos/parts/video-trimm1.mp4', 'videos/parts/video-trimm2.mp4', 'videos/parts/video-trimm3.mp4']
output_path = 'videos/dataside_entrance_trimm.mp4'
concatenate(clips, output_path)