你好,
我最近想在DM6467T平台上实现MPEG4视频编解码,我看到官方提供的DVSDK给提供了MPEG4编解码源码,而且也有h.264视频编解码的DEMO程序。
我目前已经实现了使用h.264的demo程序进行视频的编解码了,那么如何在这个基础上进行修改为MPEG4呢?
我想问问:
1、DM6467T能否支持MPEG4视频编解码?
2、如果支持,如何通过ARM端调用该编解码?
3、如果通过H.264的Demo修改为mpeg4,那么传入的参数是否需要改变呢?
有没有什么配置步骤的文档可以参考的?
baoguo cao:
回复 Chris Meng:
你好,感谢回复:
我用的是DVSDK3_10_00_19,所有编解码在目录cs2dm6467_1_00_00_10下,就像您说的,ti提供了编解码的库文件,那么在编译时,这些库文件应该被编译进了DSP的服务器端形成cs.x64P可执行文件。mpeg4编解码也应该被编译进了该执行文件,那么在ARM端就可以用VISA进行调用了吧?ARM端,dvsdk内有dvsdk_demos_3_10_00_16目录,内有dm6467调用h.264编解码的demo,通过编译后生成可执行程序可以在单板上成功执行(可以对视频编解码)。
我仔细看了encodedecode目录下的源码(想在本地自环),源码本来是调用h.264编解码,我现在通过修改codecs.c文件让其调用mpeg4编解码,除此外没做别的更改,然后执行,执行没有错误,但是视频没有传成功。
描述的有点长,希望能描述清楚,我想知道,我这样改对不对,如果不对,我该如何进行修改呢?
Chris Meng:
回复 baoguo cao:
你好,
请问你创建instance的时候,是否创建的是mpegenc/mpeg4dec的instance?
baoguo cao:
回复 Chris Meng:
你好,
公司上网不太方便,回复较慢。
我打开了mpeg4enc和mpeg4dec的instance。
我在主函数中创建了一个线程(ARM端),然后在这个线程中调用dmai_2_10_00_12中定义的接口
Venc1_create(hEngine, envp->videoEncode, encParams, encDynParams);
后面这两个参数是传入的参数,参数是使用的dmai中定义的默认参数,最终这个函数会调用code_engine中的函数
VIDENC1_create( ) 创建mpeg4enc或者mpeg4dec的instance。
执行的过程并没有报错,所以我觉得应该是创建成功了,另外我想后面传入的参数会不会根据h.264或者mpeg4编解码的不同而有所变化呢?
Chris Meng:
回复 baoguo cao:
你好,
编码和解码都没有报错么?如果是,你能否先尝试编码,看编码输出的文件是否是正确的mpeg4码流?
baoguo cao:
回复 Chris Meng:
你好,
编解码都没有报错,今天我只进行mpeg4编码,下图是我的打印信息
然后将编码后的数据输出到文件中,得到码流如下
我上网搜索了一下,感觉这应该就是mpeg4的码流。
但是我想通过视频播放软件(VLC)播放这段码流,并没有播放成功,下一步我打算通过网络将这个数据流传输到PC机上,然后播放网络流看看是否可以。
baoguo cao:
回复 Chris Meng:
您好,非常感谢您的耐心解答,我最近被别的事情耽搁。
我这两天又尝试通过RTP将这个编码后的视频数据发送到PC上,通过上位机播放,但是失败了,有两个原因,
第一个原因是我不确定关于MPEG4的.sdp文件是否正确;
第二个原因不确定视频数据是否被正确的格式编码。
所以我想请教您:
通过我上面的截图分析,我所得到的的文件是否为MPEG4编码格式的文件?
一般怎么测试编码后视频流?
baoguo cao:
回复 Chris Meng:
你好,
非常感谢您的热心回复,我将编码后的数据写到本地后,通过这个软件分析是mpeg4格式,而且可以播放。
接下来我去看解码部分的程序,如果有问题再过来咨询。
谢谢。
Chris Meng:
回复 baoguo cao:
你好,
有些解码软件需要解码的是一个有文件container的文件,例如avi,mp4,你可以看看是不是这方面的原因。