Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

z80020100/RKModules

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

10 Commits

Repository files navigation

RK多媒体库

媒体库内支持组件:

  1. USB 摄像头组件
  2. RK 编码器组件
  3. MP4 封装组件
  4. STREAM_MEDIA 流媒体组件

编译

build目录下寻找对应的CMake脚本

  1. 编译arm linux使用build/arm-linux/build_arm_linux.sh cd build/arm-linux ./build_arm_linux.sh
  2. 编译64位aarch linux使用build/aarch-linux/build_aarch_linux.sh cd build/aarch-linux ./build_aarch_linux.sh

生成的库在src目录下 librkmedia.so
头文件目录在顶层目录下的include

demo

demo目录:顶层目录/demo

接口

暂时只支持C++接口 后续会封装C接口

  1. USB 摄像头组件 数据结构 :camera_buf : 摄像头采集buffer
    typedef struct {
    void *data;
    int dataLen;

    struct v4l2_buffer vbuf;
    int bufIndex;
    }CameraBuf;

    1. 初始化 int Init(const char *dev, unsigned int fmt, int w, int h); 传入usb摄像头的设备路径 如/dev/video0 fmt是v4l2采集格式 如V4L2_PIX_FMT_YUYV V4L2_PIX_FMT_NV12等 以及传入宽高
      如果摄像头不支持所设定的格式和宽高 会报错退出 需要根据所用的摄像头自行调整

    2. int Deinit(); 退出摄像头组件

    3. int GetFrame(CameraBuf *buf); 从摄像头获取一帧 数据保存在camera_buf的data指针中

    4. int FreeFrame(CameraBuf *buf); 释放获取的摄像头帧

  2. RK 编码器组件

    1. 初始化 MPP_RET Init(int w, int h, MppFrameFormat fmt); 传入宽高和输入格式 格式要和选用的摄像头格式对应
    2. MPP_RET Deinit(); 退出编码器组件
    3. MPP_RET GetSpsPps(unsigned char **data, int *data_size); 获取编码器生成的的sps和pps
    4. MPP_RET MPP_RET Encode(RK_U8 *data, RK_U32 dataSize, MppPacket *pkt); 编码一帧
  3. MP4 封装组件

    1. int CreateMP4File(const char *file, int w, int h, int time_scale, int frm_rate); 创建mp4文件 需要指定文件名
    2. void CloseMP4File(); 关闭mp4文件
    3. int WriteSPSandPPS(unsigned char *sps_pps, int data_size); 写入sps和pps
    4. int WriteNalu(unsigned char *nalu_data, int nalu_size); 写入一帧h264 nalu
  4. STREAM_MEDIA 流媒体组件

    1. int InitRTProtocol(const char *ip, int port); 初始化 需要传入rtp地址和端口
    2. int DeinitRTProtocol 退出流媒体组件
    3. int SendRtpPacket(const uint8_t *nalu, uint32_t nalu_size); 发送一帧h264

About

wraper of code unit for rockchip chips

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

Contributors

Languages

AltStyle によって変換されたページ (->オリジナル) /