我有一個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方法中),但該水印圖像仍不被視爲電影軌道,而是視爲用電影編碼器編碼的圖像軌道。
謝謝!
請提供更多信息。原始電影中使用了哪些編解碼器?您可以在QuickTime Player的檢查器中查看它。你是如何添加新曲目的? '[QTMovie addImage:forDuration:withAttributes:]'不會添加新軌道,而是將圖像添加到現有軌道。你是如何壓扁電影的?你使用'QTMovieFlatten'屬性嗎?水印是什麼樣的? – Davyd
其實我剛創建了一個新電影([[QTMovie alloc] initToWritableData:error:]),爲電影添加了一個圖像(-addImage)(顯然創建了一個新的軌道,至少是一個「圖像」類型,開始時爲0首曲目)。然後我將原始電影中的所有曲目複製到這個新創建的曲目中(遍歷所有曲目並調用addTrack:用於每個曲目)。因此我沒有使用任何特殊的編解碼器。除了原始電影音軌之外,QTPlayer的電影檢查器還顯示了一個MPEG4「視頻」音軌,它是使用'mpv4'編解碼器編碼的圖像,並且不是真正的視頻軌道 – itsjustme
然後,我使用[QTMovie -writeToFile :@「newmovie.mov」withAttributes:[NSDictionary dictionaryWithObj:[NSNumber numberWithBool:YES] forKey:QTMovieFlatten]](這是我發現能夠獲得真正寫入文件的所有曲目的唯一方式,否則我只是得到了mov文件中的「符號鏈接」以及本身大小爲4KB的mov文件)。我猜,這個mov文件只能用QuickTime 7打開,這可能會讓最終用戶感到惱火。我希望我可以將圖像轉換爲**真實視頻軌道**,而不是圖像軌道。也許使用QuickTime C API。 – itsjustme