Stránka 1 z 1

Demuxace MPEG-4 MVC (rozkódování 3D Blu-ray)

PříspěvekNapsal: pátek 4. 2. 2011 3:53:00
od brno
Problém: Přes všechnu snahu se mi nepodařilo rozkódovat 3D Blu-Ray disk na dva samostatné streamy. Prosím o radu nebo o diskuzi k tomuto problému.

Současný stav: V současnosti přehrávám na PC bezproblémově 3D Blu-ray disky z HDD. V ANY HD-dvd je vyroben ISO-soubor. Ten se přimontuje do virtuální mechaniky a se všemi menu se plasticky přehrává Powerem-DVD 10 systémem nvidia 3D vision na monitoru Acer 120Hz i na projektoru Acer nvidia 3D vision Ready. Toto jsem uvedl proto, aby bylo zřejmé, že celý systém je v pořádku, ISO soubory jsou korektní atd. Pro přehrávání na plánované 3D televizi, která bude fyzicky umístěna jinde a bude na ní přehráváno z běžného malého multimediálního hardwarového přehrávače potřebuji z 3D Blu-ray signálu vyrobit běžný klasický 3D soubor typu "obraz vedle obrazu". No a k tomu je nejprve třeba nějak ty dvě obrazové stopy (nebo rovnou "obraz vedle obrazu") z Blu-ray media vytáhnout.

Kam jsem dospěl: Prakticky nikam. Všude (např. časopis Chip) jsou odborné a i zajímavé články o kódování MPEG-4 MVC (3D Blu-ray), o vrstvách, I-P-B snímcích a podobně, ale nikde není, jak to z toho Blu-ray dostat. Jaksi úvahou (ale může být mylná) jsem dospěl k tomu, že po přepisu pomocí ANY HD-DVD jsou běžně přehratelné streamy m2ts v adresáři STREAM jednou stopou a druhou stopou by mohly být soubory ssif v tam umístěném podadresáři SSIF. Tyto soubory ssif se mi ale nepodařilo ničím otevřít ani je nespolkl žádný dekodér, demuxer atd. atd. (např. TSmuxer). A to ani po jakémkoli přejmenování. Pouze po přejmenování na některých přehrávačích hraje zvuk. Je to správný zvuk k filmu. Velikost adresáře SSIF je stejná jako součet velikostí všech souborů m2ts. Soubory m2ts jsou 2D, Power-dvd10 je hraje jen 2D. Toto vše mě vedlo k tomu, že soubory SSIF jsou možná druhou stopou. Jinak dekodér MPEG-4 MVC samozřejmě jako takový již musí běžně existovat, když je zabudován do Poweru-dvd 10. Ten ale ve spolupráci s grafikou nvidia dává jen 120Hz signál pro monitory a nemá volbu pro "obraz vedle obrazu". Malá odbočka: Stolní 3D přehrávače mají možnost na svém výstupu nastavit i typ pro 3D "obraz vedle obrazu". Ten by šel zachytit některým hardwarovým zachytávačem se vstupem pro HDMI. Na trhu je jich několik počínaje 2 000 Kč, ale ve všech popisech je varování, že to ze stolních 3D přehrávačů nepůjde kvůli ochraně proti kopírování HDCP. Uvítal bych i diskuzi k tomuto hardwarovému způsobu.

Děkuji předem za diskuzi a zdravím, Váš zatím smutný bastlíř Ruda.

Re: Demuxace MPEG-4 MVC (rozkódování 3D Blu-ray)

PříspěvekNapsal: pátek 4. 2. 2011 11:25:50
od Nick007
Máte pravdu, že SSIF jsou pravým streamem, ale jen částečně, protože MVC funguje na rozdílové kompresi a pravý stream se ukládá jen jako rozdíly od levého.

Není problém streamy demuxnout v eac3to. Zapnout AnyDVD HD, Ctrl+R - zadat cmd.exe a Enter.
Do příkazového řádku napsat:

F: (F písmeno jednotky)
eac3to BDMV (vypíše jaké playlisty Blu-ray má)
eac3to BDMV 1) (vypíše info o hlavním filmu, playlist 1 je obvykle ten správný, pokud je na disku jen jedna edice)

poté už jen stačí napsat:
eac3to BDMV 1) 2: C:\levy.h264 4: audio.DTSHD.dtshd (za předpokladu, levá stopa má čístlo 2 a čtvrtá stopa je audio DTS-HD MA)

eac3to BDMV 1) 3: C:\pravy.h264

nebo

eac3to BDMV 1) -demux (demuxuje všechny stopy včetně SUP titulků atd)


Více info třeba zde: http://forum.doom9.org/showthread.php?t=155246

Re: Demuxace MPEG-4 MVC (rozkódování 3D Blu-ray)

PříspěvekNapsal: pátek 4. 2. 2011 13:07:52
od brno
Děkuji moc, zítra to budu zkoušet.
Ruda

Re: Demuxace MPEG-4 MVC (rozkódování 3D Blu-ray)

PříspěvekNapsal: neděle 6. 2. 2011 21:44:53
od brno
Pro Nicka 007

Přeji hezký den,
Ještě jednou děkuji za zaslanou radu. Provedl jsem potřebné a získal levý i pravý obraz i zvuk (u jednoho filmu i titulky - vše funguje). Děkuji hlavně proto, protože podle fóra jste jedním z největších rádců a musí to zabrat hodně času. Přesto jsem Vaší radu obdržel obratem. Takže ještě jednou dík.

Nicméně nejsem u konce snažení a moc prosím o naznačení nějaké další cesty, jak pokračovat. Opět víceméně úvahou jsem dospěl k tomu, že získané elementární sreamy .h264 jsou pouze demuxované z media, nic se v right obraze nedopočítává. Pravý stream zůstal stále jen rozdílovým, má poloviční velikost než levý a nejde nikde pustit ani vložit do běžných programů jako TSmuxer. Předem mě to nenapadlo, ale je to logické, když v cestě nebyl zařazen žádný dekodér.

