一种视频解码方法及装置与流程

文档序号:25653172发布日期:2021-06-29 21:11阅读:111来源:国知局
一种视频解码方法及装置与流程

1.本发明涉及图像处理技术领域,尤其涉及一种视频解码方法及装置。


背景技术:

2.视频的播放主要分为三个步骤:解封装,视频解码,视频显示。解封装就是将视频里面的视频流与音频流按照编码协议解析出来,视频解码就是将视频流解析为视频分辨率大小的图片,一般为yuv的逐行或隔行的数据,视频显示就是将解析好的图片显示在屏幕。
3.视频解码中可分为软解码与硬解码。硬解码能够比较流畅的播放,但很多格式的文件都无法播放,或者拖动播放会有花屏的现象;软解码播放时,大部分的文件都可以正常播放,拖动播放没有花屏的现象,但较大分辨率的文件会有不同程度的卡顿现象。
4.因此,现有技术有待进一步改进。


技术实现要素:

5.本发明提供一种视频解码方法及装置,旨在解决现有技术中的缺陷,实现系统解码性能的提高。
6.为达到上述目的,本发明所采取的技术方案为:
7.本发明一方面提供一种视频解码方法,包括:
8.步骤1、设置默认的软解码器;
9.步骤2、读取当前待解码的视频流,识别所述视频流的编码格式和分辨率;
10.步骤3、判断硬解码器是否支持所述视频编码格式,是则进入下一步,否则进入步骤5;
11.步骤4、判断所述分辨率是否超过预设分辨率,是则使用硬解码器解码,否则进入下一步;
12.步骤5、使用所述软解码器解码。
13.进一步地,所述使用硬解码器解码包括:
14.步骤a1、读取视频文件的当前行视频编码数据;
15.步骤a2、检测像素变化点,所述像素变化点为像素值发生改变的地址值;
16.步骤a3、根据所述地址值确定解码长度;
17.步骤a4、判断当前行的所有的所述像素变化点是否已检测完毕,是则进入下一步,否则返回步骤a2;
18.步骤a5、根据所述解码长度和对应的像素值对当前行数据进行解码,生成该行图像数据输出;
19.步骤a6、读取下一行视频编码数据,返回步骤a2。
20.进一步地,所述步骤5包括:
21.步骤b1、所述软解码器以原始分辨率进行解码,当所述软解码器的负荷超过预设负荷后进入下一步;
22.步骤b2、所述软解码器以第二分辨率进行解码。
23.具体地,所述第二分辨率小于原始分辨率。
24.具体地,所述步骤b2包括:
25.步骤b201、设置默认解码单元大小;
26.步骤b202、读取默认解码单元大小,并以所述默认解码单元大小进行解码;
27.步骤b203、判断所述软解码器是否在预定时间内完成当前视频帧的解码;
28.步骤b204,若软解码器能在预定时间内完成当前视频帧的解码,则将默认解码单元大小设置当前解码单元大小,否则将所述默认解码单元的一半设置当前解码单元大小;
29.步骤b205,使用当前解码单元大小执行解码处理,并返回步骤b203。
30.具体地,所述步骤1包括:设置ffmpeg为默认的软解码器。
31.本发明另一方面提供一种视频解码装置,包括:
32.依次连接的读取解析模块、格式判断模块、分辨率判断模块、硬解码器,与所述格式判断模块、分辨率判断模块连接的软解码器;
33.所述读取解析模块,用于读取当前待解码的视频流,识别当前视频流的编码格式和分辨率;
34.所述格式判断模块,用于判断硬解码器是否支持当前视频编码格式;
35.所述分辨率判断模块,用于判断当前分辨率是否超过预设分辨率;
36.所述硬解码器,用于对当前视频流进行硬解码;
37.所述软解码器,用于对当前视频流进行软解码。
38.具体地,所述硬解码器包括:
39.依次连接的视频读取单元、像素点检测单元、解码长度单元、硬件解码单元;
40.所述视频读取单元,用于读取视频文件的当前行视频编码数据;
41.所述像素点检测单元,用于检测像素变化点;
42.所述解码长度单元,用于根据像素变化点确定解码长度;
43.所述硬件解码单元,用于根据解码长度和对应的像素值对当前行数据进行解码,生成图像数据输出。
44.具体地,所述软解码器包括:
45.第一软件解码单元、第二软件解码单元、cpu负荷监测单元、解码切换单元;所述cpu负荷监测单元与所述第一软件解码单元、第二软件解码单元、解码切换单元连接,所述解码切换单元还与所述所述第一软件解码单元、第二软件解码单元连接;
46.所述第一软件解码单元,用于以原始分辨率进行解码;
47.所述第二软件解码单元,用于以第二分辨率进行解码;
48.所述cpu负荷监测单元,用于监测软解码器的负荷是否超过预设负荷;
49.所述解码切换单元,用于将所述软解码器的解码单元在所述第一软件解码单元和第二软件解码单元之间进行切换。
50.具体地,所述第二软件解码单元包括:
51.依次连接的默认解码单元设置子单元、解码单元配置子单元、预解码子单元、解码时间获取子单元,以及与所述解码时间获取子单元连接的解码结果判断子单元;
52.所述默认解码单元设置子单元,用于设置默认的解码单元大小;
53.所述解码单元配置子单元,用于读取默认的解码单元大小配置当前解码单元大小;
54.所述预解码子单元,用于以当前解码单元大小进行解码;
55.所述解码时间获取子单元,用于获取解码完成时间;
56.所述解码结果判断子单元,用于判断软解码器是否在预定时间内完成当前视频帧的解码。
57.具体地,所述软解码器为ffmpeg。
58.本发明的有益效果在于:本发明通过设置默认的软解码器,识别及判断视频流的编码格式和分辨率,针对不同的情形,使用硬解码器或软解码器解码,提高了系统的解码性能。
附图说明
59.图1是本发明的视频解码方法的流程示意图;
60.图2是本发明的视频解码装置的结构示意图;
61.图3是本发明的硬解码器的结构示意图;
62.图4是本发明的软解码器的结构示意图;
63.图5是本发明的第二软件解码单元的结构示意图。
具体实施方式
64.下面结合附图具体阐明本发明的实施方式,附图仅供参考和说明使用,不构成对本发明专利保护范围的限制。
65.实施例1
66.如图1所示,本实施例提供一种视频解码方法,包括:
67.步骤1、设置默认的软解码器。
68.具体地,设置ffmpeg为默认的软解码器。
69.步骤2、读取当前待解码的视频流,识别所述视频流的编码格式和分辨率。
70.具体地,通过读取当前视频流的avstream识别编码格式和分辨率。
71.avstream是存储音视频流信息的结构体。
72.步骤3、判断硬解码器是否支持所述视频编码格式,是则进入下一步,否则进入步骤5。
73.步骤4、判断所述分辨率是否超过预设分辨率,是则使用硬解码器解码,否则进入下一步。
74.在本实施例中,所述预设分辨率1280
×
720,当然也可以根据系统的软解码器的解码能力进行设置。
75.步骤5、使用所述软解码器解码。
76.实施例2
77.与实施例1不同的是,在本实施例中,所述使用硬解码器解码包括:
78.步骤a1、读取视频文件的当前行视频编码数据。
79.步骤a2、检测像素变化点,所述像素变化点为像素值发生改变的地址值。
80.步骤a3、根据所述地址值确定解码长度。
81.在本实施例中,所述解码长度为当前像素变化点与前一个像素变化点的差值。
82.步骤a4、判断当前行的所有的所述像素变化点是否已检测完毕,是则进入下一步,否则返回步骤a2。
83.步骤a5、根据所述解码长度和对应的像素值对当前行数据进行解码,生成该行图像数据输出。
84.步骤a6、读取下一行视频编码数据,返回步骤a2。
85.实施例3
86.与实施例2不同的是,在本实施例中,所述步骤5包括:
87.步骤b1、所述软解码器以原始分辨率进行解码,当所述软解码器的负荷超过预设负荷后进入下一步。
88.在具体实施时,所述预设负荷可以根据系统的实际需要进行设置。
89.步骤b2、所述软解码器以第二分辨率进行解码。
90.在本实施例中,所述第二分辨率小于原始分辨率,例如720*480。
91.在本实施例中,所述步骤b2包括:
92.步骤b201、设置默认解码单元大小。
93.步骤b202、读取默认解码单元大小,并以所述默认解码单元大小进行解码。
94.步骤b203、判断所述软解码器是否在预定时间内完成当前视频帧的解码。
95.例如,计算输入当前视频帧的时间与必须完成当前视频帧解码的时间差,如果时间差大于预定时间,则判断为不能在预定时间内完成解码。
96.步骤b204,若软解码器能在预定时间内完成当前视频帧的解码,则将默认解码单元大小设置当前解码单元大小,否则将所述默认解码单元的一半设置当前解码单元大小。
97.步骤b205,使用当前解码单元大小执行解码处理,并返回步骤b203。
98.通过设置较小的解码单元,可以减少软解码器的处理量,进一步提高流畅度。
99.实施例4
100.如图2所示,本实施例提供一种视频解码装置,包括:
101.依次连接的读取解析模块、格式判断模块、分辨率判断模块、硬解码器,与所述格式判断模块、分辨率判断模块连接的软解码器;
102.所述读取解析模块,用于读取当前待解码的视频流,识别当前视频流的编码格式和分辨率;
103.所述格式判断模块,用于判断硬解码器是否支持当前视频编码格式;
104.所述分辨率判断模块,用于判断当前分辨率是否超过预设分辨率;
105.所述硬解码器,用于对当前视频流进行硬解码;
106.所述软解码器,用于对当前视频流进行软解码。
107.在本实施例中,所述软解码器为ffmpeg。
108.本发明的视频解码装置工作过程为:
109.首先,所述读取解析模块读取当前待解码的视频流,识别所述视频流的编码格式和分辨率;
110.接着,所述格式判断硬解码器是否支持当前视频编码格式,是则通过所述分辨率
判断模块判断当前分辨率是否超过预设分辨率,否则通知软解码器对当前视频流进行软解码;当分辨率判断模块判断当前分辨率没有超过预设分辨率时,通知软解码器对当前视频流进行软解码,否则通知硬解码器对当前视频流进行硬解码。
111.实施例5
112.如图3所示,与实施例4不同的是,在本实施例中,所述硬解码器包括:
113.依次连接的视频读取单元、像素点检测单元、解码长度单元、硬件解码单元;
114.所述视频读取单元,用于读取视频文件的当前行视频编码数据;
115.所述像素点检测单元,用于检测像素变化点;
116.所述解码长度单元,用于根据像素变化点确定解码长度;
117.所述硬件解码单元,用于根据解码长度和对应的像素值对当前行数据进行解码,生成图像数据输出。
118.所述解码器的工作过程为:
119.首先,所述视频读取单元读取视频文件的当前行视频编码数据;
120.接着,像素点检测单元检测当前行视频的所有像素变化点,所述像素变化点为像素值发生改变的地址值,所述解码长度单元根据所述像素变化点确定解码长度。
121.最后,所述硬件解码单元步骤根据所述解码长度和对应的像素值对当前行数据进行解码,生成该行图像数据输出。
122.实施例6
123.如图4所示,与实施例4不同的是,在本实施例中,所述软解码器包括:
124.第一软件解码单元、第二软件解码单元、cpu负荷监测单元、解码切换单元;所述cpu负荷监测单元与所述第一软件解码单元、第二软件解码单元、解码切换单元连接,所述解码切换单元还与所述所述第一软件解码单元、第二软件解码单元连接;
125.所述第一软件解码单元,用于以原始分辨率进行解码;
126.所述第二软件解码单元,用于以第二分辨率进行解码;
127.所述cpu负荷监测单元,用于监测软解码器的负荷是否超过预设负荷;
128.所述解码切换单元,用于将所述软解码器的解码单元在所述第一软件解码单元和第二软件解码单元之间进行切换。
129.所述软解码器的工作过程为:
130.所述软解码器通过所述第一软件解码单元以原始分辨率进行解码,同时所述cpu负荷监测单元监测软解码器的负荷是否超过预设负荷,当所述软解码器的负荷超过预设负荷后,通知解码切换单元,将软解码器的解码单元切换到第二软件解码单元,以第二分辨率进行解码。
131.实施例7
132.如图5所示,与实施例6不同的是,在本实施例中,所述第二软件解码单元包括:
133.依次连接的默认解码单元设置子单元、解码单元配置子单元、预解码子单元、解码时间获取子单元,以及与所述解码时间获取子单元连接的解码结果判断子单元;
134.所述默认解码单元设置子单元,用于设置默认的解码单元大小;
135.所述解码单元配置子单元,用于读取默认的解码单元大小配置当前解码单元大小;
136.所述预解码子单元,用于以当前解码单元大小进行解码;
137.所述解码时间获取子单元,用于获取解码完成时间;
138.所述解码结果判断子单元,用于判断软解码器是否在预定时间内完成当前视频帧的解码。
139.所述第二软件解码单元的工作过程为:
140.首先,通过所述默认解码单元设置子单元设置默认解码单元大小;
141.接着,所述解码单元配置子单元读取默认解码单元大小配置当前解码单元大小并发送给所述预解码子单元,所述预解码子单元以所述默认解码单元大小进行解码。
142.所述解码时间获取子单元获取输入当前视频帧的时间和解码实际完成时间,并发送给所述解码结果判断子单元进行判断:若软解码器能在预定时间内完成当前视频帧的解码,则通知所述解码单元配置子单元将默认解码单元大小设置当前解码单元大小,否则通知所述解码单元配置子单元将所述默认解码单元的一半设置当前解码单元大小。
143.以上所揭露的仅为本发明的较佳实施例,不能以此来限定本发明的权利保护范围,因此依本发明申请专利范围所作的等同变化,仍属本发明所涵盖的范围。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1