Wpis z mikrobloga

Mam problem. Chciałbym opracować mechanizm, który monitoruje folder i analizuje video ( w oparciu o AI ) w momencie, w którym pojawia się ono w folderze. Używam framework'u "watchdog". Problem pojawia się, kiedy ładuję video do folderu - analiza następuje, ALE video ładuje się stopniowo, informacja o załadowaniu ( pod postacią linku do ścieżki filmu ) następuje w momencie, w którym video jest załadowane może w 15% i następuje analiza tylko tego kilkunastoprocentowego urywka filmu.

Poniżej info, które się pojawia - analiza urywka następuje poprawnie, po niej pojawia się poniższa informacja, a następnie 'watchdog' olewa resztę, która się jeszcze wczytuje i kontynuuje monitorowanie folderu.

Jakieś sugestie, co zrobić, żeby analiza następowała poprawnie; dopiero w momencie, w którym załaduje się 100% video?

#pracait #programowanie #programista15k #it #informatyka #python #pytanie
I.....I - Mam problem. Chciałbym opracować mechanizm, który monitoruje folder i anali...

źródło: wrong_video_cap

Pobierz
  • 14
  • Odpowiedz
Czekaj na pliki w konkretnym formacie, podczas kopiowania niech nazywa się np: gunwo.mov.tmp, po zakończeniu kopiowania zmień na gunwo.mov

Nie wiem czy to dobre rozwiązanie, jednak spotkałem się z czymś takim przy ocrowaniu skanów
  • Odpowiedz
@Ivan_III: Możesz poczekać. Jak się pojawia plik sprawdzasz rozmiar i czekasz X czasu, potem sprawdzasz ponownie i jesli sie zmienił to znów czekasz X czasu, jak sie nie zmienia to rozpoczynasz przetwarzanie
  • Odpowiedz
@Ivan_III: W robocie miałem case, że uploadowali mi na serwer pliki z danymi, ale nigdy nie byłem w stanie powiedzieć 'czy już' skończyła się transmisja ponieważ przez sftp nie mieli praw zmiany nazwy pliku.

Wymyśliliśmy (co okazało się standardem), że jak skończą upload po swojej stronie zrobią nam prosty 'touch nazwa_pliku.ctl'.
Czyli plik kontrolny końca transmisji - i my swoje watchery ustawialiśmy na plik *.ctl, a nie oryginany.

Kiedy pojawił
  • Odpowiedz
Możesz poczekać. Jak się pojawia plik sprawdzasz rozmiar i czekasz X czasu, potem sprawdzasz ponownie i jesli sie zmienił to znów czekasz X czasu, jak sie nie zmienia to rozpoczynasz przetwarzanie


@zibizz1: Chyba najlepsza opcja; w sumie głupio, że mi takie coś do głowy nie przyszło...
  • Odpowiedz
@Ivan_III: to akurat nie jest najlepsza opcja, bo skąd wiesz ile czasu masz czekać? Lepsza opcja jest ta z plikami markerami albo robić rename po zapisaniu pliku.
  • Odpowiedz
@Krolik to jest najlepsza opcja w przypadku watchdoga.
można spróbować otworzyć plik do zapisu i to powinno się nie udać jeśli plik nadal jest zapisywany wtedy znaczy że trzeba poczekać. zazwyczaj watchdoga używasz kiedy ktoś inny zapisuje i nie masz wpływu na to jak to robi. jeśli masz wpływ i to ty zapisujesz to możesz przecież uruchomić przetwarzanie sam po zapisaniu pliku.
  • Odpowiedz
@Krolik: A z rename'm nie będzie przypadkiem tak, że przetwarzanie zacznie się bez wczytania całości? Załóżmy, że robimy rename "po zapisaniu" - tylko, że w trakcie przesyłania video następuje krótka przerwa w przesyłaniu i plik załadowany tylko częściowo jest 'rename'owany'.
W opcji z czekaniem można byłoby ustawić względnie spory czas czekania, więc te krótkie przerwy w przesyłaniu będą bez znaczenia.
  • Odpowiedz
można spróbować otworzyć plik do zapisu i to powinno się nie udać jeśli plik nadal jest zapisywany


@zibizz1: zależy od trybu zapisu, nie masz takiej gwarancji
  • Odpowiedz
@Ivan_III: wysyłający wie kiedy się zakończyła. To proces odpowiedzialny za wrzucenie pliku do katalogu ma zrobić rename. Albo wrzucić drugi plik marker, nawet o zerowej długości.
  • Odpowiedz
@Krolik: A dobra; faktycznie można i tak. Nie zrozumiałem w pierwszej chwili... aczkolwiek nastawiałem się na ograniczenie czynności tej strony do samego wrzucania plików.
  • Odpowiedz