Přešel jsem na Vámi odkazované stránky doom9, stáhnul potřebné soubory a pokračoval pomocí tam uvedených příspěvků s dekodérem x264. Snad jsem se i prokousal instrukcemi k x264, ale bohužel jsem k cíli nedospěl.

Popíši situaci:

Všechny potřebné programy včetně AviSythu jsou nově stažené a nově nainstalované. Systém je Windows7.

V adresáři 3D na disku F: jsem umístil tyto soubory:

audio.ac3
decoder.cfg
H264StereoSource.dll
left.h264
right.h264
sample.avs

Obsah decoder.cfg je tento (původní):

#This is a file containing input parameters to the JVT H.264/AVC decoder [alexpk mod].
#The text line following each parameter is discarded by the decoder.
#
#
##########################################################################################
# Files
##########################################################################################
InputFile = "left.h264" # H.264/AVC coded bitstream
InputFile2 = "right.h264" # H.264/AVC coded bitstream
FileFormat = 0 # NAL mode (0=Annex B, 1: RTP packets)
POCScale = 1 # Poc Scale (1 or 2)
# decoder control parameters
##########################################################################################
DisplayDecParams = 1 # 1: Display parameters;
ConcealMode = 0 # Err Concealment(0:Off,1:Frame Copy,2:Motion Copy)
RefPOCGap = 2 # Reference POC gap (2: IPP (Default), 4: IbP / IpP)
POCGap = 2 # POC gap (2: IPP /IbP/IpP (Default), 4: IPP with frame skip = 1 etc.)
IntraProfileDeblocking = 1 # Enable Deblocking filter in intra only profiles (0=disable, 1=filter according to SPS parameters)
DecFrmNum = 0 # Number of frames to be decoded (-n)

Obsah sample.avs je tento (poslední číslo je upraveno podle eac3to):

LoadPlugin("H264StereoSource.dll")
H264StereoSource("decoder.cfg",156201)

Tvar příkazového řádku jsem zkoušel i včetně uvedení celých cest, kupodivu ale chybové hlášení je pokaždé jiné - viz později výpisy chyb z příkazového řádku.

F:\3D\x264 -o F:\3D\final.264 F:\3D\sample.avs

nebo

F:\3D\x264 -o final.264 sample.avs

Kodér x264 podle mne funguje, když si dám cvičně třeba toto:

F:\3D\x264 --crf 24 -o F:\3D\final.264 F:\3D\left.h264

tak sice ohlásí chybu, že chybí jakýsi index, ale začne normálně počítat 12 obr/s.

AviSynth jako takový také pracuje, pokud zkusím nějaké jeho použití třeba v Coderu2 od Canopusu, tak servíruje.

Nicméně přes to vše nemohu x264 pro použití AviSynhu rozchodit.

Příklady chybových hlášení z příkazového řádku:

C:\Windows\System32>F:\3D\x264 -o final.264 sample.avs
X264 [error]: could not open input file `sample.avs‘

nebo:

C:\Windows\System32>F:\3D\x264 -o F:\3D\final.264 F:\3D\sample.avs
avs [error]: failed to load avisynth
X264 [error]: could not open input file `sample.avs‘

