我在DM3730上运行了位于dvsdk_demos_4_00_00_18/omap3530目录下的encode demo程序,实现对摄像头数据的采集、显示、编码和保存,摄像头的帧速率是30fps,图像大小事640*480,色彩空间是YUYV,所有功能正常,但是根据打印信息(来自于控制线程的打印信息,每隔1s打印一条,选取其中一条):
ARM Load: 213% DSP Load: 3% Video fps: 4 fps Video bit rate: 280 kbps Sound bit rate: 0 kbps Time: 00:00:22 Demo: Encode Display: VGA Video Codec: H.264 BP Resolution: 640×480 Sound Codec: N/A Sampling Freq: N/A
综合多条类似打印信息,可以了解到:1、程序的视频帧速率只有4 fps左右;2、ARM端的负载基本都在100%以上。
问题一:视频帧速率为什么这么低?为了验证视频帧速率确实如此低,我还在采集线程中加了打印时间的语句,结果显示程序每隔0.2到0.3s的时间采集一帧数据,符合4帧/秒的帧速率。但是摄像头的帧速率分明是30fps,且根据用户手册,TI提供的DSP端的编码器性能足够强大,对30fps的640*480的图像进行h264的编码处理不可能如此捉襟见肘。
问题二:ARM端的负载怎么会超过100%?这会不会就是帧速率低的原因。
希望专家予以解答。谢谢
John Lin1:
H264的配置正确了吗???是采集问题还是后面的编码问题?
shilv shen:
回复 John Lin1:
H264的配置都正确,编码后也能得到正确的数据(经过解码验证)。由于这个demo程序是用多线程的,各线程之间用Rendezvous进行同步,一个线程慢了就会导致全部都慢,所以就分不清是采集问题还是编码问题了。
不过我还做了一个实验,就是改变了采集图像的分辨率,由640*480改成了352*288,照理来说编码器的负担减轻了,编码就会快一点,但是打印信息显示帧率还是没有提高。说明编码器出问题的可能性不大。
shilv shen:
回复 John Lin1:
H264的配置都正确,编码后也能得到正确的数据(经过解码验证)。由于这个demo程序是用多线程的,各线程之间用Rendezvous进行同步,一个线程慢了就会导致全部都慢,所以就分不清是采集问题还是编码问题了。
不过我还做了一个实验,就是改变了采集图像的分辨率,由640*480改成了352*288,照理来说编码器的负担减轻了,编码就会快一点,但是打印信息显示帧率还是没有提高。说明编码器出问题的可能性不大。
yi luo:
你好,
想请问一下,是怎样实现在3730上进行Encode的?
谢谢。