Kompresja video

0

Witajcie moi drodzy.
Proszę o ocenę wykonalności projektu, o ocenę ile czasu to zajmie, o szacunek kosztów, oraz o doradzenie jakich rozwiązań użyć.
W skrócie, program ma łączyć video z pomocą GPU, ma działać szybciej od Sony Action Cam i Pinacle Studio, ma nie obciążać mocno komputera, i ma dodawać dane GPS do video.

  1. Wrzucam do niego pliki FHD po kilka GB one mają nazewictwo: MAH00674 itd. Mam je rozdzielone w katalogach z datami także to nie problem .... ważne jest aby je złaczyć ze sobą czyli mam ciągły film ze wszysktich fragmentów pliku ze wskazanego katalogu
  2. NA film nakładane są dane z GPS - dane GPS zapisane w standardzie NMEA - słuzą do narysowania np. ściezki drogi, prędkości aktualnej, średnej, ilości przejechanych km ... :) wysokości nie mam zapisanej
  3. Zapisuje mi się mniejsza wersja video - następue kompresja całego materiału i kompresja aby ni obciązać CPU i RAM - wykonywana jest na grafice w rezultacie dostaję dwa pliki:
    DATA_FOLDERU_jazda.mp4
    DATA_FOLDERU_jazdaGPS.mp4
    gdzie jeden plik nie ma nałożonych danych GPS a drugi ma. I tak dla każdego katalogu. Jak trzeba mogę do konkretnego katalogu wrzucić pliki GPS w formie *.log pliki bez problemu odczytują programy do analizy plików GPS.
    Ważne jest - jak się da - ... aby program wykonał na plikach także przyspieszenie (speed) z zachowaniem szybkości klatek 30 kl/s aby nie było skoków ... no bo kto będzie oglądał jak jadę 10 h ... - i te przyspieszenie byłoby na nagraniu z GPS.
    Każdy plik jest oczywiście o wiele mniejszy. Dla przykładu - jazdy z 15.01. Materiał ma 15 GB ... a miałby znacznie mniej ...
0
  1. Żaden problem, sklejanie plików wideo to nie jest bardzo skomplikowana rzecz. Ja osobiście to robię za pomocą gotowego narzędzia: ffmpeg. Który potrafi setki rzeczy, między innymi łączenie (liniowe) wideo, ale i wszechstronne konwersje;
  2. Nie mam pojęcia w jaki sposób zapisuje się GPS w plikach wideo, aczkolwiek ten post coś mówi, że mp4edit to potrafi, więc najwyraźniej się da. Tutaj tylko musisz poszukać jak dokładnie wygląda format zapisu, aby potem się to dało odczytać;
  3. Kompresja wideo z wykorzystaniem GPU? Początkowo chciałem powiedzieć, że się tego nie da zrobić, ale najwyraźniej się jednak da: https://developer.nvidia.com/nvidia-video-codec-sdk i to z tego, co tutaj jest napisane, to potrafi również wspomniany ffmpeg - https://developer.nvidia.com/ffmpeg.

Żeby to wszytko skleić w całość prawdopodobnie wystarczy zwykły skrypt, nie trzeba sięgać po jakiś większy język programowania.

Nie wiem jak osiągnąć przyspieszenie bez skoków.

0

ma nie obciążać mocno komputera

Tak to nie ma. Kompresowanie video to operacja w której zawsze wąskim gardłem jest moc obliczeniowa.

Tylko zastanawia mnie sens całego projektu. Z dużym prawdopodobieństwem wszystkie punkty da się zrobić za pomocą ffmpeg i podobnych narzędzi, z jakimś ewentualnie skryptem automatyzującym.

1
youmound napisał(a):

Proszę o ocenę wykonalności projektu, o ocenę ile czasu to zajmie, o szacunek kosztów, oraz o doradzenie jakich rozwiązań użyć.

że tak się zapytam... jesteś potencjalnym zamawiającym czy potencjalnym wykonawcą?
Z jednej strony pytanie o czas/cenę a z drugiej strony "jakie rozwiązania użyc"?
Troche dziwnie ;)

0

Po przestudiowaniu moich skryptów okazało się, że używam kilku narzędzi, poza ffmpeg - mianowicie mencoder (wchodzi w skład pakietu mplayer), handbrake oraz mp4box, ale akurat tego ostatniego chyba nie potrzebujesz.

Ja używam tego do łączenia filmów z kamerki samochodowej (każdy plik AVI jest w kodeku MJPEG i trwa 5 sekund), z których łączę filmy do plików MP4:

  1. Łączenie plików można zrobić za pomocą narzędzia mencoder:
mencoder -oac copy -ovc copy -o zlaczonyplik.avi plik1.avi plik2.avi plik3.avi plik4.avi

Ale możesz też zrobić plik*.avi i ci sklei wszystkie pliki postaci plik<cokolwiek>.avi.

  1. Konwersję z AVI do MP4 ja robię za pomocą Handbrake:
& "C:\Program Files\Handbrake\HandBrakeCLI.exe"  -i zlaczonyplik.avi -t 1 --angle 1 -c 1 -o zakodowanyplik.mp4  -f mp4  -w 1280 --loose-anamorphic  --modulus 2 -e x264 -q 20 --vfr -a 1 -E faac -6 dpl2 -R Auto -B 160 -D 0 --gain 0 --audio-fallback ffac3 --x264-preset=veryfast --x264-profile=main --h264-level="4.0"

Oczywiście ustawienia konwersji są dopasowane do mnie (preset veryfast, profil main głównie). Dodatkowo, według strony informacyjnej NVIDII to niby Handbrake ma obsługę tego ich kodowania poprzez GPU: https://developer.nvidia.com/ffmpeg. Jeżeli potrzebujesz ffmpeg z obsługą kodowania GPU to chyba musisz sobie samemu skompilować, bo taki typowy build jakiego ja używam nie ma tej opcji.

1

Jakie zalety ma ffmpeg nad zwykłymi okienkowymi programami do konwersji wideo?

1 użytkowników online, w tym zalogowanych: 0, gości: 1