Ve výše uvedeném doom9 je v podstatě podobný dotaz, nebyl ale nijak vyřešen. Se svou nedostatečnou angličtinou jsem vyrozuměl, že se snad doporučuje nainstalovat knihovny C++, že se na ně snad x264 odkazuje. Zkusil jsem nainstalovat celé Visual Studio od Microsoftu (je tam C++ i C#) a nainstaloval jsem i nový Net framework, vše aktualizoval přes Windows Update, ale nic se nezměnilo, chyba je stále stejná.

Prosím o naznačení nějaké cesty či o nějaké odkazy jak pokračovat, abych nakonec potřebný 3D "obraz vedle obrazu" dostal. Možná že jsem třeba jen špatně pochopil syntaxi příkazů.

Moc děkuji, Ruda.

Re: Demuxace MPEG-4 MVC (rozkódování 3D Blu-ray)

PříspěvekNapsal: neděle 6. 2. 2011 23:03:20
od Nick007
Jaj, to je dlouhý příspěvek... Tak postupně.

Není zač.

Pravý .h264 je MVC a ten tsMuxer neumí, nejde normálně přehrát. Jinak jsem se dočetl, že pravý stream se kóduje polovičním bitratem, tak proto poloviční velikost.

x264 nepotřebuje dodatečné knihovny než ty, co jsou standardně součástí Windows.

Doporučuju stáhnout AvsP a podívat se, zda avisynth dodává opravdu správně video.

Jaká verze x264 byla použita? 64-bitovou verzi nelze takhle jednoduše použít, protože Avisynth používáte 32-bitový (s 64-bitovým jsou akorát problémy, málo pluginů atd.). Doporučuju zkusit to s 32-bitovou verzí z [url]x264.nl[/url]. 64-bitová verze není zas o tolik rychlejší a pro začátek by to stačilo.

Pokud se jako zdroj specifikuje .h264, tak to nejspíš taky nepoběží, protože ffmpeg integrovaný v x264 nedokáže dekódovat MVC stopu.

Problém taky může být v použité syntaxi příkazů pro x264. Takhle bez příkazů jsem to nikdy nezkoušel.

Zkuste použít tuhle commandlinu, já ji používám pro kvalitní kódování. Takhle to bude fungovat ale jen s 32-bitovým x264.
x264.exe --profile high --level 4.1 --preset slower --crf 18 --deblock -3:-3 --bframes 8 --aq-strength 0.8 --merange 32 --output "final.264" "sample.avs"

Re: Demuxace MPEG-4 MVC (rozkódování 3D Blu-ray)

PříspěvekNapsal: úterý 8. 2. 2011 0:04:52
od brno
Děkuji, vše budu zkoušet.
Hlavně zkusím stáhnout AvsP pro kontrolu Avisynhu, to jsem nikdy nedělal. A hlavně 32bitovou verzi kodéru. Když jsem to stahoval, tak mi stránka nabízela obě verze a neznaje problému jsem si samozřejmě stáhnul 64bitovou, protože Vin7 mám 64 bitů.
Děkuji a postupně se do toho pustím.

Ruda.

Re: Demuxace MPEG-4 MVC (rozkódování 3D Blu-ray)

PříspěvekNapsal: úterý 8. 2. 2011 4:50:34
od brno
Pro Nicka 007

Nedalo mi to a píši ještě "dnes" ve tři v noci. Jste prostě geniální. Nad čím jsem se 3 měsíce trápil, to jste mi vyřešil za čtyři dny. Poslední problém byl v zásadě ve verzi x264. Skutečně musí být 32 bitová. Děkuji.

Pro ostatní tu napíši ještě několik poznámek k rozřešení případu, protože se mi tam křížily dvě chyby.

Při použití Nickem doporučovaného řádku pro nejvyšší kvalitu:

F:\3D\x264.exe --profile high --level 4.1 --preset slower --crf 18 --deblock -3:-3 --bframes 8 --aq-strength 0.8 --merange 32 --output "F:\3D\final.264" "F:\3D\sample.avs"

počítá můj čtyrjádrový I-5 cca 1.5 obr. za sekundu.

Teď večer, protože jsem nedočkavý, jsem zatím použil zjednodušený řádek, který asi nic nevylepšuje:

F:\3D\x264 -o "F:\3D\final.264" "F:\3D\sample.avs"

Ten počítá 2.5 obrázku za vteřinu. I tak bude celý film počítat 15 hodin a jsem moc zvědavý, co z toho vyleze. Ať tak či onak, když věc chodí, tak již mohu dělat všechny možné zkoušky.

Teď ale něco důležitého. Všude musí být u inputů uvedeny úplné cesty k souborům (viz např. v příkazovém řádku je "F:\3D\sample.avs", nikoli jen sample.avs)

A musí to být i v souboru decoder.cfg !!!!!!!!!!!

Původní text

InputFile = "left.h264" # H.264/AVC coded bitstream
InputFile2 = "right.h264" # H.264/AVC coded bitstream

se musí např. v poznámkovém bloku přepsat na:

InputFile = "F:\3D\left.h264" # H.264/AVC coded bitstream
InputFile2 = "F:\3D\right.h264" # H.264/AVC coded bitstream

(samozřejmě, dal-li jsem vše na disk F do adresáře 3D - viz minulé moje a Nicka007 rozbory.

Než jsem začal dnes toto psát, tak jsem udělal několik pokusů. Kdekoli není někde úplná cesta (včetně decoderu.cfg !!!), vždy se vypíše nějaká hláška, že cosi počítač nenalezl (viz mé předchozí výpisy chyb). Z popisu na doomu se mi ze začátku zdálo, že když je vše v jednom adresáři, tak si počítač najde soubory sám. Ale mohlo mě napadnout, že je to hloupost. Počítač je chytrej blbec, musí se mu napsat, kde má co hledat. Chci k tomu ještě ale dodat, že nějaké soubory si asi přece jen najde, nezkoušel jsem všchny variace (v sample.avs cesty nejsou a přesto to funguje). U těch mých příkladů v příkazovém řádku a v decoderu.cfg jsou ale cesty pro input soubory nutné.

A 32 nebo 64 bitová verze x264 - i když jsou všechny cesty korektní a použije se správná syntaxe, PC po odklepnutí příkazového řádku u verze 64 bitů hlásí, že program přestal pracovat. Verze 32 bitů korektně vypíše dva infořádky (o procesoru a profilu) a ve třetím řádku vypisuje průběžně stav výpočtu. Teď mám spočítáno 6 000 obrázků z 156 201 a za 14 hodin by to mělo být hotové. Až to bude, tak napíši, co mi z toho vylezlo.

Zdravím, Ruda.

Re: Demuxace MPEG-4 MVC (rozkódování 3D Blu-ray)

PříspěvekNapsal: čtvrtek 10. 2. 2011 14:56:42
od Nick007
Tak to jsem rád, že jste problém vyřešil :-)

64-bitový x264 kodér lze použít s 32-bitovým Avisynthem, ale jen pomocí jedné z oklik (založeno na pipelinování dekódovaného výstupu) a to je celkem na delší psaní a na to teď nemám čas ani náladu. Navíc to je rozebraný na jiných fórech, kde se tomu věnují. Na počáteční hraní si stačí plně 32-bitová verze. A rozdíl v rychlosti tam zas tak velký není.

Jinak ten příkaz není pro "nejvyšší" ale spíše "velmi dobrou kvalitu s dobrým časem". Pro nejvyšší kvalitu je tu --preset placebo.

Re: Demuxace MPEG-4 MVC (rozkódování 3D Blu-ray)

PříspěvekNapsal: čtvrtek 10. 2. 2011 23:55:30
od brno
Přeji hezký den.

Slíbil jsem, že napíši o výsledcích pokusů. Je to dost podrobné, ale třeba to bude někdo opakovat po mně, takže je to pro všechny. Nicméně bych přece jen ještě něco potřeboval, takže prosím kohokoli o odpověď, bude-li vědět.

Provedl jsem několik pokusů a zatím vše funguje. Naposledy naznačeným způsobem se vypočítá plnohodnotná pravá videostopa, se kterou lze pracovat v běžných konvertorech atd. Tím také v jakémkoli lepším střihacím programu na video. Snadno lze tak z levé a pravé videostopy vyrobit v úvodu diskuze požadovaný stream "obraz vedle obrazu". Hezky se to dá i udělat např. přes x264 pomocí Avisynhu tak, jak je dobře popsáno v diskuzi na doomu9 v odkazu, který je předminule uveden od Nicka007. Věc obrazu je zdá se plně vyřešena. Pro případné další zájemce o postup sděluji, že vše se dá demuxovat i z ISO obrazu media, pokud byl vyroben v ANY. Při práci s ISO obrazem již není ANY potřeba.

================================================================

Mám ale přece jen několik dotazů.

1) Použiji-li zatím doporučovaný způsob, přepočítá mi proces celou stopu, která je 23.967 obr/s na 25 obrázků. Je to vidět i z hlášení, které procesy dávají:

