2011-10-15 102 views
0

我有一個mov文件,我通過向影片的開頭添加一個包含圖像的曲目(使用QTMovie的-addImage方法)進行修改。當我扁平化這樣的電影(使用QTMovie的-writeToFile:方法)時,我在開始時得到另一個帶有「水印」的.mov文件。 但是,當我嘗試播放它時,我最終得到的消息是需要安裝QuickTime 7才能播放這樣的文件(原始未處理的mov文件不需要QuickTime Player 7,並且可以在QT中正常播放與雪豹和獅子來的玩家X)。QTMovie addImage:forDuration:withAttributes:無法由QuickTime播放器播放X

我想知道是否有可能讓這個文件能夠在QuickTime Player X上播放?我不希望我的應用程序的用戶被迫安裝這個舊版本的播放器。此外,某些應用程序(如Final Cut Pro 7,Telestream Episode Engine編碼器,Autodesk Smoke)只是在向其添加圖像軌道後才正確理解此「文件格式」。

是否可以添加圖像作爲電影軌道,而不是作爲圖像軌道,不知何故?也許使用舊的QT API? (無論如何,QTKit似乎仍然是原始的)。

我將「mpv4」指定爲圖像編碼器(在-addImage方法中),但該水印圖像仍不被視爲電影軌道,而是視爲用電影編碼器編碼的圖像軌道。

謝謝!

+0

請提供更多信息。原始電影中使用了哪些編解碼器?您可以在QuickTime Player的檢查器中查看它。你是如何添加新曲目的? '[QTMovie addImage:forDuration:withAttributes:]'不會添加新軌道,而是將圖像添加到現有軌道。你是如何壓扁電影的?你使用'QTMovieFlatten'屬性嗎?水印是什麼樣的? – Davyd

+0

其實我剛創建了一個新電影([[QTMovie alloc] initToWritableData:error:]),爲電影添加了一個圖像(-addImage)(顯然創建了一個新的軌道,至少是一個「圖像」類型,開始時爲0首曲目)。然後我將原始電影中的所有曲目複製到這個新創建的曲目中(遍歷所有曲目並調用addTrack:用於每個曲目)。因此我沒有使用任何特殊的編解碼器。除了原始電影音軌之外,QTPlayer的電影檢查器還顯示了一個MPEG4「視頻」音軌,它是使用'mpv4'編解碼器編碼的圖像,並且不是真正的視頻軌道 – itsjustme

+0

然後,我使用[QTMovie -writeToFile :@「newmovie.mov」withAttributes:[NSDictionary dictionaryWithObj:[NSNumber numberWithBool:YES] forKey:QTMovieFlatten]](這是我發現能夠獲得真正寫入文件的所有曲目的唯一方式,否則我只是得到了mov文件中的「符號鏈接」以及本身大小爲4KB的mov文件)。我猜,這個mov文件只能用QuickTime 7打開,這可能會讓最終用戶感到惱火。我希望我可以將圖像轉換爲**真實視頻軌道**,而不是圖像軌道。也許使用QuickTime C API。 – itsjustme

回答

1

製作一部新的電影,並設置屬性以允許編輯:

QTMovie* trailerMovie = [QTMovie movie]; 
[trailerMovie setAttribute:[NSNumber numberWithBool:YES] forKey:QTMovieEditableAttribute]; 

選擇在原電影中的時間範圍,並把它們添加到新的一個:

QTTimeRange selectionRange = QTMakeTimeRange(QTMakeTime(...), QTMakeTime(...)); 
[originalMovie setSelection:selectionRange]; 
[trailerMovie appendSelectionFromMovie:originalMovie]; 

添加圖片:

[trailerMovie addImage:image forDuration:duration withAttributes:nil]; 

將影片保存爲QTMovieFlatten屬性的文件:

[trailerMovie writeToFile:@"trailer.mov" withAttributes:[NSDictionary dictionaryWithObj:[NSNumber numberWithBool:YES] forKey:QTMovieFlatten]] 

試試這個場景,請讓我知道它是怎麼回事。

+0

Davyd,謝謝你的回答。事情是我不僅需要添加一個預告片,還需要添加一個領導者,當他們首先被添加時,他會創建自己的跟蹤。 – itsjustme

+0

如果我將圖像附加到電影的末尾,我只有一個結果軌道(前提是我指定的圖像編碼器與現有視頻軌道相同)。但是,一旦首先添加圖像(即使編解碼器與電影相同),我發現自己有兩個音軌。 – itsjustme

+0

我會嘗試將短片段的電影插入到新電影中。這將創建曲目。圖像現在應該轉到現有的軌道上。添加後刪除第一個分段。我承認這是一種有效的解決方法,但它可以爲您節省時間。 – Davyd

相關問題