Drukuj
Nadrzędna kategoria: Amiga
Kategoria: Gotowe rozwiązania
Odsłony: 7708
HAMVideo - odtwarzanie filmów na Amidze 600 - 5.0 out of 5 based on 2 votes

Ocena użytkowników: 5 / 5

Gwiazdka aktywnaGwiazdka aktywnaGwiazdka aktywnaGwiazdka aktywnaGwiazdka aktywna
 
Wydawać by się mogło, że na niespełna 8 megahercowym komputerze nie da się odtwarzać filmów. Nic bardziej mylnego. Amiga makes it possible.
Jedyne wymaganie jakie musi zostać spełnione po stronie Amigi to dysk twardy lub karta Compact Flash ponieważ takie filmy będą zajmować sporo MB. Dwie minuty takiego filmu będzie zajmować ponad 70MB. 
Jak to działa? Plik HV (czyli film do otwarzania na Amidze) to seria klatek zapisana w trybie HAM wraz ze ścieżką dźwiękową. Taki plik trzeba wcześniej przygotować na pececie. Będzie potrzebne do tego aplikacja do konwertowania video. Ja polecam ffmpeg (Linux, Windows) i/lub VirtualDub (Windows, Linux przez Wine). Użyje obu na Linuksie opisując po kolei co trzeba zrobić. Użytkownicy Windowsa będą musieli znaleźć swój sposób, podam parametry filmu jakie trzeba ustawić, aby program tworzący plik HV był w stanie go obłużyć.
Gdy wybierzemy materiał wideo do skonwertowania musimy go podzielić na dwa oddzielne pliki: obraz wideo i ścieżkę dźwiękową. Obraz wideo musi mieć 16bitów głębokości kolorów, zapisane w kontenerze AVI, bez kompresji, kolejność zapisywania barw RGB (RGB555). Szerokość wideo musi mieć określony rozmiar: 288, 304, 320, 336 pikseli. Wysokość dowolna, nie przekraczająca 216 pikseli. Dźwięk musi być zapisany w formacie WAV (PCM), gęstość bitowa 8bitów. Maksymalna częstotliwość próbkowania 22050 kHz. Może być mono i stereo.
Na początek posłuże się ffmpeg, bo to kombajn jeżeli chodzi o konwertowanie filmów. W konsoli wpisujemy:
ffmpeg -i plik.mp4 -map 0:a -ar 11025 -sample_fmt u8 -acodec pcm_u8 -ac 1 audio.wav -map 0:v -r 10 -vf scale=320:-1 -vcodec rawvideo -pix_fmt rgb555le video.avi
Opiszę co poszczególne parametry polecenia ffmpeg oznaczają:
Jeżeli nie mamy ffmpeg, możemy posłużyć się forkiem ffmpeg - libavcodec i narzędzia avconv.
Po tej operacji powinniśmy dostać dwa pliki audio.wav i video.avi. Można je normalnie odtworzyć w np. MPlayerze. Teraz musimy połączyć oba pliki w plik HV gotowy do uruchomienia na Amidze.
Do tego używamy polecenia avi4hv:
./avi4hv video.avi
AVI to HAMvid converter V1.05
Only uncompressed 15-bit RGB videos are supported.
input file: video.avi
FPS: 10
( 100000us per frame)
Horizontal Resolution: 320
Vertical Resolution: 180
bit depth: 15/16
Is this correct (y/n) ?
Jeżeli wszystko się zgadza odpowiadamy Y.
audio file (must be 8-bit uncompressed WAV)
?
Program się pyta o nazwę pliku ścieżki audio.
samplerate: 11025
channels: 1
video/audio timing accuracy: 100.0453720508167%
output file ?
Program wypluwa z siebie dane dotyczące ścieżki dźwiękowej i pyta o plik wynikowy.
enable dithering (y/n) ?
I ostatnie pytanie czy obraz ma być poddany ditheringowi przez co zmiany kolorów będą się lepiej prezentować. Nie zależnie od opowiedzi powinno wyskoczyć okno z podglądem filmu HV i powinniśmy otrzymać plik o nazwie którą podaliśmy wcześniej. Jeżeli okno zniknie po 3 sekundach a podglądu nie będzie to znaczy że coś poszło nie tak. Albo ustawiliśmy złe parametry obrazu, albo to bug w avi4hv.
Bug w AVI4HV
AVI4HV jest programem w wersji alpha, więc zawiera sporo niedoróbek, przez co nie rozpoznaje dobrze plików avi. Nie wiem co jest tego przyczyną, czemu avi4hv nie przyjmuje pewnych plików wideo. Pliki wyprodukowane przez ffmpeg są w 100% poprawne i odtwarzają się bez problemu w odtwarzaczach wideo. Aby rozwiązać ten problem posłużyłem się programem VirtualDub na Windowsa, a uruchomiłem go pod Crossover. Wczytujemy plik, wybieramy opcje z menu Video/Video Color Depth, zmieniamy Decompression format i Output format na 16bit RGB (555).
Virtual Dub
Zamykamy okno Video Color Depth i zapisujemy plik AVI do nowego pliku, np. video2.avi: menu File/Save as AVI.
Powstanie plik nieco różniący się wielkością od pliku stworzonego przez ffmpeg/avconv ale parametrami niczym nie różniącym się. Wydaje mi się, że programista tworzący AVI4HV miał do dyspozycji tylko ten program więc dostosował go tylko pod pliki wytworzone w VirtualDub.
Tak wytworzony plik video2.avi traktujemy jeszcze raz avi4hv jak na przykładzie powyżej.
Odtwarzanie filmu na Amidze
Możemy równie dobrze sprawdzić na emulatorze, zanim sprawdzimy na prawdziwym sprzęcie. Wytworzony plik pewnie będzie miał kilkadziesiąt/kilkaset megabajtów więc najlepiej byłoby przenieść na Amigę na karcie CompactFlash.
W shellu na Amidze dajemy:
hamp plik.hv
i oglądamy film.
Na koniec
kilka uwag. Czasami filmy HV przestają grać, pomimo że player dalej czyta plik, a ekran jest czarny. To już wina odtwarzacza. Ja używam wersji poprawionej (jest w linkach na dole artykułu). Wersja z oficjalnej strony w ogóle mi nie działa, ekran na chwilę miga na czarno i nic się nie dzieje.
Do filmów powyżej 15 klatek na sekundę będziemy potrzebować szybkiego transferu danych z dysku i karty turbo. Również dźwięk stereo sprawia że więcej danych trzeba odczytać z dysku co też wpływa na prędkość działania. 10 klatek na sekundę, częstotliwość próbkowania 11025 kHz i dźwięk mono powinien pójść na gołej Amidze.
Obraz oczywiście nie powala na kolana, wszędzie widać artefakty HAM, ale biorąc pod uwagę to, że odtwarzamy filmy na komputerze sprzed ponad dwudziestu lat to i tak nieźle.
AVI4HV na LinuksaVirtual DubHAMPlayer

 

 

Spodobało Ci się? Udostępnij, przypnij, podziel się z innymi:

Simple Disqus Comments