Gå till innehåll

1080i ner till SD PAL


video_sync

Recommended Posts

Spelade in gårdagens scener med en Sony HDV Z1 (Pro versionen av FX-1).

Valde att spela in dessa scener på HDV1080i, dock även om DVCAM var lockande och känndes mer säkert.

 

Nu kommer vi till problemet. Nedkonverteringen.

Jag vill ha ner mitt 1080i filmade material som redan överförts till datorn i en .mpeg fil (PAL SD (16:9).)

Drog in klippet i Sony Vegas, allting ser fint ut.

Jag lade märke till att HDV1080i använder "Upper Field First" som avläsning.

Jag ville då nedkonvertera mitt HDV1080i material till PAL DV Wide. Jag renderade ut klippet som PAL DV Wide 16:9 med Upper Field First när jag märkte hur hela bilden hoppade, precis som med klassiska field order problem. Skumt ? HDV1080i är i grund Upper Field First, och visade "hoppig" bild trots Upper field som slutrendering ?

Då ändrade jag till Lower Field First (DV). Då flöt det på!

Hur är detta möjligt? Är det för att jag valt DV som slutrenderings format samt att DV alltid baseras på Lower Field First ?

Länk till kommentar
Share on other sites

Är det för att jag valt DV som slutrenderings format samt att DV alltid baseras på Lower Field First ?

 

Ja så är det. DV är alltid lower field first medans HDV är upper field first. Typiskt att de alltid ska krångla till det, eller hur?

Länk till kommentar
Share on other sites

Tackar som alltid för de snabba svaren ronnylov!

 

Så field ordern konverteras automatiskt när jag ändrar HDV-mpeg till DV AVI ?

 

Gärna en liten genomgång för bästa nedkonvertering av HDV till SD för DVD-Video vore bra. Vill gärna kunna uttnytja CCE också!

Länk till kommentar
Share on other sites

Jag är rätt dålig på Vegas men min gissning är att programmet förstår att du vill byta field order om källan har upper field first inställt och målet är inställt på lower field first och alltså automatiskt ser till att göra denna konvertering.

 

För att utnyttja CCE så kan du använda debugmode frameserver och på så sätt exportera tidslinjen i Vegas till en "pseudo - avi" från Vegas och öppna denna direkt med CCE så slipper du rendera en platskrävande avi-fil. Eftersom CCE föredrar YUY2 informat så ställer man in det i debugmode codecen.

http://www.debugmode.com/frameserver/

 

Ska du göra DVD med CCE så behöver du inte använda lower field first, DVD stödjer ju både upper och lower field first. Det blir ju bättre kvalitet om du inte går omvägen via en fil i DV-format vid konvertering till DVD. Det framgår inte riktigt av ditt inlägg hur du brukar göra för att få in det i CCE. Enklaste är väl nedskalat till 720x576 med upper field first i Vegas och sedan via debugmode frameserver till CCE.

 

Själv gillar jag ju avisynth för formatkonverteringar. Jag vet inte om det blir bättre eller sämre än med Vegas men det är billigare i alla fall och väldigt flexibelt. Jag har inte hunnit med att testa så mycket ännu med HDV men ungefär så här skulle jag göra för att fixa något att mata CCE med från avisynth:

 

Load_Stdcall_plugin("yadif.dll") #Load Yadif deinterlace C-plugin

LoadPlugin("MPEG2Dec.dll") #Load MPEG-2 decoder plugin

MPEG2Source("HDV.d2v") # Load DGIndex project file for MPEG-2 decoding

ConvertToYUY2(interlaced=true) # Converts YV12 to YUY2 for CCE

AssumeTFF() #Set avisynth to work with top field first video

Yadif(mode=1) #Deinterlace to double framerate (bob), converts to 50fps

Spline36Resize(702,576) # Resize to DVD active frame size 702x576

SeparateFields() #Converts to 100 fps half frames, separated fields

SelectEvery(4,0,3) #Select upper and lower fields (makes 50 fps fields)

Weave() #Put the fields back to 25 fps interlaced, upper field first

AddBorders(9,0,9,0) #Make 720x576 by adding 9 pixel black border left and right

 

Detta scipt är otestat men det ska kunna funka att ladda som avs-fil i CCE och sedan komprimera som interlaced DVD med upper field first. Yadif är en ganska snabb deinterlacer som ger hyfsad kvalitet och med mode=1 så gör man om det till 50 fps progressivt. Detta för att senare kunna skala ner upplösningen utan att förlora kvalitet innan man gör tillbaks det till interlaced. Sedan får man återskapa fälten genom att först separera dem och välja dem man vill ha, alltså upper field från första 50fps - bildrutan och lower field från den andra 50 fps-bildrutan. Dessa motsvarar bildrutorna 0 och 3 när det är 100 fps separerade fält (första bildrutan är nummer 0)...

 

Ja sedan repeteras det för hela klippet, därav SelectEvery(4,0,3).

Hade man velat konvertera från upper field first till till lower field first så skulle man valt fjärde och femte bildrutan med SelectEvery(4,3,4) istället.

 

