Obecnie bot wycina klipy na podstawie timestampów dialogów z dodanym stałym marginesem czasowym (bufferem). Często powoduje to, że klip zaczyna się lub kończy w trakcie trwania ujęcia, ułamek sekundy po cięciu montażowym lub tuż przed nim. Prowadzi to do nieestetycznych rezultatów i utraty kontekstu wizualnego.
System posiada w Elasticsearch dane o Scene Timestamps (momenty cięć kamery/zmiany ujęć). Należy wykorzystać te dane, aby automatycznie dopasowywać (snapować) początek i koniec klipu do najbliższych, logicznych cięć montażowych.
Cel
Zaimplementować logikę Smart Snapping, która automatycznie koryguje czasy start/stop klipów, dopasowując je do granic ujęć filmowych. Funkcjonalność ta ma dotyczyć wyłącznie komend automatycznych, gdzie użytkownik nie definiuje precyzyjnie czasu.
Zakres Zmian
1. Automatyczny Smart Snapping (Domyślne zachowanie)
Funkcjonalność ma działać automatycznie dla akcji, gdzie użytkownik polega na automatycznym doborze czasu przez bota. Algorytm powinien pobrać timestampy dialogu, dodać domyślny buffer, a następnie rozszerzyć zakres do najbliższych granic ujęć (Scene Cuts) pobranych z Elasticsearch.
Dotyczy komend i funkcji:
!klip (wywoływane bez precyzyjnych ram czasowych)
!wybierz (wybór z listy wyników wyszukiwania)
- Inline Query (wyszukiwanie i wysyłanie klipu przez menu inline)
!transcript (szczegóły w punkcie 3)
Logika działania:
- Ustal
target_start i target_end na podstawie dialogu + config buffer.
- Pobierz z ES listę
scene_cuts w danej okolicy czasowej.
- Znajdź najbliższe cięcie
C1 takie, że C1 <= target_start.
- Znajdź najbliższe cięcie
C2 takie, że C2 >= target_end.
- Użyj
C1 i C2 jako finalnych czasów cięcia dla ffmpeg.
2. Nowa komenda: /snap (aliasy: /dopasuj, /sp)
Komenda narzędziowa służąca do naprawiania już wygenerowanych lub ręcznie zmodyfikowanych klipów.
- Działanie: Pobiera ostatni kontekst (ostatnio wygenerowany klip dla użytkownika) i aplikuje do niego logikę Smart Snapping (rozszerza granice do pełnych ujęć).
- Przypadek użycia: Użytkownik ręcznie dostosował klip, ale cięcie wypadło w niekorzystnym momencie. Komenda
/snap automatycznie dociąga granice do cięć montażowych.
3. Nowy wariant dostosowania: !ds (Dostosuj Sceny)
Rozszerzenie logiki komendy !dostosuj (oraz aliasów ad, d).
- Składnia:
!ds +1, !ds -1, !ds +2 itp.
- Działanie: Zamiast przesuwać czas o sekundy, przesuwa granice o liczbę ujęć (cięć montażowych).
!ds +1 (start): Przesuwa początek klipu do poprzedniego cięcia montażowego.
!ds +1 (koniec): Przesuwa koniec klipu do następnego cięcia montażowego.
4. Zmiany w !transcript
- Dostępność: Komenda
!transcript (generująca obrazek z tekstem dialogu) ma zostać przeniesiona z grupy uprawnień "Mod Only" do "Public" (dostępna dla wszystkich użytkowników).
- Snapping: Zakres czasowy generowanego transkryptu (jeśli zawiera klatki wideo) również musi podlegać logice Smart Snapping, aby zachować spójność wizualną sceny.
Wykluczenia (Czego NIE zmieniać)
Manualne komendy !wytnij (z podaniem konkretnych czasów) oraz standardowe !dostosuj (operujące na sekundach) nie mogą mieć aplikowanego automatycznego snappingu. Jeśli użytkownik chce wyciąć konkretny fragment co do sekundy, bot musi to uszanować. Snapping aplikujemy tam, gdzie użytkownik zdaje się na automatykę lub wyraźnie o to prosi (/snap, !ds).
Kryteria Akceptacji
- Komendy
!klip, !wybierz i tryb Inline generują klipy zaczynające się i kończące idealnie na zmianie ujęcia (zgodnie z danymi w ES).
- Komenda
/snap poprawnie koryguje granice istniejącego klipu do najbliższych cięć.
- Komenda
!ds +1 rozszerza klip dokładnie o jedno pełne ujęcie wideo.
!transcript jest dostępny dla wszystkich użytkowników i uwzględnia granice scen.
- Standardowe
!dostosuj nadal działa precyzyjnie co do sekundy (bez wymuszonego snappingu).
Obecnie bot wycina klipy na podstawie timestampów dialogów z dodanym stałym marginesem czasowym (bufferem). Często powoduje to, że klip zaczyna się lub kończy w trakcie trwania ujęcia, ułamek sekundy po cięciu montażowym lub tuż przed nim. Prowadzi to do nieestetycznych rezultatów i utraty kontekstu wizualnego.
System posiada w Elasticsearch dane o Scene Timestamps (momenty cięć kamery/zmiany ujęć). Należy wykorzystać te dane, aby automatycznie dopasowywać (snapować) początek i koniec klipu do najbliższych, logicznych cięć montażowych.
Cel
Zaimplementować logikę Smart Snapping, która automatycznie koryguje czasy start/stop klipów, dopasowując je do granic ujęć filmowych. Funkcjonalność ta ma dotyczyć wyłącznie komend automatycznych, gdzie użytkownik nie definiuje precyzyjnie czasu.
Zakres Zmian
1. Automatyczny Smart Snapping (Domyślne zachowanie)
Funkcjonalność ma działać automatycznie dla akcji, gdzie użytkownik polega na automatycznym doborze czasu przez bota. Algorytm powinien pobrać timestampy dialogu, dodać domyślny buffer, a następnie rozszerzyć zakres do najbliższych granic ujęć (Scene Cuts) pobranych z Elasticsearch.
Dotyczy komend i funkcji:
!klip(wywoływane bez precyzyjnych ram czasowych)!wybierz(wybór z listy wyników wyszukiwania)!transcript(szczegóły w punkcie 3)Logika działania:
target_startitarget_endna podstawie dialogu + config buffer.scene_cutsw danej okolicy czasowej.C1takie, żeC1 <= target_start.C2takie, żeC2 >= target_end.C1iC2jako finalnych czasów cięcia dla ffmpeg.2. Nowa komenda: /snap (aliasy: /dopasuj, /sp)
Komenda narzędziowa służąca do naprawiania już wygenerowanych lub ręcznie zmodyfikowanych klipów.
/snapautomatycznie dociąga granice do cięć montażowych.3. Nowy wariant dostosowania: !ds (Dostosuj Sceny)
Rozszerzenie logiki komendy
!dostosuj(oraz aliasówad,d).!ds +1,!ds -1,!ds +2itp.!ds +1(start): Przesuwa początek klipu do poprzedniego cięcia montażowego.!ds +1(koniec): Przesuwa koniec klipu do następnego cięcia montażowego.4. Zmiany w !transcript
!transcript(generująca obrazek z tekstem dialogu) ma zostać przeniesiona z grupy uprawnień "Mod Only" do "Public" (dostępna dla wszystkich użytkowników).Wykluczenia (Czego NIE zmieniać)
Manualne komendy
!wytnij(z podaniem konkretnych czasów) oraz standardowe!dostosuj(operujące na sekundach) nie mogą mieć aplikowanego automatycznego snappingu. Jeśli użytkownik chce wyciąć konkretny fragment co do sekundy, bot musi to uszanować. Snapping aplikujemy tam, gdzie użytkownik zdaje się na automatykę lub wyraźnie o to prosi (/snap,!ds).Kryteria Akceptacji
!klip,!wybierzi tryb Inline generują klipy zaczynające się i kończące idealnie na zmianie ujęcia (zgodnie z danymi w ES)./snappoprawnie koryguje granice istniejącego klipu do najbliższych cięć.!ds +1rozszerza klip dokładnie o jedno pełne ujęcie wideo.!transcriptjest dostępny dla wszystkich użytkowników i uwzględnia granice scen.!dostosujnadal działa precyzyjnie co do sekundy (bez wymuszonego snappingu).