skye

skye

0个粉丝

1

问答

0

专栏

0

资料

skye  发布于  2025-10-28 09:50:21
采纳率 0%
1个问答
167

1.为什么rkipc脚本开机可以跑手动执行不可以 2.vi获取的数据泛绿如何解决

悬赏金¥ 5
已结题
 

问题1:
固件自带开机执行的rkipc程序为什么可以通过开机脚本RkLunch.sh运行起来,但是手动执行就不行并且报错

问题2:
从vi拿数据并且保存起来图片为什么泛绿

#include <assert.h>
#include <fcntl.h>
#include <getopt.h>
#include <pthread.h>
#include <signal.h>
#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <unistd.h>
#include "rkmedia_api.h"

#define CAMERA_PATH "rkispp_scale0"
#define PIPE_ID 0
#define CHN_ID 0

static bool quit = false;

void handle_quit_signal(int sig)
{
    printf("vi_program quit....\n");
    quit = true;
}


void * get_camera_vi_thread(void * args)
{
    MEDIA_BUFFER mb = NULL;
    FILE * nv12_file = fopen("test_camera.nv12", "w+");

    while (!quit)
    {
        mb = RK_MPI_SYS_GetMediaBuffer(RK_ID_VI, CHN_ID, -1);
        if(!mb)
        {
            printf("get Vi mb break....\n");
            break;
        }

        fwrite(RK_MPI_MB_GetPtr(mb), 1, RK_MPI_MB_GetSize(mb), nv12_file);
        RK_MPI_MB_ReleaseBuffer(mb);
    }
}


int main(int argc, char *argv[])
{
    printf("main start\n");
    signal(SIGINT, handle_quit_signal);

    int ret;
    VI_CHN_ATTR_S vi_chn_attr;
    vi_chn_attr.pcVideoNode = CAMERA_PATH;
    vi_chn_attr.u32Width = 1920;
    vi_chn_attr.u32Height = 1080;
    vi_chn_attr.enPixFmt = IMAGE_TYPE_NV21;
    vi_chn_attr.u32BufCnt = 3;
    vi_chn_attr.enBufType = VI_CHN_BUF_TYPE_MMAP;
    vi_chn_attr.enWorkMode = VI_WORK_MODE_NORMAL;
    ret = RK_MPI_VI_SetChnAttr(PIPE_ID, CHN_ID, &vi_chn_attr);
    if(ret)
    {
        printf("Create VI Failed...\n");
        return -1;
    }
    else
    {
        printf("Create VI Success...\n");
    }

    ret = RK_MPI_VI_EnableChn(PIPE_ID, CHN_ID);
    if(ret)
    {
        printf("Enable VI Failed...\n");
        return -1;
    }
    else
    {
        printf("Enable VI Success...\n");
    }

    ret = RK_MPI_VI_StartStream(PIPE_ID, CHN_ID);
    if(ret)
    {
        printf("RK_MPI_VI_StartStream Failed...\n");
        return -1;
    }
    else
    {
        printf("RK_MPI_VI_StartStream Success...\n");
    }

    pthread_t pid;
    pthread_create(&pid, NULL, get_camera_vi_thread, NULL);

    while (!quit)
    {
       sleep(1);
    }

    RK_MPI_VI_DisableChn(0, 0);

    return 0;
}

我来回答
回答1个
时间排序
认可量排序

skye

0个粉丝

1

问答

0

专栏

0

资料

skye 2025-10-28 10:17:15
认可2

代码中的
vi_chn_attr.enPixFmt = IMAGE_TYPE_NV21;
改为
vi_chn_attr.enPixFmt = IMAGE_TYPE_NV12;

或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
+ 添加网盘链接/附件

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
相关问答
无更多相似问答 去提问
举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

易百纳技术社区