@WalDo Napisano Lipiec 29, 2010 Zgłoszenie Share Napisano Lipiec 29, 2010 Nagrywam sobie serial z TV. Koduję do AVI lub RMVB. Domyślnie rozdzielczość jest taka jaka daje mi TV. Konkretnie 576x432. W mencoderze zmniejszam sobie rozdzielczość (320x240) i bitrate (220) żeby odtwarzać sobie na moim starym palmtopie i nie przewalać 800-900MB (AVI) czy 400-500MB (RMVB) tylko 130-150. Polecenie jest proste mencoder plik.rmvb -vf scale=320:240 -oac mp3lame -lameopts preset=32 -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=220 -of avi -o plik_na_PocketPC.avi Jak nietrudno obliczyć 576/432=320/240 więc proporcje filmu wyjściowego są zachowane. Chciałem napisać skrypt, który mi to przekodowanie nieco zautomatyzuje i tu dochodzę do sedna problemu. Jak wydobyć z nagranego filmu jego rozdzielczość? Odtwarzając z terminala w mplayer widzę m.in. takiej linijki VIDEO: [RV40] 576x432 24bpp 30.000 fps ... VO: [vdpau] 576x432 => 576x432 Planar YV12 Super... Tylko jak to zobaczyć nie uruchamiając odtwarzania filmu i na tej podstawie wyliczyć właściwe proporcje tj. szer.320, wys. X? Bo nie zawsze musi to być 576x432 bo filmy panoramiczne albo np. zripowane z DVD mogą mieć nieco inne proporcje. Ewentualnie jak przekodować w mencoderze nagranie tak, żeby podać mu szerokość (konkretnie 320) a wysokość niech sobie sam wyliczy proporcjonalnie? Szukam tego w manualach i na stronie mplayera, googluję i nic. Wygląda mi na to, że bez uruchomienia filmu nie da się odczytać informacji, które wg mnie powinny być w jakimś nagłówku pliku video. Jeśli ktoś ma jakiś inny sposób wyciągnięcia rozmiarów filmu z pliku, to chętnie się dowiem P.S. Wiem, że mogę od razu nagrać w rozmiarze 320:XXX, ale nie chcę, bo czasem chciałbym zachować odpowiednią jakość do oglądania na zwykłej plazmie. [EDIT] Nie ma to jak napisać na forum - zaraz odpowiedź sama w ręce (tj.oczy) wejdzie Dla potomnych: wystarczy uruchomić dekodowanie filmu wskazując jako wyjście /dev/null - dekodowanie kończy się od razu ale nagłówek z rozdzielczościa jest wyświetlany mencoder plik.avi -o /dev/null | grep ^VIDEO Oczywiście jeśli ktoś zna inny sposób być może bardziej elegancki, to niech się podzieli wiedzą Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
thof Napisano Lipiec 29, 2010 Zgłoszenie Share Napisano Lipiec 29, 2010 Przeskalować możesz parametrami: scale=320:-3 lub scale -xy 512 (-zoom też może się przydać). Nie wiem czy palmtop poradzi sobie proporcjami i sam nie przeskaluje, dlatego można dodać czarne pasy, aby zachować proporcje: expand=320:240 (ja tak zawsze robiłem). Czyli całość w ten sposób: mencoder plik.rmvb -vf scale=320:-3,expand=320:240 -oac mp3lame -lameopts preset=32 -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=220 -of avi -o plik_na_PocketPC.avi Dodatkowo jeśli odtwarzacz nie obsługuje napisów, a chciałbyś je mieć to możesz w czasie konwersji zaaplikować tzw. hardsuby. Nie mam formułki do tego na wierzchu, bo już dawno w to się nie bawiłem, ale jeśli chcesz to mogę przeszukać dysk. EDIT: Aha tu o seriale chodzi, a nie filmy. W takim razie napisy nie są potrzebne Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
ra-v Napisano Lipiec 29, 2010 Zgłoszenie Share Napisano Lipiec 29, 2010 Proporcje wyliczysz przez obliczenie jakiegoś współczynnika Łopatologicznie powinienem pokazać o co chodzi rozmiar=$(mencoder plik.avi -o /dev/null | grep ^VIDEO | grep -oE '[0-9]+x[0-9]+') rozmiar_x=${rozmiar%x*} rozmiar_y=${rozmiar#*x} i tui trzeba kombinować ze zmiennoprzecinkowymi wspolczynnik=$((rozmiar_x*100/320)) # aby było 100x większe, 320 - nowa szerokość. nowy_rozmiar_y=$(($rozmiar_y*100/$wspolczynnik)) No i powinien być nowy rozmiar Y. Czyli nowy rozmiar obrazu to tutaj "320x$nowy_rozmiar_y". Jak coś popaprałem to popraw, bo niestety pisze z pamięci + drobnym spr. w bashu, ale proporcje nowego obrazu powinny być wyliczone. Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
@WalDo Napisano Lipiec 29, 2010 Autor Zgłoszenie Share Napisano Lipiec 29, 2010 Dzięki za pomoc. Jak pisałem wyżej główny problem - brak szybkiego znalezienia rozdzielczości oryginalnego filmu - mam rozwiązany. Przeskalować możesz parametrami: scale=320:-3 lub scale -xy 512 Hmm... czyli wartość "-3" zapewni mi że z automatu będę miał 320:240 albo 320:180 (w przypadku panoramicznych 16:9 coś takiego mi się wylicza)? A scale -xy 320 niestety mi nie działa - nie wiem dlaczego, ale obraz pozostaje w początkowej rozdzielczości. Nie wiem czy palmtop poradzi sobie proporcjami i sam nie przeskaluje, dlatego można dodać czarne pasyStaram się obcinać te czarne pasy, bo to jakiś tam dodatkowy "ciężar" pliku, ale też o tym myślałem. Opcja expand nie jest mi potrzebna jeśli podam "scale=320:240" (tak jak pisałem w 1. poście). EDIT: Aha tu o seriale chodzi, a nie filmy. W takim razie napisy nie są potrzebne Player obsługuje napisy (znalazłem w wątku → http://pdaclub.pl/forum/oprogramowanie-ppc...2195ccc84998ea), ale to nagrania z polskojęzycznego kanału (AXN Crime), więc mam lektora. Proporcje wyliczysz przez obliczenie jakiegoś współczynnika Łopatologicznie powinienem pokazać o co chodzi Z liczeniem proporcji nie mam problemów jak mam dane za to chyba nigdy nie korzystałem z grepa z opcją "-oE" i z tego rozbicia danych względem znaku "x" - podoba mi się. Zaraz coś tam sobie zmienię, a na razie wyszedł mi taki skrypcik siermiężny#!/bin/bash VIDEO=${1} ORG_RES=`mencoder ${VIDEO} -o /dev/null 2>/dev/null| grep ^VIDEO | awk '{print $3}' | sed "s/x/\ /"` ORG_RES_HIGHT=`echo ${ORG_RES} | awk '{print $2}' ` ORG_RES_WIDTH=`echo ${ORG_RES} | awk '{print $1}'` RES_HIGHT=`echo 320*${ORG_RES_HIGHT}/${ORG_RES_WIDTH} | bc ` RES="320:"$RES_HIGHT mencoder ${VIDEO} -vf scale=${RES} -oac mp3lame -lameopts preset=32 \ -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=220 \ -of avi -o ${VIDEO}.PPC.avi 2>/dev/null Jak na moje potrzeby to mi wystarczy. [EDIT] Sprawdziłem to scale=320:-3 i to załatwia problem bez żmudnego przeliczania - dzięki thof. Skąd znasz tę opcję? Wydawało mi się, ze przewaliłem spory kawałek internetu i trochę manuali przez ostatnie 2-3 dni, ale tego jakoś nie znalazłem. Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
thof Napisano Lipiec 29, 2010 Zgłoszenie Share Napisano Lipiec 29, 2010 Sprawdziłem to scale=320:-3 i to załatwia problem bez żmudnego przeliczania - dzięki thof. Skąd znasz tę opcję? Wydawało mi się, ze przewaliłem spory kawałek internetu i trochę manuali przez ostatnie 2-3 dni, ale tego jakoś nie znalazłem.Raz mi się zdarzyło przeczytać prawie cały man mencoder Linia 3553: [=w:h[:interlaced[:chr_drop[:par[:par2[:presize[:noup[:arnd]]]]]]]] Scales the image with the software scaler (slow) and performs a YUV<->RGB colorspace conversion (also see -sws). <w>,<h> scaled width/height (default: original width/height) NOTE: If -zoom is used, and underlying filters (including libvo) are incapable of scaling, it defaults to d_width/d_height! 0: scaled d_width/d_height -1: original width/height -2: Calculate w/h using the other dimension and the prescaled aspect ratio. -3: Calculate w/h using the other dimension and the original aspect ratio. -(n+8): Like -n above, but rounding the dimension to the closest multiple of 16. Kiedyś jeszcze używałem filtrów rozjaśniających wideo bez zauważalnej straty jakości (oszczędność baterii): pp=hb/vb/dr/al (trzeba dopisać po przecinku za scale). Jeszcze możesz zmniejszyć fpsy parametrem -ofps 22 co też powinno wpłynąć na rozmiar bez efektu klatkowania. Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
@WalDo Napisano Lipiec 29, 2010 Autor Zgłoszenie Share Napisano Lipiec 29, 2010 Dżizaz... Ja dość dokładnie cały rozdział 11. przeczytałem czyli to → http://www.mplayerhq.hu/DOCS/HTML/en/encoding-guide.html (wraz z podrozdziałami ), ale jakoś nie trafiłem. Manualem nie gardziłem, ale nie ukrywam, że przy tak obszernych publikacjach wolę wersję papierową - "man" ogranicza mi jakoś możliwości przeglądania, ale to pewnie dlatego, że ja starej daty jestem. Dzięki raz jeszcze. [EDIT] W linii 3553 nie ma ani słowa o tym. Masz na myśli takie zwykłe "man mencoder" z Fedory 13? Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
thof Napisano Lipiec 29, 2010 Zgłoszenie Share Napisano Lipiec 29, 2010 man mencoder > mencoder.man z archa, czyli MEncoder SVN-r31774-4.5.0. Może to jakaś nowa opcja i jeszcze nie zdążyli zaktualizować manuali, bo ja pamiętam, że właśnie skalowałem w ten sposób scale -xy -zoom 320 (parametr zoom jest ważny). Jeszcze możesz poszukać w info mencoder Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
@WalDo Napisano Lipiec 29, 2010 Autor Zgłoszenie Share Napisano Lipiec 29, 2010 Jeszcze możesz poszukać w info mencoder Wrrrr... Od dwóch dni (prawie trzech) czytam manuale o tym i wymiękłem. Widać z tego że trzeba jednak korzystać z "man" i to z różnych dystrybucji W każdym razie mój problem uważam za rozwiązany. A przy okazji nauczyłem się niezłych sztuczek, o których wcześniej nie wiedziałem (rozmiar%x*, rozmiar#*x - piękne ) Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
borzole Napisano Lipiec 30, 2010 Zgłoszenie Share Napisano Lipiec 30, 2010 A przy okazji nauczyłem się niezłych sztuczek, o których wcześniej nie wiedziałem (rozmiar%x*, rozmiar#*x - piękne ) Kiedyś trafiłem na taką sztuczkę w bash bash-ini-parser Nawet nie przypuszczałem, że można obrabiać parametry w bash do tego stopnia. Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się