5
- 收藏
- 点赞
- 分享
- 举报
RV1126-BP使用VI模块,获取的NV12视频是绿色的。
视频截取部分
代码:
#include <errno.h>
#include <pthread.h>
#include <signal.h>
#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/poll.h>
#include <time.h>
#include <unistd.h>
#include "inc/rk_debug.h"
#include "inc/rk_defines.h"
#include "inc/rk_mpi_adec.h"
#include "inc/rk_mpi_aenc.h"
#include "inc/rk_mpi_ai.h"
#include "inc/rk_mpi_ao.h"
#include "inc/rk_mpi_avs.h"
#include "inc/rk_mpi_cal.h"
#include "inc/rk_mpi_ivs.h"
#include "inc/rk_mpi_mb.h"
#include "inc/rk_mpi_rgn.h"
#include "inc/rk_mpi_sys.h"
#include "inc/rk_mpi_tde.h"
#include "inc/rk_mpi_vdec.h"
#include "inc/rk_mpi_venc.h"
#include "inc/rk_mpi_vi.h"
#include "inc/rk_mpi_vo.h"
#include "inc/rk_mpi_vpss.h"
static bool quit =false;
static RK_S32 dev_pipe =0;
static RK_S32 vi_pipe =0;
static RK_S32 vi_chn =0;
static void sigterm_handler(int sig) {
fprintf(stderr, "signal %d\n", sig);
quit = true;
}
int dev_init()
{ int ret;
VI_DEV_ATTR_S vi_dev_attr_s;
memset(&vi_dev_attr_s,0,sizeof(VI_DEV_ATTR_S));
RK_MPI_VI_GetDevAttr(dev_pipe,&vi_dev_attr_s);
RK_MPI_VI_SetDevAttr(dev_pipe,&vi_dev_attr_s);
ret = RK_MPI_VI_EnableDev(dev_pipe);
if(ret !=0)
{
printf("RK_MPI_VI_EnableDev is failed.....\n");
RK_MPI_SYS_Exit();
return -1;
}
else
{
printf("RK_MPI_VI_EnableDev is success.....\n");
}
VI_DEV_BIND_PIPE_S vi_dev_bind_pipe_s;
memset(&vi_dev_bind_pipe_s,0,sizeof(VI_DEV_BIND_PIPE_S));
vi_dev_bind_pipe_s.u32Num =1;
vi_dev_bind_pipe_s.PipeId [0] = dev_pipe;
ret = RK_MPI_VI_SetDevBindPipe(dev_pipe,&vi_dev_bind_pipe_s);
if(ret !=0)
{
printf("RK_MPI_VI_SetDevBindPipe is failed.....\n");
RK_MPI_SYS_Exit();
return -1;
}
else
{
printf("RK_MPI_VI_SetDevBindPipe is success.....\n");
}
return 0;
}
int vi_chn_init()
{ int ret;
VI_CHN_ATTR_S vi_chn_attr_s;
memset(&vi_chn_attr_s,0,sizeof(VI_CHN_ATTR_S));
vi_chn_attr_s.stIspOpt.u32BufCount = 3;
vi_chn_attr_s.stIspOpt.enMemoryType =VI_V4L2_MEMORY_TYPE_DMABUF;
vi_chn_attr_s.stSize.u32Height =1080;
vi_chn_attr_s.stSize.u32Width =1920;
vi_chn_attr_s.enPixelFormat =RK_FMT_YUV420SP ;
vi_chn_attr_s.enCompressMode =COMPRESS_MODE_NONE;
vi_chn_attr_s.u32Depth =1;
ret = RK_MPI_VI_SetChnAttr(vi_pipe,vi_chn,&vi_chn_attr_s);
if(ret !=0)
{
printf("RK_MPI_VI_SetChnAttr is failed.....\n");
RK_MPI_SYS_Exit();
return -1;
}
else
{
printf("RK_MPI_VI_SetChnAttr is success.....\n");
}
ret = RK_MPI_VI_EnableChn(vi_pipe,vi_chn);
if(ret !=0)
{
printf("RK_MPI_VI_EnableChn is failed.....\n");
RK_MPI_SYS_Exit();
return -1;
}
else
{
printf("RK_MPI_VI_EnableChn is success.....\n");
}
return 0;
}
void*vi_getbuffer(void*argc)
{ int ret;
FILE*fd;
fd =fopen("/data/NV12.yuv","wb");
VIDEO_FRAME_INFO_S stFrame;
printf("................pthread..............\n");
if(fd ==NULL)
{
printf("/data/NV12.yuv if open failed....\n");
return NULL;
}
while(!quit)
{
ret = RK_MPI_VI_GetChnFrame(vi_pipe,vi_chn,&stFrame,-1);
if(ret==RK_SUCCESS)
{
void*Data = RK_MPI_MB_Handle2VirAddr(stFrame.stVFrame.pMbBlk);
if(Data != RK_NULL)
{
size_t writett = fwrite(Data,1,3133440,fd);
if(writett!=3133440)
{
perror("fwrite failed");
break; // 写失败就退出循环
}
fflush(fd);
}else
{
printf("RK_MPI_MB_Handle2VirAddr is failed.......\n");
}
RK_MPI_VI_ReleaseChnFrame(vi_pipe,vi_chn, &stFrame);
}
}
printf(".........................................\n");
fclose(fd);
return NULL;
}
int main(int argc,char*argv[])
{ signal(SIGINT,sigterm_handler);
//rk_mpi_init
RK_MPI_SYS_Init();
//dev_init
dev_init();
//vi_chn_init
vi_chn_init();
//pthread_getbuffer
pthread_t pthread;
pthread_create(&pthread,NULL,vi_getbuffer,NULL);
while(!quit)
{
usleep(50000);
}
pthread_join(pthread,NULL);
RK_MPI_VI_DisableChn(vi_pipe,vi_chn);
RK_MPI_SYS_Exit();
return 0;
}
用的摄像头是GC2053,播放器是ffmpeg
用的播放指令是ffplay -f rawvideo -video_size 1920x1080 -pixel_format nv12 -framerate 25 C:\Users\king\Desktop\NV12.yuv。
我来回答
回答0个
时间排序
认可量排序
暂无数据
或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币
Markdown 语法
- 加粗**内容**
- 斜体*内容*
- 删除线~~内容~~
- 引用> 引用内容
- 代码`代码`
- 代码块```编程语言↵代码```
- 链接[链接标题](url)
- 无序列表- 内容
- 有序列表1. 内容
- 缩进内容
- 图片
相关问答
-
2022-10-26 13:39:21
-
2016-08-30 12:54:06
-
2024-02-26 15:01:14
-
2026-02-03 22:09:49
-
2024-09-20 17:44:51
-
2024-05-14 13:41:54
-
2021-06-21 16:08:30
-
2024-03-01 14:40:36
-
2021-05-25 14:04:53
-
2021-10-17 19:44:55
-
2023-05-24 11:35:33
-
2023-06-02 14:09:28
-
2021-12-17 16:17:56
-
2021-11-08 15:00:46
-
2026-04-09 14:01:39
-
2016-10-28 15:32:24
-
2024-10-17 11:35:46
-
2022-06-12 09:38:37
-
2022-01-13 09:22:31
无更多相似问答 去提问
点击登录
-- 积分
-- E币
提问
—
收益
—
被采纳
—
我要提问
切换马甲
上一页
下一页
悬赏问答
-
10T32crop和fcrop怎么从中间裁剪?
-
53516卡死问题
-
10hi3516cv610 去除风扇声音,人说话声音正常输出不变声
-
5hi3516cv610适配imx662的wdr模式出图图像不正常怎么去解决
-
5ss928 [sample_comm_venc_get_venc_stream_proc]-2627: get venc stream time out, exit thread
-
10要一份RK3576最新硬件资料包
-
5海思DPU的查找表怎么获取
-
10海思Hi3519DV500 自动对焦算法求助
-
10鸿欧派 Hi3519Dv500
-
10【求助】RK3576实现推流和GC2053摄像头颜色偏绿
举报反馈
举报类型
- 内容涉黄/赌/毒
- 内容侵权/抄袭
- 政治相关
- 涉嫌广告
- 侮辱谩骂
- 其他
详细说明
提醒
你的问题还没有最佳答案,是否结题,结题后将扣除20%的悬赏金
取消
确认
提醒
你的问题还没有最佳答案,是否结题,结题后将根据回答情况扣除相应悬赏金(1回答=1E币)
取消
确认

微信扫码分享
QQ好友