hlášení z eac3to:

eac3to v3.24
command line: C:\eac3to\eac3to G:\BDMV 1) 2: F:\3D\left.h264 3: F:\3D\right.h264 5: F:\audio.ac3
------------------------------------------------------------------------------
M2TS, 2 video tracks, 11 audio tracks, 29 subtitle tracks, 1:48:35, 24p /1.001
1: Chapters, 16 chapters
2: h264/AVC (left eye), 1080p24 /1.001 (16:9)
a tak dále.....

Přepočet v x264:

C:\x264\x264.exe --profile high --level 4.1 --preset slower --crf 18 --deblock -3:-3 --bframes 8 --aq-strength 0.8 --merange 32 --output "F:\3D\right.264" "C:\MVC\sample.avs"
avs [info]: 1920x1080p 0:0 @ 25/1 fps (crf)
a tak dále......

Vyřešit problém pomocí úpravy scriptu Avisynhu se mi nepodařilo, spravil to až příkaz --fps 24000/1001, přidaný do příkazového řádku pro x264. Je tento postup korektní, nemá se to dělat jinak a proč si to procedura sama od sebe mění?

================================================================

2) Jeden film měl češtinu jako ac3, druhý byl ale jen anglicky jako HD dts a byly tam české titulky. Demuxace atd. proběhla opět dobře. Použil jsem příkaz:

eac3to v3.24
command line: C:\eac3to\eac3to G:\BDMV 1) 2: F:\3D\left.h264 3: F:\3D\right.h264 4: F:\audio.DTSHD.dtshd 14: F:\title.sup
------------------------------------------------------------------------------
M2TS, 2 video tracks, 3 audio tracks, 13 subtitle tracks, 2:41:42, 24p /1.001
1: Chapters, 53 chapters
a tak dále.

Pokud do výsledného "obrazu vedle obrazu" namuxuji např. v TS muxeru znovu ac3 stopu a nebo u druhého filmu dts stopu, přehrává mi můj hardvarový multimediální přehrávač oba výsledky dobře a není problém. V počítači mi v přehrávačích hraje dobře jen ac3. Stopa dts někde nehraje. Velký problém je ale, potřebuji-li pracovat v běžných videostřižnách, které jsou zařízeny na obyčejné dvoukanálové stereo. Dts nejde vůbec a z ac3 jen něco (např. hudba a ruchy - mluvení chybí). Toto vše je sice normální, ale pro mou potřebu bych z ac3 i dts potřeboval vyrobit obyčejné stereo a teprve to pak zpětně s obrazem namuxovat. Naznačte mi prosím, jakým programem nebo jak zkonvertovat ac3 nebo dts na obyčejné stereo. Zatím jsem se k tomu na internetu nedobabral.

==================================================================

A problémem jsou ještě titulky. Nejprve něco, co nesouvisí s 3D. Obecně mi nefunguje zpětné přidání titulků do videa. Když si např. podle výše uvedeného příkazového řádku pomocí eac3to vytáhnu z media left a right stopu, audiostopu a titlestopu, tak i když hned dám do ts muxeru left stopu, audio a sup stopu a spočítám např. blu-ray, tak hraje jen obraz a zvuk. Titulky se jeví, jakože tam jsou, jsou ale trvale off a nejdou zapnout (dám-li výsledek do ts muxeru, tak tam titulky jako stopa jsou). Prosím na co bych se měl zaměřit? Podotýkám, že je to obecný problém, to nesouvisí s 3D.

===================================================================

A titulky v 3D. Tady asi žádný titulkovač neexistuje a ani bych ho asi nepotřeboval. Něco je na fóru doomu9 na odkazu Nicka007, ale to jsem nerozchodil. Vyžaduje to instalaci Javy 64 bitů a do toho se mi zatím nechce. Dotaz: je instalace Javy bezpečná? Ideální by bylo zakomponovat titulky přímo do jednotlivých obrazových stop ještě před jejich spojením do "obrazu vedle obrazu". Tím "zakomponovat" myslím nahrát je "natvrdo" jako obraz přímo do obrazu stopy. To by samozřejmě šlo velice jednoduše i ve videostřižně, ale se stopou .sup, kterou mám k dispozici, si mé střižny nerozumí. Ani na to jsem nenašel žádný návod. Nemáte na to nějaký fígl nebo směr, jak to udělat, abych stopu .sup nahrál přímo do obrazu?

Děkuji, Ruda

Re: Demuxace MPEG-4 MVC (rozkódování 3D Blu-ray)

PříspěvekNapsal: sobota 12. 2. 2011 16:30:01
od brno
Děkuji za vše. Mám mnoho podkladů k dalším zkouškám a pokusům a na nějaký čas se odmlčím a dám vědět, až jak jsem vše nakonec vyřešil. Nebudu tedy ani delší čas otravovat s dalšími dotazy. Mám na Nicka, když už se mne tak hezky ujal poslední dotaz:

Dělal jsem pokusy na několika PC a u jednoho se mi u určitého filmu při převodu pravé stopy na .264 pomocí x264 objeví následující upozornění:

Warning: no active SPS, timing SEI cannot be parsed.

Doslovný překlad "měření času" a "rozebraný" nedává smysl a ani nevím, co jsou ty zkratky. Ve výsledku to ale nijak nevadí (snad). Co prosím tato hláška znamená?

