go语言调用硬解码视频 golang解释器

如何用go语言抓取网络摄像头数据理论上是不行的,要想实时就必须连续不断传输的视频信号,而你的软件是播放视频文件的,文件的话必须有头尾,如果做成文件格式再播放,那就不叫实时监控了 。
完美解码硬解DXVA设置一、解码方案设置步骤:1.退出完美解码播放器 , 然后启动完美解码设置中心 。2.在“解码切换”标签中可设置解码方案:单击“解码模式”对应框的三角形下拉按钮,可以看到迪奥大哥预设的几种方案,选择一个,选好后点“确定” 。3.如果你要更改方案,请先放开“自动模式”的勾,然后点相应的三角形下拉按钮,选择你需要的分离器、解码器(解码器后面括号中的“DXVA”是“硬件加速”的意思,即开启硬解) , 选好后点“确定” 。二、推荐方案(A卡):为了找到一套能够通杀各种格式的方案,阿拉测试了多种格式的视频文件(TS、TP、M2TS、EVO、MPG、AVI、WMV、MKV、MOV、RMVB、RM……),觉得以下2套解码方案挺好(相关图片见附件1、2),大家可以试试!根据相关要求 , 阿拉的Windows Media Player已升级到11 。方案一:退出播放器 , 启动设置中心 , 在“解码模式”中选择“视频编码”→去掉“自动模式”的勾→主播放器改为“The KMPlayer”→把“MPEG2 TS/PS分离器”改为“Gabest”→把“音频解码器输出”第一框改为“FFDShow”,第二框改为“2.1立体声”→点击“VC-1视频解码器”对应的“配置”→把“WMV硬件加速”的勾打上,设为“禁用”→确定→确定 。方案二:退出播放器,启动设置中心 , 在“解码模式”中选择“影音播放HDTV(PowerDVD DXVA)”→去掉“自动模式”的勾→把“MPEG2 TS/PS分离器”改为“Gabest”→把“音频解码器输出”第一框改为“FFDShow”,第二框改为“2.1立体声”→应用→点击“VC-1视频解码器”对应的“配置”→把“WMV硬件加速”的勾打上 , 设为“禁用”→确定→确定 。——————阿拉用的是2.1音箱,因而设为2.1立体声!————————PS:1.以上两套方案播放EVO格式的文件,声音有点问题! ——测试文件:宁静号-MAININTRO.EVO(130M;1分零3秒;1920 x 1080) 。——症状:如果不拖进度的话,从33秒开始 , 声音异常;如果拖到后面的话 , 却又是正常的!——用方案“影音播放HDTV(Sonic HD DVD/EVO)”播放该文件,声音正常,但画面不够流畅! 2.如果要控制双语视频(如国粤双语)的声道,则要关闭极速模式,并且把上述方案中的“音频解码器”设为“Gabest” 。——关闭极速模式后 , 默认方案也可以控制双语视频的声道 。但是,修改解码方案后再切换为默认方案也不能正常控制了(进行“解码器修复”可以恢复正常) 。三、恢复设置到初始状态: 1.如果你不小心搞乱了设置,或者点击了KMPlayer中的“初始化全部配置”,那么可能会导致播放某些高清文件时,下方出现一白条;或者出现其它情况 。你可以按以下步骤进行恢复: 退出播放器→启动完美解码设置中心→常规设置→点击“The Kmplayer”中的“恢复默认设置”→确定(如果问题依然,可以在设置中心的“其它功能”中单击“解码器修复”,看到出现“已完成”的提示即可) 。四、关于硬解: 1.开启硬解,可以降低CPU占用率等 。关于硬解及相关问题,可参看相关帖子:(1)完美解码常见问题解答";extra=page=1 " (2)四大编码全攻克!高清硬解码设置宝典";extra=page=1 " (3)从菜鸟出发! 征服高清详细评测全攻略";extra=page=1 " 2.如果你的机器配置足够好的话,根本不需要开启硬解!软解的画面质量比硬解要好的!3.使用DXVA时,不能使用Vobsub , 否则硬解失效 。4.在覆盖合成器下只有VC-1可以调用硬解码,h.264和mpeg2一般无法在覆盖合成器下调用硬解码 。五、关于截图等:1.截图、截取音频或视频的操作:用完美解码(已设置主播放器为KMPlayer)播放视频→暂停(按空格键或双击)→右键→截取控制→选择你需要的操作……(如果截图时提示“非视频渲染模式或极速模式中未使用内置滤镜都无法截取”,请进行下面第2点所说的设置)!——暂停后,也可按F键显示下一?。?按Shift F显示上一帧 , 看到需要的图片后,再进行截?。? 2.如果你要使用KMPlayer的截图、画面旋转、调节亮度、左右声道的控制等功能,则要关闭极速模式(开启极速模式可以大大降低CPU占用率;要实现硬解的话,也要开启极速模式) 。设置如下:(1)退出播放器→启动完美解码设置中心→常规设置→去掉“The Kmplayer”中“超级速度模式”的勾→确定 。(2)如果视频分辨率较高,则关闭极速模式后 , 还要启动完美解码(已设置主播放器为KMPlayer)→右键,选“参数选项ㄧ其它”→参数选项→视频处理→在右边框中,把“视频处理滤镜”标签中的“使用条件”改为“总是使用(强烈推荐)”→点右下角的“关闭”(如果正在播放视频,则关闭播放器后,设置才生效) 。3.如果想将播放器及其中的视频画面一起截图的话,你可以使用以下两种设置方法:(1)设置方法1:将“视频渲染器”设为VMR9模式(VMR9无渲染、VMR9窗口化……)!具体操作如下:关闭播放器→启动完美解码设置中心→在“解码切换”标签下的“视频渲染器”对应框中单击三角形下拉按钮 , 选择相应模式→点击“确定” 。(2)设置方法2:禁用硬件加速!具体操作如下:在桌面空白处,单击鼠标右键→属性→设置→高级→疑难解答→把“硬件加速”设为“无”→确定→确定 。———截图操作:设置完成后,播放视频时,按一下键盘上的“Print Screen SysRq”即可将整个屏幕截图,然后可以在QQ、画图、Word文档等程序中粘贴出来!六、导出导入设置: 完美解码设置中心的“其他功能”中有导出设置和导入设置的功能,方便了我们保存并导入自己设置的解码方案 。具体操作如下:1.导出设置:在设置中心的“其他功能”中单击“导出设置”→选择保存位置→输入文件名→保存 。2.导入设置:在设置中心的“其他功能”中单击“导入设置”→找到之前导出的设置文件,双击它→单击设置中心右下角的“应用”→看到框中出现一些提示文字,最下面一行是“已完成”,此时单击“确定”即可 。PS:KMP(KMPlayer)中有些设置(例如“不自动保存默认播放名单”、“当播放开始时在图像左下角显示文件名称”、选用的皮肤方案等等)是完美解码设置中心没有的,如果你想保存那些设置,可以使用KMP中的“备份配置”功能生成注册表文件 。具体操作如下:(1).备份KMP配置方案:启动KMP→按键盘上的F2键进入“参数选项”→单击最下方的“备份配置(S)”→选择保存位置→输入文件名→保存 。(2).使用已保存的配置文件:KMP中保存的配置文件是注册表文件(*.reg),使用时,双击它然后选择“是(Y)”即可 。七、其他相关说明:1.有些5.1声道的影片在2.1音箱的电脑上播放时,声音不正常,所以请在“音频解码器输出”的第二个框中设置你电脑相应的音箱类型(2.1立体声对应的就是通常的2.1低音炮,即2个小音箱 1个中心低音炮的那种) 。2.分离器、解码器等等,大家有空可以不断更改尝试 , 看哪个方案最适合你的电脑 。3.如果你不想KMPlayer保存播放历史(旧版本默认保存最后一个文件的记录,新版本(PureCodec Build 20090126 )默认不保存) , 可以设置如下: 启动完美解码(已设置主播放器为KMPlayer)→右键,选“参数选项ㄧ其它”→参数选项→点一下左边的“基本设置”,在展出来的下级菜单中选“播放顺序ㄧ列表设置”→在右边点一下“播放列表”标签→把“不自动保存“默认播放名单””的勾打上→点右下角的“关闭” 。4.安装 Realplayer11 以后,用 Kmplayer、PotPlayer 播放 RM 或 RMVB 格式的视频文件会不正常(没有声音 , 甚至图像也无法显示),这是解码冲突的问题 。解决方法如下:方法1:把RealPlayer10 的 cook.dll文件(版本号为10.0.0.2313或10.0.0.3400等),放到“C:\Program Files\Common Files\Real\Codecs ”中 , 替换掉RealPlayer11的cook.dll(版本号为10.0.1.332等) 即可!方法2:启动KMPlayer→按一下快捷键F2,进入KMPlayer的参数选项中(当然,也可用鼠标操作进入)→单击一下“媒体ㄧ解码器ㄧ滤镜”→在右边的“DirecShow”中把“MMST://”后面的“.RMVB.RM”删除→关闭 。5.如果你没有安装Realplayer11,但是也发现有的RM文件无法播放(阿拉遇到的是RM音频文件),可以用以下两种方法解决: 方法1:关闭播放器→启动完美解码设置中心→把主播放器换成Media Player Classic→点“常规设置”标签→把“RealMedia渲染”改为“RealMedia”→确定 。方法2:启动完美解码(已设置主播放器为KMPlayer)→按一下快捷键F2,进入KMPlayer的参数选项中(当然,也可用鼠标操作进入)→单击一下“媒体ㄧ解码器ㄧ滤镜”→在右边的“DirecShow”中把“MMST://”后面的“.RM”删除→关闭 。6.快播(即QVOD,也叫Q播)会导致KMPlayer、MPC(Media Player Classic)等播放高清文件不正常!进行“解码器修复”可以恢复正常状态,但是不能彻底解决问题——每次用完快播后,都要先进行“解码器修复”!否则,完美解码(或者其他同类作品)就不能正常播放高清文件了! ——“解码器修复”具体操作如下: 关闭播放器→启动完美解码设置中心→点“其他功能”标签→单击“解码器修复”→在弹出的对话框中,点“是”→看到出现“已完成”的提示后,关闭设置中心 。——注意:完成“解码器修复”后,解码方案就变成默认的方案或者不完全的默认方案了 。PS:PotPlayer不会受快播的影响,而且默认设置就可以流畅播放高清文件了(播m2ts文件要更改一下AVC1解码器)!PotPlayer的独到之处,可见一斑!7.开启极速模式时,影片的音量通常会小些 。
对视频帧的实时硬解码,解压要对数据进行硬解码,要用到VideoToolboox
一个decompression session支持解压一系列go语言调用硬解码视频的视频帧.
以下是解压的步骤:
当go语言调用硬解码视频你要解压H264格式的视频,go语言调用硬解码视频你要用SPS,PPS数据来创建一个 CMVideoFormatDescription ,得到它的格式信息
示例
【go语言调用硬解码视频 golang解释器】 调用 VTDecompressionSessionCreate(_:_:_:_:_:_:)
示例:
Decompression Properties
调用 VTSessionSetProperty(_ : _ : _:)或 VTSessionSetProperties(_ :_ :)
示例
示例
使用 VTDecompressionSessionDecodeFrame(_ :_ :_ :_ :_ :)
示例
如何调用vpu硬解码 31883188可以解码h.264的 。利用vpu_server这个专门解码的 。2 视频编解码,进入到 vpu_api_demo 目录,直接 make 能生成 testvpu 这个执行文件 2.1 通过如下命令硬解码 h264.bin 文件,输出到 ym.yuv 文件, 其为nv12的yuv数据
iOS 视频硬解码公司的项目里有拉取H.264视频流进行解码播放的功能,本来是采用FFMpeg多媒体库 , 用CPU做视频的编码和解码,就是大家常说的软编软解 。但是软解存在太占用CPU,解码效率低等缺点,所以我们一合计干脆用硬解码代替原来的方案 。当然硬件解码使用的当然就是苹果大名鼎鼎的 Video ToolBox 框架,众所周知,苹果在iOS8开始才可以在iOS系统中调用该框架中的 API。
图2.1展示的是通过 AVSampleBufferDisplaylayer 播放网络上获取的H.264码流 。
但并不是说 AVSampleBufferDisplaylayer 能直接播放H.264码流,需要将H.264码流包装成 SampleBuffer 传给给 AVSampleBufferDisplaylayer 解码播放 。
再来看一下H.264码流的构成,H.264码流由一系列的 NAL 单元组成 。
NAL 单元一般包含:
所以如果要将H.264解码播放就需要将H.264码流包装成CMSampleBuffer 。由图1.1可得 CMSampleBuffer = CMTimeCMVideoFormatDescCMBlockBuffer。
解码步骤:
1.从网络获取的码流中获取SPS和PPS生成CMVideoFormatDesc 。
(1)H.264NALU 单元的 Start Code是"0x 00 00 01" 或"0x 00 01",按照 Start Code 定位NALU 。
(2)通过类型信息找到 SPS 和 PPS 并提?。悸牒蟮谝桓?byte 的第5位 , 7代表 SPS,8代表 PPS。
(3)使用CMVideoFormatDescriptionCreateFromH264ParameterSets函数来构建CMVideoFormatDescription 。
2.提取视频图像数据生成CMBlockBuffer 。
(1)按照 Start Code 定位NALU 。
(2)CMBlockBuffer数据需要的头部码为4个字节的长度 , 为:0x 00 80 00,所以需要将H.264的header给替换掉 。
(3) CMBlockBufferCreateWithMemoryBlock 接口构造 CMBlockBufferRef。
3.根据自己的需要设置CMTime
我的项目中的拉取的实时流需要实时播放,不需要设置时间间隔 , 所以不用设置CMTime 。
4.根据上述得到 CMVideoFormatDescriptionRef 、 CMBlockBufferRef 和可选的时间信息,使用 CMSampleBufferCreate 接口得到 CMSampleBuffer 数据这个待解码的原始的数据 。
5.用 AVSampleBufferDisplayLayer 处理得到 sampleBuffer 来显示图像 。
至此成功用 Video Toolbox 硬件解码H.264码流,并在设备上播放视频 。
可是 , 如果我们要拿到每一帧图像进行处理呢 , 那该怎么得到?
那么我们还需要用 VTDecompressionSession 解码成 CVPixelBuffer ,通过 UIImageView 或者 OpenGL ES 上显示 。
(1)创建 VTDecompressionSession,需要以下参数:
(2)调用 VTDecompresSessionDecodeFrame 接口进行解码 。
(3)VTDecompressionSessionOutputCallback回调函数中可以得到解码后的结果 CVPixelBuffer,可以将 CVPixelBuffer 转换成UIImage图像显示在ImageView上或者用 OpenGL ES 渲染图像 。
关于go语言调用硬解码视频和golang解释器的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息 , 记得收藏关注本站 。

    推荐阅读