[TD的日常] Hiero導(dǎo)出的xml,導(dǎo)入達(dá)芬奇會(huì)崩
公司的視效剪輯發(fā)來(lái)求救信息:
hiero 導(dǎo)出的一個(gè)xml,導(dǎo)入達(dá)芬奇后,達(dá)芬奇直接崩了,其他的 xml?都沒(méi)事。
那肯定是這個(gè)?xml?有問(wèn)題唄,要來(lái)了出問(wèn)題的xml?和?沒(méi)毛病的?xml。

在達(dá)芬奇里右鍵?import > xml?指定有問(wèn)題的 xml 文件,然后鼠標(biāo)變?nèi)θ?,幾秒后然后達(dá)芬奇就直接退出了。
然后導(dǎo)入那個(gè)沒(méi)毛病的?xml,恩,果然沒(méi)毛病。
這個(gè)過(guò)程我稱(chēng)之為還原犯罪現(xiàn)場(chǎng),驗(yàn)證一下提問(wèn)者描述的信息是不是正確,是不是在我的環(huán)境下也出現(xiàn)。

打開(kāi)問(wèn)題?xml,大致瀏覽一下,是不是有一看就不對(duì)頭的信息,比如亂碼啦,xml?標(biāo)簽格式不匹配沒(méi)關(guān)閉等。
并沒(méi)有,那是不是有跟其他xml?很不一樣的地方呢?
我使用?beyond?compare 軟件,把兩個(gè)?xml拽進(jìn)來(lái)對(duì)比一下,有問(wèn)題的?xml?并沒(méi)有特殊的標(biāo)簽塊。

只要來(lái)最笨的一招,逐段排查。
刪掉絕大部分?clip,只保留?一個(gè)?track,其中里面只包含一個(gè)?clip,保存,導(dǎo)入,還是崩。
這時(shí)候就很開(kāi)心啦,xml?文件由原來(lái)的 80kb,變成了 1kb,犯罪嫌疑人的范圍大大縮小了。
把一個(gè)正常?xml?的里面的一個(gè)?clip?復(fù)制,粘貼并替換掉出錯(cuò)文件中那個(gè)唯一的?clip?段,保存,導(dǎo)入,正常!
也就是說(shuō)犯罪嫌疑人窩藏在?clip?標(biāo)簽里面。
然后對(duì)?clip?標(biāo)簽里面的內(nèi)容進(jìn)行逐一排查(方法還是上面說(shuō)的),你可以二分法,可以黃金分割法,總之,最后我定位到了 <file id="piantou">?這一行中的 “piantou”。
難道這里暗藏什么玄機(jī)?不能?u?結(jié)尾?不能?p?打頭?(這是另一個(gè)故事,某個(gè)nuke文件提交渲染農(nóng)場(chǎng)總是報(bào)錯(cuò))
但也沒(méi)聽(tīng)說(shuō)過(guò) Final Cut Pro 7 的 xml?有這種規(guī)定啊,測(cè)試驗(yàn)證:
改成“hahaha”?√
改成“iantou” √
改成“piantoa” √
改成“piantou1” √
改成任何字符串都沒(méi)問(wèn)題,只是不能叫“piantou”。太神奇了!簡(jiǎn)直匪夷所思。
于是先把出問(wèn)題的?xml?查找 <file id="piantou">? 并全部替換為 <file id="_piantou">,導(dǎo)入成功,先發(fā)給那個(gè)視效剪輯應(yīng)應(yīng)急,她還在線(xiàn)等著.....

燃眉之急解了后,就必須揪出兇手了。
我叫來(lái)了張來(lái)吃,把上述過(guò)程描述了一遍,然后說(shuō):
這個(gè) “piantou”?字符串出現(xiàn)在?xml?哪兒哪兒都是,media?文件名字是,clip?名字也是,文件名字也是,連(滾動(dòng)文件到最上面)sequence?也叫“piantou”!啊咧,等一下,這個(gè)?sequence?也有個(gè)?id,<sequence id="piantou">,?直覺(jué)告訴我,id?嘛,肯定得獨(dú)一無(wú)二啊,但一個(gè)是?file,?一個(gè)是 sequence,類(lèi)型不一樣,難道?id?也不能沖突嗎??
試了一下,修改?sequence?id?為 "hahaha",保存,導(dǎo)入,正常!
果了個(gè)然!破案了!Hiero 的鍋!
好了,來(lái)吃你可以走了。
這里,來(lái)吃就充當(dāng)了程序員口中的“小黃鴨”。


Hiero?在導(dǎo)出?xml?的時(shí)候,會(huì)將 sequence 的名字,直接作為?id 值,同樣,clip file 的名字,直接作為?id 值,Hiero?并沒(méi)有去判斷它生成的?id?是否有撞車(chē)情況。
我把這段話(huà)發(fā)給了視效剪輯,讓她以后注意,并建議她?sequence?換個(gè)名字(代價(jià)最?。?。
什么?讓我魔改 Hiero?導(dǎo)出?xml 的代碼?
告辭,我和 Hiero?何必互相傷害,你等它更新就行了......

有些人好奇 TD?每天都干啥。
視效剪輯問(wèn)我怎么這么神奇,每次都能找到問(wèn)題答案,而且還看起來(lái)還好簡(jiǎn)單的樣子,只用記事本notepad++就能解決問(wèn)題,能不能教兩招。
招式學(xué)了也不能生搬硬套,我就如實(shí)記錄一下日常工作和解決的思路。希望可以對(duì)碰到同樣問(wèn)題的讀者,或者類(lèi)似問(wèn)題的讀者有幫助。