A teď i pro ostatní, pokud by mne chtěli následovat. Cílem (viz úvod diskuze) je dostat video "obraz vedle obrazu", které by byl v 3D schopen přehrát jakýkoli multimediální hardwarový přehrávač na běžné 3D televizi. Ty jsou dnes touto funkcí vybaveny. Mimo to je také takto vysíláno 3D televizní vysílání.

Aby šlo s tímto materiálem pracovat i v běžných počítačových střižnách, je nutno z komerčních 3D Blu-ray vydolovat zvuk jako základní stereo. Videostřižna původní AC3 sice přehraje, ale hraje jen základní levý a pravý zvukový kanál. Další ne. Takže většinou hraje hudbu a část ruchů. Je legrační, když herec chvíli mluví a chvíli ne podle toho, do kterého kanálu jej zvukový mistr posadil. Na základě posledního doporučení Nicka jsem udělal hned několik pokusů s ffdshow a dalšími a vypadá to, že by i tento problém měl být vyřešen. Program eac3to má mimo jiných instrukci i instrukci -down2, která právě třeba z pětikanálu vyrobí základní stereo. Podle předběžných pokusů to vypadá, že to funguje. Konec příkazového řádku, který mi zafungoval, vypadal u mne takto (i když původní stopa byla třeba v HD-dts):

eac3to BDMV 1) ...... 4: audio.ac3 -down2

Vznikne sice ac3, ale vše je "nacpáno" do L a R. Ostatní kanály jsou "němé". Podotýkám, že kdo by nechtěl "střihat", může nechat zvuk jak je. "Lepší" multimediální přehrávač přehraje i HD-dts a proč si to tedy kazit.

Takže zbývá vyřešit problém s titulky. Vzhledem k tomu, že 3D televize musí dostat hotový signál, musí vše obstarat zmíněný multimediální přehrávač a proto se mi jeví nejlepší, aby titulky byly nahrány ještě před konverzí obou obrazových stop do "obrazu vedle obrazu". I ty titulky ve výsledku musí být samozřejmě 2x vedle sebe.

Nahrál jsem potřebnou Javu a spustil 3D titulkovací program "3D subtitler" (viz odkaz Nicka na stránky doomu9). Dají se v něm podle tvrzení v popisu editovat grafické titulky, převádět na .srt a s titulky .srt je možno dále pracovat. Je to vše ale na dlouhé pokusy a proto se odmlčím, jak jsem psal výše. Nicméně budu fórum sledovat a kdybyste měl někdo nějaký nápad, tak se ozvěte. Já budu psát, až budu mít nějaké výsledky. Ještě zdůrazním, že běžný multimediální přehrávač si na 3D nehraje. Přehraje s obrazem jakékoli titulky .sup, ale nedá je tam 2x vedle sebe, jak jsou ve streamu obrazy. Ale geniální byl ten poslední nápad Nicka, že by nebyl problém dát je do streamu, kde je obraz nad obrazem. Tam by šly dát běžné původní titulky. Televize by pak ve střídajících se 3D obrazech vždy titulek měla a pak zase neměla. Mohly by jevit "průhledné", ale asi by blikaly (poloviční frekvence zobrazení)!?

No to je vše ale námět pro další pokusy. Dát do filmu .srt titulky natvrdo, na to je na internetu spousta programů. No, vše budu zkoušet. Nejraději bych ale použil původní grafické .sup. Po jakémkoli převodu do .srt a nebo i stažení z internetu se musí titulky vždy projít a zkontrolovat a případně upravit časové nasazení. Ve filmu je třeba 1500 titulků. A to je otravná "úředničina". Mám i takovou vizi - ve střižně vyrobit černý podklad, udělat v TSmuxeru Blu-ray s tímto AVI a původní titulkovou stopou. Na monitoru by hrály jen bílé titulky na černém pozadí. Ty by se ofilmovaly HD kamerou - obraz není nic moc, ale pro titulky by stačil. No a ve střižně by se pak natvrdo běžným postupem „klíčování na černou“ naklíčovaly do původního obrazu. Mám ještě více bláznivých nápadů.

Zdravím, Ruda

Re: Demuxace MPEG-4 MVC (rozkódování 3D Blu-ray)

PříspěvekNapsal: sobota 12. 2. 2011 18:38:22
od Nick007
Co se týče toho varování, nemám tucha, proč by to někde mělo psát a jinde ne. Je možné, že demuxování do kontejneru .mkv místo samotného raw .x264 by pomohlo.

Některé nápady mi přijdou opravdu bláznivé. Třeba mi vůbec uniká potřeba něco stříhat, titulky převést v Supripu je otázka pár minut (když už člověk jednou zadá písmena pro OCR) a titulky sedí jak prdel na hrnci, protože jsou přímo z toho disku... Tvrdé vypálení titulků do filmu je v avisynthu jednoduché, postupy na to jsou na netu (stačí zadat do googlu avisynth hardcoded subtitles).

Re: Demuxace MPEG-4 MVC (rozkódování 3D Blu-ray)

PříspěvekNapsal: pondělí 14. 2. 2011 16:48:27
od brno
Díky, jak jsem se minule zmiňoval, tak pokračuji tvrdě v pokusech a samozřejmě nejprve zkouším ty "rozumné" nápady od Vás. Vše popíší, až věc uzavřu.

Takže jen tak mimo - co se týče střihu, tak to je něco navíc. Jsem profesí, filmař, v mládí amatérský a dnes poloprofesionální a k počítačům jsem se dostal "soukromě" kvůli filmování. Tím ta nostalgie ke střižnám, i když na hotový film jsou samozřejmě nanic. Je ale dobré problém mít vyřešen, „co kdyby se to někdy hodilo“.

