kategoria: ANSI C
[#1] ffmpeg/libav na NG
Istnieje ffmpeg dla MorphOS (a pewnie i dla AmigaOS4) w wersji dla użytkownika. Wobec tego źródła ffmpeg (czy raczej libav) są “kompilowalne” na post-amigowe systemy. Ma ktoś z tym jakieś doświadczenia? Biblioteka jest przeogromna, kolosalnie rozbudowana, z całą masą modułów. Orientuje się ktoś czy wymaga to jakichś zmian żeby się u nas zbudowało i działało w formie możliwej do użycia biblioteki (linkowanej, nie amigowej library)? Coś co pozwoliłoby zdekodować film (w różnych formatach obsługiwanych przez libav) do obrazków (w wybranej rozdzielczości) i audio, a potem zrobienia filmu (w wybranym formacie, rozdzielczości).

Jak patrzę na źródła tych różnych modułów libav to nogi się trochę pode mną uginają. Ciężko wykumać od czego należałoby zacząć chcąc użyć niektórych modułów tej biblioteki. Chociaż przyznać trzeba, że to czyste C, które wygląda bardzo multiplatformowo.

Ostatnia aktualizacja: 14.07.2017 16:19:51 przez MDW
[#2] Re: ffmpeg/libav na NG

@MDW, post #1

Próbuję kompilować libav dla MorphOS. Mam dosyć mizerne doświadczenie w budowaniu takich projektów ale coś tam próbuję. Wyrzuciłem z pliku config:
check_cflags -fdiagnostics-color=auto
check_disable_warning -Wno-maybe-uninitialized

bo nie kumał takich opcji.

No gdy zrobię tak:
configure --enable-nonfree --enable-version3 --disable-yasm --disable-asm --disable-inline-asm --arch=ppc74 --target_os=none --disable-optimizations

to G4/1,67 rzeźbi dyskiem ze 3 minuty, procesor jest zajęty w 100%. Później przestaje, config.log ma około 220KB i to tyle. Dalej nic się nie dzieje. Nie ma jakiegokolwiek komunikatu, błędu, informacji. Operacja nie została zakończona pomyślnie, bo to co się miało zrobić nie zrobiło się i CLI z którego wydałem polecenie jest ciągle zablokowane. Te same źródła pod macOS budują się bez problemu i powstaje to co ma powstać.

W CLI widzę tylko coś takiego:
Broken pipe - od

ale to się pojawia na początku operacji, a nie gdy się przerywa.

Ostatnie linie config.log wyglądają na przykład tak:
gcc -D_ISOC99_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_DEFAULT_SOURCE -std=c99 -maltivec -mabi=altivec -g -Wdeclaration-after-statement -Wall -Wdisabled-optimization -Wpointer-arith -Wredundant-decls -Wwrite-strings -Wtype-limits -Wundef -Wmissing-prototypes -Wstrict-prototypes -Wno-parentheses -Wno-switch -Wno-format-zero-length -Wno-pointer-sign -fno-math-errno -fno-signed-zeros -fno-tree-vectorize -Werror=implicit-function-declaration -Werror=missing-prototypes -Werror=return-type -Werror=declaration-after-statement -c -o /tmp/ffconf.oWmsur1C.o /tmp/ffconf.eudlhu2d.c
check_cflags -Werror=vla
test_cflags -Werror=vla
check_cc -Werror=vla
BEGIN /tmp/ffconf.eudlhu2d.c
    1   int x;
END /tmp/ffconf.eudlhu2d.c
gcc -D_ISOC99_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_DEFAULT_SOURCE -std=c99 -maltivec -mabi=altivec -g -Wdeclaration-after-statement -Wall -Wdisabled-optimization -Wpointer-arith -Wredundant-decls -Wwrite-strings -Wtype-limits -Wundef -Wmissing-prototypes -Wstrict-prototypes -Wno-parentheses -Wno-switch -Wno-format-zero-length -Wno-pointer-sign -fno-math-errno -fno-signed-zeros -fno-tree-vectorize -Werror=implicit-function-declaration -Werror=missing-prototypes -Werror=return-type -Werror=declaration-after-statement -Werror=vla -c -o /tmp/ffconf.oWmsur1C.o /tmp/ffconf.eudlhu2d.c
check_cflags -Werror=format-security
test_cflags -Werror=format-security
check_cc -Werror=format-security
BEGIN /tmp/ffconf.eudlhu2d.c
    1   int x;
END /tmp/ffconf.eudlhu2d.c
gcc -D_ISOC99_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_DEFAULT_SOURCE -std=c99 -maltivec -mabi=altivec -g -Wdeclaration-after-statement -Wall -Wdisabled-optimization -Wpointer-arith -Wredundant-decls -Wwrite-strings -Wtype-limits -Wundef -Wmissing-prototypes -Wstrict-prototypes -Wno-parentheses -Wno-switch -Wno-format-zero-length -Wno-pointer-sign -fno-math-errno -fno-signed-zeros -fno-tree-vectorize -Werror=implicit-function-declaration -Werror=missing-prototypes -Werror=return-type -Werror=declaration-after-statement -Werror=vla -Werror=format-security -c -o /tmp/ffconf.oWmsur1C.o /tmp/ffconf.eudlhu2d.c


Ciekawe, że po każdym takim budowaniu config.log kończy się na innym pliku. Nie ma tu jakiejkolwiek zasady.

Ma ktoś jakiś pomysł co można z tym zrobić żeby pchnąć sprawę trochę do przodu?



Ostatnia aktualizacja: 18.08.2017 20:40:52 przez MDW
[#3] Re: ffmpeg/libav na NG

@MDW, post #2

Osobiście chciałbym pomóc, ale nie potrafię.
Może spróbuj popytać tutaj
http://eab.abime.net (jest duży ruch, więc na odpowiedź szanse spore)
lub, ewentualnie na Morph.zone
[#4] Re: ffmpeg/libav na NG

@MDW, post #2

Skrypt konfiguracyjny robi coś, co powoduje zamrożenie procesu. Spróbowałem z starszą wersją (11.10) i tam configure przechodzi bez problemu (bez usuwania żadnych opcji, z uruchomieniem tak jak podałeś). Tylko do skompilowania będziesz potrzebował jeszcze (zapewne) dorzucić do opcji configure "--disable-pthreads" albo "--disable-network".
[#5] Re: ffmpeg/libav na NG

@R-Tea, post #3

Masz rację. Jeszcze coś popróbuję, a później chyba rzucę się na Morph.zone.
[#6] Re: ffmpeg/libav na NG

@widelec, post #4

Starsza wersja? To jest jakaś myśl. Chciałoby się mieć najnowszą ale w tej chwili to właściwie nie ma większego znaczenia, bo dopiero badam czy da się skompletować wszystkie elementy potrzebne do stworzenia czegoś co mi przyszło do głowy 15 lat temu i teraz zapragnąłem spróbować to zrealizować. szeroki uśmiech

Jeszcze spróbuję też ffmpeg zamiast libav. Wyczytałem, że libav "odczepiło" się z ffmpeg i idzie własną drogą. Pomysł był taki, że libav będzie odchudzone, API poprawione, rozwój miał być wolniejszy niż ffmpeg, ilość wspieranych formatów mniejsza ale za to wszystko miało być bardziej dopracowane. Jednak chyba coś nie "pyknęło", bo wszyscy raczej wracają do ffmpeg. No i jakiś ffmpeg został przecież skompilowany dla MorphOS/AmigaOS, bo od dawna mamy wersję wykonywalną.

Będę pamiętał o "--disable-pthreads" i "--disable-network" podczas kolejnych prób. Dzięki!
[#7] Re: ffmpeg/libav na NG

@MDW, post #6

Spróbowałem zbudować najnowsze wersje libav i ffmpeg także z "--disable-pthreads" i "--disable-network". Niestety jest ten sam efekt. Zostaje więc chyba tylko starsza wersja.
Na stronie www.PPA.pl, podobnie jak na wielu innych stronach internetowych, wykorzystywane są tzw. cookies (ciasteczka). Służą ona m.in. do tego, aby zalogować się na swoje konto, czy brać udział w ankietach. Ze względu na nowe regulacje prawne jesteśmy zobowiązani do poinformowania Cię o tym w wyraźniejszy niż dotychczas sposób. Dalsze korzystanie z naszej strony bez zmiany ustawień przeglądarki internetowej będzie oznaczać, że zgadzasz się na ich wykorzystywanie.
OK, rozumiem