MPEG2Dec avkodar HDV-strömmen i YV12-format så någonstans får man slänga in en konvertering till YUY2. Jag valde göra det i början för att få "fler" pixlar att jobba med inför omskalningarna.

 

Alternativet till att konvertera direkt från m2t-filer i avisynth är att köra HDV-projekt i Vegas och istället ladda pseudo-avin i HD-upplösning i avisynth-scriptet. Alltså ersätta rad 2 och 3 med AviSource("debugmode.avi")

Då kan man ju även skippa konverteringen till YUY2 i avisynth eftersom detta kan göras i vegas. Alternativ låter man ConvertToYUY2 vara kvar i scriptet och renderar som RGB debugmode codecen i Vegas.

 

Det kan ju vara värt att testa vilket sätt som ger bäst kvalitet. Är antagligen enklare att göra allt i Vegas men det är inte säkert det blir bättre än avisynth. Hade varit skoj om du testar lite och rapporterar lite resultat.

 

Ett litet tips om du inte är jättenoga med superexakt aspect ratio är att skala till 704x576 istället och lägga till 8 pixlar svart på sidorna istället för 9. Då får man inte så suddig svart kant efter MPEG-2 kodningen och kanske aningen bättre bildkvalitet. Men ska man strikt följa ITU-T Rec. 601 så är det 702x576 som gäller. Eller ska man skala HDV direkt till 720x576? Hur gör Vegas detta?

Många redigeringsprogram gör fel, därav frågan hur Vegas gör.

 

Kolla denna sida förresten angående omskalning av upplösning till DVD:

http://vistavision.de/tutorials/

 

Förresten, vill du testa HCEncoder så ska det vara YV12-format vilket man får via DGMPEG och avisynth som default, annars får man slänga in en ConvertToYV12(interlaced=true) i slutet av scriptet. Såg en intressant jämförelse häromdagen som visar att HCEnc spelar i samma division som CCE kvalitetsmässigt: http://forum.videohelp.com/topic332618.html#1725702

Länk till kommentar
Share on other sites

Nu har jag testat mitt avisynth-script och det var tyvärr en hel del fel som fick rättas till...

 

Jag hade glömt att MPEG2Dec numera heter DGDecode, alltså fel dll-fil.

 

Yadif crashade med mode=1 och YUY2-format. Fick flytta ner ConvertToYUY2 till slutet (gör det hela även något snabbare).

 

För att ytterligare snabba till något så resizar jag numera bredden innan bob-deinterlacingen.

 

Tyvärr går det inte att resiza till 702 pixlar utan bredden måste vara delbar med 4 i YUY2 och YV12-formaten i avisynth, annars får man felmeddelnade. Så jag ändrade till 704x576 istället (ingen ser ändå skillnaden på 2 pixlars fel).

 

Fick förstås även ändra AddBorders till 8 pixlar på sidorna. Detta kan man strunta i om man vill eftersom DVD-standarden även tillåter 704x576 upplösning men ska man vara riktigt strikt så tror jag att anamorfisk widescreen officielt endast stöds i 720x576. Man får förmodligen aningens bättre kvalitet med 704x576 istället för 720x576 då man slipper den svarta kanten och det blir färre pixlar att koda.

 

Så här är mitt nya fungerande avisynth-script (med sökvägar i min dator till pluginsen samt sökväg till en videofil på min dotter som sjunger):

 

Load_Stdcall_plugin("D:\Download\Avisynth plugins\yadif08\yadif.dll") #Load Yadif deinterlace C-plugin
LoadPlugin("C:\Program\AviSynth 2.5\plugins\DGDecode.dll") #Load MPEG-2 decoder plugin
MPEG2Source("J:\Sofia sjunger d2v\Sofia sjunger Emil.d2v") # Load DGIndex project file for MPEG-2 decoding
AssumeTFF() #Set avisynth to work with top field first video
Spline36Resize(704,height) # Resize width to 704
Yadif(mode=1) #Deinterlace to double framerate (bob), converts to 50fps
Spline36Resize(width,576) # Resize height to 576
SeparateFields() #Converts to 100 fps half frames, separated fields
SelectEvery(4,0,3) #Select upper and lower fields (makes 50 fps fields)
Weave() #Put the fields back to 25 fps interlaced, upper field first
AddBorders(8,0,8,0) #Make 720x576 by adding 8 pixel black border left and right
ConvertToYUY2(interlaced=true) # Converts YV12 to YUY2 for CCE

Länk till kommentar
Share on other sites

Delta i konversationen

Du kan posta nu och bli medlem senare. Om du har ett konto, logga in nu för att posta med ditt konto.

Gäst
Skriv ett svar...

×   Klistras in som rik text.   Återställ formatering

  Endast 75 max uttryckssymboler är tillåtna.

×   Din länk har automatiskt bäddats in.   Visa som länk istället

×   Ditt tidigare innehåll har återställts.   Rensa redigerare

×   Du kan inte klistra in bilder direkt. Ladda upp eller sätt in bilder från URL.

×
×
  • Skapa nytt...