飞飞Fly~

飞飞Fly~

0个粉丝

27

问答

1

专栏

10

资料

飞飞Fly~  发布于  2020-11-17 13:59:41
采纳率 0%
27个问答
1597

海思播放器解码记录?

 

海思播放器解码记录

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

magic

1个粉丝

25

问答

4

专栏

20

资料

magic 2020-11-17 14:00:52
认可1

在设备端采用minigui+hisi vdec+vo实现本地视频回放,这个方案是在两年前就实现了的。但是最近在对接ipc后,使用播放器播放录像发现以下两个问题:

1)在ipc使用高码流(4MB/s)录像时,视频回放只能回放几秒数据就无法解码

2)设置ipc帧率是25f/s时回放效果是慢放,以前一直使用8f/s测试

对于问题1,解决方案是解码器初始化时给的内存大小不足导致的(红色部分参数)。

typedef struct hiVDEC_CHN_ATTR_S
{
PAYLOAD_TYPE_E enType;
HI_U32 u32BufSize ; /stream buf size(Byte)/
HI_U32 u32Priority ; /priority/
HI_U32 u32PicWidth ; /max pic width/
HI_U32 u32PicHeight ; /max pic height/
union
{
VDEC_ATTR_JPEG_S stVdecJpegAttr;
VDEC_ATTR_VIDEO_S stVdecVideoAttr;
};
}VDEC_CHN_ATTR_S;
【成员】
成员名称 描述
enType 解码协议类型枚举值。
静态属性。
u32BufSize 码流缓存的大小。
取值范围:大于等于解码通道大小(宽 x 高)的 3/4 倍,即 420 图
象大小的一半(宽 x 高 x3/2x1/2),以 byte 为单位。
推荐值:一幅 YUV420 解码图像大小。即:宽 x 高 x1.5。
静态属性。
u32Priority 通道优先级,取值范围为 1 ~ 255,值越大优先级越高。
注意: 0 表明此通道不被调度,
Hi3521/Hi3520A/Hi3520D/Hi3515A/Hi3515C 的 VEDU 优先级无效
但必须设置为非 0 才能解码
u32PicWidth 通道支持的解码图像最大宽(以像素为单位)
静态属性。
u32PicHeight 通道支持的解码图像最大高(以像素为单位)
静态属性。
stVdecJpegAttr JPEG 通道的相关属性
stVdecVideoAttr 除 JPEG 以外其它所支持类型的通道的相关属性

typedef struct hiVDEC_PRTCL_PARAM_S
{
HI_S32 s32MaxSliceNum;
HI_S32 s32MaxSpsNum;
HI_S32 s32MaxPpsNum;
HI_S32 s32SCDBufSize;
HI_S32 s32DisplayFrameNum;
}VDEC_PRTCL_PARAM_S;
【成员】
成员名称 描述
s32MaxSliceNum 该通道解码支持的最大 Slice 个数, ,默认为 16,仅对
H.264 有效,取值范围为[1, 136]。
s32MaxSpsNum 该通道解码支持的最大 SPS 个数,默认为 2,仅对 H.264
有效,取值范围为[1, 32]。
s32MaxPpsNum 该通道解码支持的最大 PPS 个数,默认为 2,仅对 H.264
有效,取值范围为[1, 256]。
s32SCDBufSize 码流切分模块的 buffer 大小,对 JPEG/MJPEG 无效, h
264 解码时,取值为大于等于 MAX( 256 x 1024,通道
宽 x 通道高 x 3 / 2);其它协议解码时取值为大于等于
解码通道大小(宽 x 高)。
s32DisplayFrameNum 显示及解码缓存的图像的最小帧数,对 H.264 解码通道
默认为 2,对 JPEG 解码通道默认为 4。
取值范围: [1, 16]

2)对于问题二

是对解码器工作模式的理解错误,以前是8f/s的数据,所以每向解码器发送一帧数据我都会睡一小会,再发送下一帧数据。通过usleep达到控制帧率的效果。其实这种理解是错误的。对解码器而言,它没有帧率的概念,读取h264数据只需要查询解码器状态,能继续发送数据给它就直接发送就行,让解码器全速运行解码即可。而帧率控制是通过vdec绑定vo之后,设置vo的帧率参数来达到视频播放帧率控制效果。

HI_MPI_VO_SetChnFrameRate
【描述】
设置指定视频输出通道的显示帧率。
【语法】
HI_S32 HI_MPI_VO_SetChnFrameRate (VO_DEV VoDev,VO_CHN VoChn, HI_S32
s32VoFramerate);
【参数】
参数名称 描述 输入/输出
VoDev 视频输出设备号。 输入
VoChn 视频输出通道的通道号。
取值范围: [0, VO_MAX_CHN_NUM)。
输入
s32VoFramerate 视频通道显示帧率。 输入
【返回值】
返回值 描述
0 成功。
非 0 失败,其值为错误码。

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

Markdown 语法

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

Markdown 语法

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

举报类型

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

详细说明

易百纳技术社区