Omlouvám se za moje "blbé" dotazy a problémy. Když jsem chodil do školy, tak ještě nebyly ani tranzistory (je mi 68 let) a tak to vše během života chytám jako samouk kde se dá a protože zde u nás není žádná "fyzická" komunita, tak přes internet a hlavně metodou pokus-omyl. A samozřejmě mi chybí základy a už mi to ani tak jako dříve nemyslí. Všechny příručky končí jak použít třeba Word. A když jsem se měl prokousat tím, co to je Avisynth a hlavně ho smysluplně používat, tak to pro mne byl rok času. Bohužel anglicky umím jen "počítačově" (za mne se učila ruština a na ostatní jazyky jsem kašlal), takže prokousat se jakýmkoli manuálem je také horor.

Nicméně stále postupuji a pokud se týká problému řešeného v této diskuzi, tak jsem již vyrobil před chvílí v programu 3Dsubtitler (viz minulé příspěvky) grafické titulky .sup a s nimi dále v TSmuxeru Blu-ray strukturu s filmem Side by side, kde jsou titulky krásně vždy dva na správných místech vedle sebe. Samozřejmě přes SupRip, jak jste mi doporučil. To mi v mém multimediálním přehrávači již hraje normálně. Program 3Dsubtitler vyrobí ze .srt ve výsledku samozřejmě vždy v dané chvíli jen jeden obrázek, ne dva vedle sebe, ale obrázek je široký a text je na správných místech 2x. Proto se s výslednou stopou .sup pracuje úplně normálně a k video streamu Side by side se přidává klasicky. Umí i udělat vysoký titulek pro dva obrazy nad sebou. Takže "jako hrubou stavbu" jsem svůj problém v podstatě vyřešil. Zbývají mi pokusy s tím přímým nakopírováním titulků, kdybych to chtěl pouštět ve Stereoplayeru. Hned se vrhnu na Vámi prezentovaný odkaz. Abych se přiznal, tak jsem i tam hledal. Jenže neznaje termíny a neznaje angličtinu, nenapadlo mne, že mám zadat hardcoded subtitles. Ale když se takto "ťukne", tak pak už se tím prokoušu. Ten Stereoplayer (v Chipu byla zdarma i plná verze - nikoli Trial) je dobrý pro toho, kdo na 3D nic nemá. Může si pak jen koupit za 30Kč dvoubarevné brýle. Obraz barevně nic moc, ale nakonec se dodnes takto prodávají některé profesionální 3D Blu-ray, jen aby se to 3D rozšířilo.
Zdravím, Ruda.

Re: Demuxace MPEG-4 MVC (rozkódování 3D Blu-ray)

PříspěvekNapsal: pondělí 14. 2. 2011 19:37:16
od Nick007
Nezbývá mi než vyjádřit svůj obdiv a držím palce, ať se vše povede.

Re: Demuxace MPEG-4 MVC (rozkódování 3D Blu-ray)

PříspěvekNapsal: čtvrtek 24. 2. 2011 23:48:28
od brno
Dnes jsem ukončil všechny pokusy a pro toho, kdo by chtěl následovat, zde podle slibu shrnu celý postup. Ještě jednou děkuji Nickovi 007, prakticky vše je uděláno podle jeho doporučení. V předchozích textech jsou i odkazy na příslušné programy. Jsou tam i uvedeny některé podrobnosti o verzích a podobně. Takže dále toto nebudu rozvádět. Je docela možné, že lecos by šlo řešit jinak nebo i jednodušeji, ale pokud postup fungoval, šel jsem dál a jiné způsoby jsem nehledal. Sem tam mi program x264 vypsal i nějaké chybové hlášky, které se mi nepodařilo rozluštit, ale nikdy to nemělo vliv na výsledek. Ten byl vždy v pořádku. Rychlost výpočtů je 1 až 5 obrázků za sekundu podle rychlosti počítače.

Cíl práce: Jako zdroj je použito originální Blu-ray medium se stereoskopickou (3D) nahrávkou profesionálního filmu (kódování MPEG-4 MVC). Cíl je udělat si zálohu, která by byla ve 3D přehratelná obyčejným hardwarovým multimediálním přehrávačem na klasické 3D televizi nebo 3D projektoru. Můj multimediální přehrávač je schopen z hard-disku přehrát strukturu obyčejných Blu-ray medií nebo i samostatných souborů .m2ts, takže jsem pracoval takto. Není problém vyrobit cokoli jiného (zkoušel jsem např. soubory .mkv) změnou zadání v příkazovém řádku. Výsledné soubory jsem volil ve formátu .264 bez zvuku. S příslušným zvukem a případně se .sup titulky jsem je do struktury Blu-ray nebo do .m2ts míchal v TS-muxeru nakonec.

Odbočka: Pozor! Současné běžné 3D projektory jsou většinou podvod, nejsou to 3D přístroje! Dají se využít jen jako rychlé monitory (120Hz) k počítači. Můj projektor Acer H5360 (který byl podvodně deklarován jako 3D) tak funguje na 3D jen v sestavě počítač + systém nvidia 3D vision (podotýkám ale, že VELICE DOBŘE). Žádné jiné 3D vlastnosti nemá. Nedá se tedy na 3D zprovoznit s multimediálním přehrávačem. V menu má i možnost přepnout na šachovnicově prokládané 3D (systém DLP-3D) - toto ale nepracuje. TENTO PROJEKTOR NEMÁ ZABUDOVÁN ŽÁDNÝ INFRAVYSÍLAČ PRO AKTIVNÍ 3D BRÝLE!!! Podrobnosti viz můj jiný příspěvek v rubrice "projektory". Teprve nyní (únor 2011) se objevilo cca 5 typů skutečných 3D projektorů, které mají stejné schopnosti, jako běžné 3D televize, jejich cena je ale nepochopitelně přes 100 000.- Kč, přestože to jsou jinak obyčejné projektory (světelný tok např. pouze 1000 lm). Konec odbočky.

