Playing encrypted video

后端 未结 6 965
小蘑菇
小蘑菇 2020-12-23 18:20

What I want to do is next: We need to protect the video content(encrypt it) and be able to play it.

Tricky part is that we do not want to load everything into memory

6条回答
  •  春和景丽
    2020-12-23 18:49

    Thank you all for the ansers. I am a guy who went through a lot of different approaches.

    I wrote my own Videoplayer using openGL+FFMPEG that could play mp4 and decrypt each frame in the GPU using shaders. I also experimented with another possible solutions, such as streaming from a webserver using VLC. (VLC offers some kind of encryption/decryption when dealing with streams), and yada yada yada.

    Also one solution was to use 4 mediaelements(WPF) and the actual video was virtually split into 4 areas and each area was rotated so the video was not viewable. Once you loaded the video into 4 mediaelements, you could map out which part you wanted to show and also rotate it back. But in all honesty, MediaElement is bad.

    However I ended up exactly with what RomanR said. I built DirectShow graph using mp4splitter, ffdshow, videorenderer and I modified mp4splitter sourcefilter. The reading happens in BaseSplitter/AsyncReader.cpp (just modify SyncRead function) that mp4splitter uses.

    If you would like to implement it yourself, just use MPC-HC project and modify the filters as you like. It took me some time to get around the DirectShow concept, but once you understand it, it becomes great weapon.

    http://sourceforge.net/apps/trac/mpc-hc/

提交回复
热议问题