4

I need to create steganographic videos (videos with data hidden in them) for my project. I need to carry this out by extracting all the frames from a video and then hiding data in the selected frames by replacing bits in the LSB of the pixel color value and then encoding all the frames to create a new video(note here that lossless formats are required otherwise I might end up losing hidden data).

My research motivated me to use xuggler for manipulating videos, 'png' format to save the extracted images as it is a lossless format(handling them as BufferedImage objects), and using 'avi' video files. As of now I am able to extract all frames from a video and encode my hidden data in the lsb's.

But I am having problems in creating the new avi video file using xuggler. When I extract the frames from the new video they lose the hidden data. I don't understand how to get this right and keep the data intact. This could be due to some lossy compression technique being used to create the new video.The size of the new video does not matter to me. I also can't find the correct codec_id to create the new video. I am extensively using xuggler tutorial available on wiki. decode and capture frames http://build.xuggle.com/view/Stable/job/xuggler_jdk5_stable/ws/workingcopy/src/com/xuggle/mediatool/demos/DecodeAndCaptureFrames.java

I can post my code as required...

DNA
  • 42,007
  • 12
  • 107
  • 146
  • I can use other java libraries also. If somebody knows other good libraries for manipulating videos and can guide me or provide link to tutorials then he/she is welcome... – prakhar saxena Jul 03 '12 at 17:32

1 Answers1

2

The problem is in the algorithm you are using , as mpeg or other famous video compression techniques are lossy compression techniques you will be losing data when you convert the frames back to video stream . So in lossy video codecs you cannot use LSB techniques for steganography . Instead what you can do is change the motion vectors of the videos in someway to hide steganographic data . The problem in this is that xuggler being a higher level api might not give you a way to find/alter the motion vectors of the p/b frame . ffmpeg which xuggler uses does have a option for you to visualize the motion vectors so your best bet for motion vectors algo is alter the source code of ffmpeg as its a open-source project . Do reply back if you find a better way to find motion vectors .

Well , there is a simpler video steganography method

You can refer to Real steganography with truecrypt

But if you really want to go with mpeg video compression you can refer to the wonderful paper : Steganography in Compressed Video Stream but the problem still remains extracting and manipulating the motion vectors

Tapan Thaker
  • 362
  • 5
  • 13
  • hi tapan...I am also facing little bit what problem.instread of lsb method i am using appending delimiters 4 Hash and after that my text data.then i create new video.from this video i created set of frames.finally searching 4 Hash Delimiter.but i am unble to get..what is wrong in my project concept – Sumit Aug 21 '12 at 12:07
  • Hello sumit , i am sorry but i am unaware about your algorithm on steganography , can you post a link or something to the paper or reference you are referring to ? – Tapan Thaker Aug 23 '12 at 19:51
  • hi tapan, this was a great reply from your side. I would certainly consider using ffmpeg and let you know if it is a success... – prakhar saxena Sep 01 '12 at 19:53