Potřebné programy nebo soubory: x264 32 bitů (zadávání v příkazovém řádku - cmd.exe), AviSynth 32 bitů, AnyDVD HD, eac3to (zadávání v příkazovém řádku), AvsP s přehrávačem Clasic Player Home Cinema (pro psaní a kontrolu příkazů Avisynthu), 3Dsubtitler, SupRip, Java 64 bitů (nutná pro funkci programu 3Dsubtitler), MVC decoder (vytvoří se jím H264StereoSource.dll, decoder.cfg a vzorové sample.avs), Anaglypher.dll (např. ze stránek http://shura.luberetsky.ru/plaginy-dlya ... naglypher/), Mask 720p.png a Mask 1080p.png (např. ze stránek http://www.dlp.com/3D), TS-muxer, VSfilter .dll (např. ze stránek http://www.videohelp.com/tools/VSFilter_DirectVobSub).

V adresáři x264 na disku C jsem měl program x264
V adresáři MVC na disku C byly soubory: VSFilter.dll, H264StereoSource.dll, Anaglypher.dll, decoder.cfg
V adresáři MVC na disku C byly dále obrázky: Mask 720p.png, Mask 1080p.png
V adresáři MVC na disku C byly dále všechny skripty Avisynthu
V adresáři eac3to na disku C byl program eac3to
V adresáři 3D na disku F byly všechny zdrojové a výsledné AV soubory
Virtuální disková jednotka pro vložení ISO souborů byla: M

Vypsání všech příkazů x264 po stránkách (pro případ potřeby): C:\x264\x264 --fullhelp | more

1. Nejprve je potřeba z media vybrat potřebné stopy (jazyky, titulky...). Lze to z media při spuštěné ANY a nebo bez ANY z ISO, vyrobeném v ANY):

Výpis playlistu: C:\eac3to\eac3to M:\BDMV

Info o hlavním filmu (byl-li 1):
C:\eac3to\eac3to M:\BDMV 1)

Vytažení potřebných obrazových, zvukových a titulkových stop (čísla jsou vybrána předchozím příkazem):
C:\eac3to\eac3to M:\BDMV 1) 2: F:\3D\left.h264 3: F:\3D\right.h264 4: F:\3D\audio.DTSHD.dtshd 14: F:\3D\title.sup

Je-li nutno mít vytaženou zvukovou stopu převedenu do Ac3:
C:\eac3to\eac3to M:\BDMV 1) 2: F:\3D\left.h264 3: F:\3D\right.h264 4: F:\3D\audio.Ac3 14: F:\3D\title.sup

Je-li nutno mít vytaženou zvukovou stopu převedenou do základního sterea:
C:\eac3to\eac3to M:\BDMV 1) 2: F:\3D\left.h264 3: F:\3D\right.h264 4: F:\3D\audio.Ac3 14: F:\3D\title.sup -down2

2. Levá obrazová stopa je již výsledný levý obraz. Pravá obrazová stopa se ale nedá přehrát, je kódována jako rozdíl od levé stopy. Nutno tedy správnou pravou stopu vypočítat.

Sample.avs (script Avisynthu). Číslo vpravo dole je počet obrázků získaný z výše uvedeného vytažení stop:

LoadPlugin("C:\MVC\H264StereoSource.dll")
H264StereoSource("C:\MVC\decoder.cfg",156201)

V souboru "decoder.cfg" musí být uvedeny plné cesty k souborům. Původní text:

InputFile = "left.h264" # H.264/AVC coded bitstream
InputFile2 = "right.h264" # H.264/AVC coded bitstream

se musí např. v Poznámkovém bloku přepsat na:

InputFile = "F:\3D\left.h264" # H.264/AVC coded bitstream
InputFile2 = "F:\3D\right.h264" # H.264/AVC coded bitstream

Příkazový řádek:

C:\x264\x264.exe --profile high --level 4.1 --preset slower --crf 18 --deblock -3:-3 --bframes 8 --aq-strength 0.8 --merange 32 --fps 24000/1001 --output "F:\3D\right.264" "C:\MVC\sample.avs"

Vznikne plnohodnotný pravý kanál right.264.

3. výpočet videa "obraz vedle obrazu" (Side-by-side) pro multimediální přehrávač:

Sample2.avs (script Avisynthu):

VideoLeft = DirectShowSource("F:\3D\left.h264", audio=false)
VideoRight = DirectShowSource("F:\3D\right.264", audio=false)
VideoStacked = StackHorizontal(VideoLeft,VideoRight)
VideoResize = LanczosResize(VideoStacked, 1920, 1080)
VideoConvert = ConvertToYV12(VideoResize)
Trim(VideoConvert, 1, 156201) # omezení délky od do, je-li potřeba

Příkazový řádek:

C:\x264\x264.exe --profile high --level 4.1 --preset slower --crf 18 --deblock -3:-3 --bframes 8 --aq-strength 0.8 --merange 32 --fps 24000/1001 --output "F:\3D\FinalSide-by-side.264" "C:\MVC\sample2.avs"


4. Výpočet videa prokládaného šachovnicově, někdy nazývaného také "jako střešní tašky" (DLP-3D)

Sample11.avs (script Avisynthu) pro 720p:

#Load Left and Right Video
VideoLeft = DirectShowSource("F:\3d\left.h264", audio=false)
VideoLeft720 = BilinearResize(VideoLeft, 1280, 720).ConvertToRGB32
VideoRight = DirectShowSource("F:\3d\right.264", audio=false)
VideoRight720 = BilinearResize(VideoRight, 1280, 720).ConvertToRGB32
#Load Video Mask
MaskClip = ImageSource("C:\MVC\mask 720p.png", end=FrameCount(VideoLeft720)-1, fps=framerate(VideoLeft720)).ConvertToRGB32
# Mask and Combine
Top = mask(VideoLeft720, MaskClip)
Video3d = layer(VideoRight720, Top, "add", 255,0,0,0,true)
Trim(Video3d, 1, 156201) # omezení délky, je-li potřeba.

