2012-07-03 72 views
3

我需要爲我的項目創建隱寫視頻(隱藏數據的視頻)。 我需要通過從視頻中提取所有幀,然後通過替換像素顏色值的LSB中的位來隱藏選定幀中的數據,然後對所有幀進行編碼以創建新視頻(請注意,無損格式是必需的,否則我可能會丟失隱藏的數據)。java中的視頻加密

我的研究促使我使用xuggler操縱視頻,「PNG」格式保存提取的圖像,因爲它是一種無損格式(處理它們爲BufferedImage的對象),並使用「AVI」視頻文件。 截至目前,我能夠從視頻中提取所有幀,並在lsb中編碼隱藏的數據。

但我在使用xuggler創建新的avi視頻文件時存在問題。當我從新視頻中提取幀時,他們丟失了隱藏數據。我不明白如何做到這一點,並保持數據不變。這可能是由於某些有損壓縮技術被用於創建新視頻。新視頻的大小對我無關緊要。我也無法找到正確的codec_id來創建新的視頻。我廣泛使用wiki上提供的xuggler教程。 解碼和捕獲幀http://build.xuggle.com/view/Stable/job/xuggler_jdk5_stable/ws/workingcopy/src/com/xuggle/mediatool/demos/DecodeAndCaptureFrames.java

根據需要,我可以張貼我的代碼...

+0

我也可以使用其他的Java庫。如果有人知道其他好的圖書館操縱視頻,並可以指導我或提供教程鏈接,那麼他/她是受歡迎的... –

回答

2

的問題是您正在使用的算法,如MPEG或其他著名的視頻壓縮技術都是有損壓縮技術你會在將幀轉換回視頻流時會丟失數據。因此,在有損視頻編解碼器中,您不能使用LSB技術進行隱寫。 相反,您可以做的是在某種程度上更改視頻的運動矢量以隱藏隱寫數據。問題在於,xuggler是一個更高級別的api,可能不會讓您找到/更改p/b幀的運動向量。 xuggler使用的ffmpeg確實有一個選項讓你可視化運動矢量,所以對於運動矢量算法你最好的選擇就是改變ffmpeg的源代碼作爲它的一個開源項目。如果找到找到運動矢量的更好方法,請回復。

嗯,還有一個更簡單的視頻隱寫方法

你可以參考Real steganography with truecrypt

但如果你真的想要去與MPEG視頻壓縮你可以參考的精彩 紙:Steganography in Compressed Video Stream但問題仍然是提取和操縱運動矢量

+0

prakhar saxena你解決這個問題? – Sumit

+0

嗨tapan ...我也面臨一點什麼問題.LSBLS方法我使用附加分隔符4哈希和之後,我的文本data.then我創建新的video.from這個視頻我創建了一組frames.finally搜索4哈希Delimiter.but我無法獲得..什麼是錯誤的我的項目概念 – Sumit

+0

你好sumit,我很抱歉,但我不知道你的算法在隱寫術,你可以發佈鏈接或文章或引用你是指的是? –