请教一下,关于FFMPEG读文件的问题。我的思路被卡住了

maya8maya85 发布于 2016/08/11 16:00
阅读 577
收藏 0

一个客户,说要给视频文件加上一个只能自己识别的标记,目的就是想让视频只能自家的播放器播放,像暴风啊,迅雷的不能看。像是把视频加密这样子吧,背景就这样了。

本人对ffmpeg看了有一个月吧,才了解了一点点,太复杂了。看过雷神(已故)的例子,也算是了解了一点。

我对客户这样的要求,一开始是想到逐帧加密,后来发现自己不会播放加密的帧。有同行说,不要动原数据,就加个文件头,就是加个标志在前面,但我这文件怎么读啊?下面是我的想法和思路,请大家给点法子。

打个比方,加了标志的文件是a.xxx
文件数据:其中abcde为文件头,如果删掉abcde就是一个mp4文件
abcde.....原始视频数据.....

现在把文件打开了
FILE *f = NULL;
fopen_s(&f ,"文件.xxx" , "r");
fseek(f, 5, SEEK_SET);

//然后使用FFMPEG读取
avformat_open_input(pFormatCtx, 【这里不会填】, NULL, NULL);

如果把文件指针给FFMPEG,那这位置就是NULL,就等于读内存操作,像雷神的读内存例子http://blog.csdn.net/leixiaohua1020/article/details/39759163
但他这个对大文件就不好处理了。

如果是当读文件处理,像a.xxx的文件又不能使用avformat_open_input()读出pFormatCtx的。

有的说不要太拘泥FFMPEG,我现在就没找到方法如何写。不用avformat_open_input(),还有什么方法得到a.xxx的pFormatCtx。重点是后面这句。

这就是我卡住的地方。
请大伙们,支支招啊

加载中
0
按图索骥
按图索骥
你自己写个mux吧,稍微改下就可以。迅雷看看的xlv就类似的
maya8maya85
maya8maya85
图片我补在下面
maya8maya85
maya8maya85
手上有个avi - mp4的案子,是不是像它这样写一个自定义的容器?但我还是不会写容器呢。。。
maya8maya85
maya8maya85
请教,请教,有同行说要自己修改FFMPEG的源码,不想这样做。希望有一些更具体点的指导,请问有相关的资料可以看吗?谢谢了
0
中山野鬼
中山野鬼
视频解码分两块,一块是bitstream的工作,一块是pixel方面的工作。 你想加密,或者不想其他播放器兼容,还是在bitstream上面做文章就可以。 把码流的格式改一改,正规编码器会认为是错误的格式,自动放弃掉。 有几年没碰了,细节忘的差不多了。我记得加密方面在264的协议中好像有的,不能肯定。你也可以参考一下。哈
maya8maya85
maya8maya85
回复 @中山野鬼 : ...无语
中山野鬼
中山野鬼
回复 @maya8maya85 : 网上找一下,ffmpeg是开源的。对应h264的也有开源的版本。不过两者不是同一类的东西。哈。
maya8maya85
maya8maya85
有相关的资料可以看一下嘛?
0
zn123
zn123

很简单阿, 在视频里关键位置 比如头文件 里 做一下 加密, 

比如长度乘个 倍数, 关键字加个扰码, 你自己解码的时候 反算回来 再送解码器,

通常的解码器就会出错,认为是坏文件

maya8maya85
maya8maya85
回复 @zn123 : 方便的话,请加我Q:578111217
maya8maya85
maya8maya85
回复 @zn123 : 能不能有偿帮我写个Demo?播放代码我来写,你就改一改关键的地方?
zn123
zn123
@maya8maya85 你去学习一下 mp4 文件结构 把里面关键字替换了,自己用的时候替换回来
maya8maya85
maya8maya85
能继续说说吗?大神
maya8maya85
maya8maya85
你们高手当然说简单啦,先别说什么乘什么数,就是加个1,我都不会在哪里加啊,头文件是哪个头文件,跟文件头是一回事么?大侠,希望得到你的指点啊,需要什么函数,能不能说说呢?
返回顶部
顶部