Příkazový řádek:

C:\x264\x264.exe --profile high --level 4.1 --preset slower --crf 18 --deblock -3:-3 --bframes 8 --aq-strength 0.8 --merange 32 --fps 24000/1001 --output "F:\ 3D\ final DLP-3D 720.264" "C:\MVC\sample11.avs"

Sample10.avs (script Avisynthu) pro 1080p:

#Load Left and Right Video
VideoLeft = DirectShowSource("F:\3d\left.h264", audio=false).ConvertToRGB32
VideoRight = DirectShowSource("F:\3d\right.264", audio=false).ConvertToRGB32
#Load Video Mask
MaskClip = ImageSource("C:\MVC\mask 1080p.png", end=FrameCount(VideoLeft)-1, fps=framerate(VideoLeft)).ConvertToRGB32
# Mask and Combine
Top = mask(VideoLeft, MaskClip)
Video3d = layer(VideoRight, Top, "add", 255,0,0,0,true)
Trim(Video3d, 1, 156201) # omezení délky, je-li potřeba.

Příkazový řádek:

C:\x264\x264.exe --profile high --level 4.1 --preset slower --crf 18 --deblock -3:-3 --bframes 8 --aq-strength 0.8 --merange 32 --fps 24000/1001 --output "F:\3D\final DLP-3D 1080.264" "C:\MVC\sample10.avs"

5. Výpočet červeno-zeleného videa (Anaglyph red - green) - brýle např. firma Tridakt

Sample9.avs (script Avisynthu):

VideoLeft = DirectShowSource("F:\3d\left.h264", audio=false)
VideoLeftRGB24 = ConvertToRGB24(VideoLeft)
VideoRight = DirectShowSource("F:\3d\right.264", audio=false)
VideoRightRGB24 = ConvertToRGB24(VideoRight)
LoadPlugin("C:\MVC\Anaglypher.dll")
#Odzkoušená nejlepší kombinace:
VideoAnagl = Anaglypher(VideoLeftRGB24, VideoRightRGB24, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1)
VideoYV12 = ConvertToYV12(VideoAnagl)
Trim(VideoYV12, 1, 156201) # omezení délky, je-li potřeba

Příkazový řádek:

C:\x264\x264.exe --profile high --level 4.1 --preset slower --crf 18 --deblock -3:-3 --bframes 8 --aq-strength 0.8 --merange 32 --fps 24000/1001 --output "F:\3D\final Anaglyph.264" "C:\MVC\sample9.avs"


6. Výpočet .sup titulků pro Side-by-side:

Programem SupRip se z obrázkového title.sup vytvoří textový titulkový soubor title.srt (nebo se title.srt stáhnou z internetu, viz předešlé části diskuze). Nepovedlo se mi převést grafické titulky přímo, ale vůbec to nevadí. I zde měl Nick007 pravdu v tom, že originální titulky i u továrních draze koupených Blu-ray mají chyby a není na škodu věnovat tomu čas a toto vše při převodu přes .srt opravit.

Programem 3Dsubtitler se z title.srt vytvoří nové grafické titulky "new title.sup". Ty se do výsledku namixují klasicky v TS-muxeru jako jiné stopy

POZOR: V TS-MUXERU MUSÍ TYTO TITULKY DOSTAT KONKRÉTNÍ NÁZEV STOPY - NAPŘ. cze-Czech! Pokud se titulková stopa jen vloží bez přejmenování, tak v některých přehrávačích nejde spustit!!!

7. Vyrobení obrazové stopy s titulky pevně nahranými do videa:

V činnostech podle bodů 3, 4 a 5 se místo levé obrazové stopy "left.h264" zadá nově vypočtená stopa s pevnými titulky "left-tit.264" a místo pravé stopy "right.264" se zadá nově vypočtená stopa "right-tit.264".

Výpočet left-tit.264:

Sample6 pro nahrání titulků do levé stopy (script Avisynthu):

DirectShowSource("F:\3D\left.h264", audio=false)
# add subtitles
LoadPlugin("C:\MVC\vsfilter.dll")
TextSub("F:\3D\title.srt")
# convert color space
ConvertToYV12()
Trim(1, 156201) # omezení délky, je-li třeba

Příkazový řádek:

C:\x264\x264.exe --profile high --level 4.1 --preset slower --crf 18 --deblock -3:-3 --bframes 8 --aq-strength 0.8 --merange 32 --fps 24000/1001 --output "F:\3D\ left-tit.264 " "C:\MVC\sample6.avs"

Výpočet right-tit.264:

Sample7 pro nahrání titulků do pravé stopy (script Avisynthu):

DirectShowSource("F:\3D\right.264", audio=false)
# add subtitles
LoadPlugin("C:\MVC\vsfilter.dll")
TextSub("F:\3D\title.srt")
# convert color space
ConvertToYV12()
Trim(1, 232600) # omezení délky

Příkazový řádek:

C:\x264\x264.exe --profile high --level 4.1 --preset slower --crf 18 --deblock -3:-3 --bframes 8 --aq-strength 0.8 --merange 32 --fps 24000/1001 --output "F:\3D\right-tit.264" "C:\MVC\sample7.avs"


Všechna výsledná videa mimo DLP-3D byla po převedení do struktury Blu-ray TS-muxerem přes multimediální přehrávač s kladným výsledkem odzkoušena na 3D televizi, anaglypht i na obyčejné televizi. Odzkoušen nebyl formát DLP-3D, protože, jak jsem psal v úvodu tohoto příspěvku, můj projektor je podvod a DLP-3D bohužel neumí. Sejmutím jednoho snímku z DLP-3D a jeho prozkoumáním ve Photoshopu jsem ale zjistil, že převod do šachovnicové interpolace je v pořádku a na správném stroji by i toto video DLP-3D mělo jako 3D správně hrát.

Zdravím, Ruda.