今天把Venc的例程存储位置改成U盘,调试成功,记录一下过程。
首先是要找到fopen命令初始化的存储路径。由于没有详细的文档,只能一个文件一个文件搜索。
主要是两个文件:Venc文件夹里的sample_venc.c文件和common文件夹里的sample_comm_venc.c文件。
首先是Venc文件夹里的sample_venc.c文件里有一个sample_comm_venc_startgetstream函数,启动了流媒体获取;跳转到sample_comm_venc.c文件中,调用了pthread_create函数,这个函数没有找到出处,但是其中一个参数调用了sample_comm_venc_getvencstreamproc函数,这个函数里面有sprintf函数,和fopen函数,其实就是写文件的存储路径的,我加上/mnt/usb再说;
实际上仅仅修改这里就够了,我还想看看到哪个函数开始写入文件的。
接下来调用了sample_comm_venc_savestream函数,调用sample_comm_venc_saveh264()函数,里面有fwrite函数,就开始写入了。
按说路径改好了,执行sample_venc例程应该就把h.264文件存入到U盘里了,但是我执行之后发现报错:
FAT-fs(sda1):Directory bread(block 8216)failed
……
FAT-fs(sda1):Directory bread(block 8237)failed
看起来挺明显的,应该是我的挂载的那个u盘的问题。
ls一下/mnt/usb,果然也报错,我上次是挂的sda1;
那就fdisk -l 一下,列表出来是sdb1;可能是我手碰了U盘一下,重新识别的时候给整到sdb1了(为啥是sdb1呢?可能是我挂载了sda1但是没有卸载吧)。
那就退出目录,umount /mnt/usb
重新挂载: mount -t vfat /dev/sdb1 /mnt/usb
挂上了,再执行Venc例程,果然没问题,视频都存在U盘里了。
阅读(3898) | 评论(0) | 转发(0) |