Skip to content

Instantly share code, notes, and snippets.

View royshil's full-sized avatar
🐢
Coding

Roy Shilkrot royshil

🐢
Coding
View GitHub Profile
@royshil
royshil / video_cropper.py
Last active June 5, 2023 02:18
Quicrop! A minimal tool for cropping video with Tkinter and ffmpeg-python
import tkinter as tk
from tkVideoPlayer import TkinterVideo
from ffmpeg import FFmpeg, Progress
import os
import sys
import argparse
parser = argparse.ArgumentParser(description="Crop a video")
parser.add_argument("video", metavar="video", type=str, help="video file to crop")
args = parser.parse_args()
@royshil
royshil / video_to_480_gif.sh
Created June 21, 2023 02:20
Various flavors of video-to-GIF scripts
# Convert the video to a 480x GIF @ x2 speed
file1=$(basename -- "$1")
dir=$(dirname "$1")
file1="${file1%.*}"
/usr/local/bin/ffmpeg -hide_banner -loglevel panic -i "$1" -filter_complex "[0:v] scale=w='min(480,iw)':h=-1,fps=8,setpts=(1/2)*PTS, split [a][b]; [a] palettegen [p]; [b][p] paletteuse" -y "$dir/$file1.gif"
@royshil
royshil / export_twitter_image.py
Last active October 23, 2023 19:47
Export Tweet as Image (screenshot embed)
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import logging
import os
import sys
import argparse
import urllib.parse
@royshil
royshil / ndi.py
Created February 5, 2024 04:37
Simplest cyndlid NDI + OpenCV Python example
# pip install cyndilib opencv-python
import cv2
from cyndilib.wrapper.ndi_recv import RecvColorFormat, RecvBandwidth
from cyndilib.finder import Finder
from cyndilib.receiver import Receiver
from cyndilib.video_frame import VideoFrameSync
finder = Finder()
# Create a Receiver without a source
@royshil
royshil / simple_pyqt6_opencv.py
Created February 6, 2024 14:12
Simple PyQt6 and OpenCV VideoCapture viewer using a worker thread
from PyQt6.QtCore import QObject, QThread, pyqtSignal, Qt, QTimer
from PyQt6.QtWidgets import QGraphicsView, QGraphicsScene, QGraphicsPixmapItem, QApplication
from PyQt6.QtGui import QImage, QPixmap
import cv2
import time
class CameraWorker(QObject):
frameCaptured = pyqtSignal(object) # Emit frame data
def __init__(self, camera_index=0):
@royshil
royshil / read_and_convert_audio.cpp
Last active May 10, 2024 17:04
Read and convert an audio file to another format or sample rate with libav and libswresample in C++.
extern "C" {
#include <libavformat/avformat.h>
#include <libavcodec/avcodec.h>
#include <libavutil/frame.h>
#include <libavutil/mem.h>
#include <libavutil/opt.h>
#include <libswresample/swresample.h>
}
#include <iostream>