首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用C#+FFmpeg+DirectX+dxva2硬件解码播放h264

如果你跟随这篇文章实现了播放器,那你会得到一个高效率,低cpu占用(单路720p视频解码播放占用1%左右cpu),且代码和引用精简(无其他托管和非托管的dll依赖,更无需安装任何插件,你的程序完全绿色运行);并且如果不可用...--enable-shared --enable-small --disable-all --disable-autodetect --enable-avcodec --enable-decoder=h264...官方的解码示例 它有一个get_format过程(详见215行和63行),我没有采用。...发现解码和播放过程中出现异常的解决办法 不支持 代码中已经做出了一部分兼容,因为baseline的判定必须解出sps/pps才能知道,因此这个错误可能会延迟爆出(不过不用担心,如果此时报错,ffmpeg...会自动降级为软) 窗体大小改变 基于DirectX中设备后台缓冲的宽高无法动态重设,我们只能在控件大小改变时推倒重来。

3K11
您找到你想要的搜索结果了吗?
是的
没有找到

Android FFmpeg系列04--FFmpeg调用MediaCodec进行解码

引言 在上篇文章中我们通过FFmpeg软并渲染了本地的一个mp4视频 Android FFmpeg系列03--视频解码与渲染 本文基于之前的Demo添加了FFmpeg使用MediaCodec来解码的方式...编码 所以使用上述两种调用MediaCodec方式的时候需要先通过 “h264_mp4toannexb” filter 将AVPacket进行转换一次,相关背景可以参考H264之AnnexB和AVCC...不过在本系列教程中使用的FFmepg5.0.1版本,bitstream filter的相关接口都已经被移除 所以接下来采用FFmpeg在3.1之后提供的直接调用MediaCodec的C接口来实现解码...解码器id相同,所以 // 软时 avcodec_find_decoder(id); // 使用mediacodec时 avcodec_find_decoder_by_name(“h264_mediacodec...AV_PIX_FMT_NV12 解码到Surface 解码流程和软的流程也是类似的,这里重点描述下差异的地方 也可以参考ffmpeg5.0.1/doc/examples/hw_decode.c

2.6K20

Linux【模拟实现C语言文件

---- 前言 在 C语言 的文件中,存在一个 FILE 结构体类型,其中包含了文件的诸多读写信息以及重要的文件描述符 fd,在此类型之上,诞生了 C语言 文件相关操作,如 fopen、fclose、...fwrite 等,这些函数本质上都是对系统调用的封装,因此我们可以根据系统调用和缓冲区相关知识,模拟实现出一个简单的 C语言 文件 本文重点 : 模拟实现 FILE 及 C语言 文件操作相关函数 注意...,实际要进行至少三次的拷贝:用户->用户级缓冲区->内核级缓冲区->文件,C语言 中众多文件操作都是在完成 用户->用户级缓冲区 的这一次拷贝动作,其他语言也是如此,最终都是通过系统调用将数据冲刷到磁盘...基础IO【软硬链接与动静态库】》 当然也可以将 myStdio 打包为静态库使用,比较简单,这里不再演示 ---- 11、源码 关于 myStdio 的源码可以点击下方链接进行获取 模拟实现C语言文件...---- 总结 以上就是本次关于 Linux【模拟实现C语言文件】的全部内容了,通过 系统调用+缓冲区,我们模拟实现了一个简单版的 myStdio 库,在模拟实现过程中势必会遇到很多问题,而这些问题都能帮助你更好的理解缓冲区的本质

18310

还是软?手机视频播放功耗揭秘

带着这个问题,我们选择了几款典型手机测试了H.264/AVC、H.264/AVC软、H.265/HEVC、H.265/HEVC软和AVS2软解码之间的功耗差异,发现一个重要现象:解码相对于软解码的功耗优势正在逐步丧失...4)进行一组测试 a) 启动功耗测试仪记录程序; b) 等待100s打开一组网络测试视频(5min); c) 视频播放结束等待100s; d) 导出功耗数据...5)重复4)测试五组数据(H.264,H.264软,H.265,H.265软和AVS2软)。...3)测试视频为网络,播放器因为有数据缓存(15MB),会提前下载结束,网络下载对功耗有一定影响。...4、测试结果分析 随着智能手机通用处理能力的提升,软硬功耗差距逐步缩小,对于720P视频,iPhone 8中H264软硬视频播放功耗仅相差14%,而AVS2软方案仅比H264方案功耗高8%。

4.4K20

【Android 直播软件开发:音视频解码篇】

整个过程如下: [图片上传失败…(image-8c5d9f-1568988187211)] 声道数 声道数,是指支持能不同发声(注意是不同声音)的音响的个数。...实际上,视频的编码和解码部分通常由框架(如Android/FFmpeg)完成,一般的开发者并不会接触到。...音频数据传输。这种格式的特征是它是一个有同步字的比特,解码可以在这个中任何位置开始。它的特征类似于mp3数据格式。 ADTS可以在任意帧解码,它每一帧都有头信息。...七、解码和软解码 和软的区别 我们在一些播放器中会看到,有解码和软解码两种播放形式给我们选择,但是我们大部分时候并不能感觉出他们的区别,对于普通用户来说,只要能播放就行了。...由于Android碎片化严重,虽然经过多年的发展,Android已经有了很大改观,但实际上各个厂家实现不同, 还是会有一些意想不到的坑。

1.5K51

【Android 音视频开发打怪升级:音视频解码篇】一、音视频基础知识

实际上,视频的编码和解码部分通常由框架(如Android/FFmpeg)完成,一般的开发者并不会接触到。...音频数据传输。这种格式的特征是它是一个有同步字的比特,解码可以在这个中任何位置开始。它的特征类似于mp3数据格式。 ADTS可以在任意帧解码,它每一帧都有头信息。...七、解码和软解码 和软的区别 我们在一些播放器中会看到,有解码和软解码两种播放形式给我们选择,但是我们大部分时候并不能感觉出他们的区别,对于普通用户来说,只要能播放就行了。...解码,指的是利用手机上专门的解码芯片来加速解码。通常解码的解码速度会快很多,但是由于解码由各个厂家实现,质量参差不齐,非常容易出现兼容性问题。...由于Android碎片化严重,虽然经过多年的发展,Android已经有了很大改观,但实际上各个厂家实现不同, 还是会有一些意想不到的坑。

1.4K20

Webrtc方案漫谈

Webrtc使用是RTP分装码,跟视频监控领域,IPTV领域,会议电视一样都是RTP承载媒体,只不过webrtc信令遵守ICE框架,走自定义信令,IPTV领域走RTSP信令,视频监控走GB28181...但webrtc 不能像传统IPTV和视频监控,会议电视一样可以直接抓包导流播放,因为webrtc的RTP做了以下工作: 1、码加密,走SRTP协议。...SRTP的密钥协商 2 、Webrtc优先级是VP9, VP8,H264,不支持h265                                                          ...视频的为h264的Red FEC编码,音频为opus 4、webrtc支持h265功能还有以下工作要做   1)加入265编码器和265解码器   2)加入h265的rtp封包和解包 5、webrtc...原生只支持双向通话,如果是单向通话,需要native 二次开发 6、webrtc 原生只软编码软,如果支持编码,还需要native 二次开发 7、webrtc 原生只支持P2P模式,不适合多人会议场景

1.5K20

Android平台如何实现外部编码后(H.264H.265)数据实时预览播放

0x00000001 vps 0x00000001 sps 0x00000001 pps调用逻辑下面我们看看逻辑调用,本文基于大牛直播SDK的RTSP|RTMP转RTMP推送demo做展示,先拉取到RTSP或RTMP的数据...,然后把拉取到的H.264/H.265数据回调上来,调用我们外部live source数据接口,投递到底层,实现实时数据的播放,如果外部数据,可以忽略拉这块,直接在数据回调的地方,调live source...,如果分辨率很大可以考虑特定机型解码,外部数据播放,依然可以设置铺满或按比例显示。...lib_player.SmartPlayerSetFastStartup(handle, 1);// 不要播放音频,静音就好lib_player.SmartPlayerSetMute(handle, 1);// 大分辨率可能需要...,小分辨率推荐软延时可能大些if (is_hardware_decoder) {lib_player.SetSmartPlayerVideoHevcHWDecoder(handle, 1);lib_player.SetSmartPlayerVideoHWDecoder

36930

Chrome源代码调试总结

如果release版本就会在 C:\Users\xxxxxx\AppData\Local\Chromium\User Data 目录下产生一个chrome_debug.log日志 如果是debug版本,...C)在源代码中打断点,即可段住指定进程,然后进程各种手段调试(看内存,看变量,看堆栈,单步等)。 二 、Chromium调试心得 对于音视频的解封,是ffmpeg完成。...对于音视频的解码, 音频解码时ffmpeg完成,视频软是ffmpeg完成,视频的是另外一个GPU进程来完成。...GPU解码相关代码在D:\chromium\src\media\gpu目录下,实现了windows上的h264,VP8,VP9,av1的,唯独对h265没有实现。...其他linux,mac,android都有相应的硬件解码实现。 以上只是近段时间调试chrome的心得,后面我们将探索h265的解码支持。

1.6K30

音视频技术开发周刊 59期

它的核心部分是用 C++ 实现的,同时还有其它语言的接口库。...编解码 还是软?手机视频播放功耗揭秘 “的功耗比软件低很多!”相信这是大多数人对解码和软解码的印象。然而具体低多少呢?却很少有人能够给出答案。...iOS视频开发(二):视频H264编码 GenoChen 视频数据的压缩也叫做编码,H264是一种视频编码格式,iOS 8.0及以上苹果开放了VideoToolbox框架来实现H264编码,开发者可以利用...MediaCodec解码FFmpeg AvPacket MediaCodec编码PCM2AAC 曾大稳丶 MediaCodec是Android(api>=16)提供的一个多媒体编码库,能实现音视频的编解码...一文解析OpenAI最新生成模型「Glow」 基于的生成模型在 2014 年已经被提出,但是一直被忽视。由 OpenAI 带来的 Glow 展示了生成模型强大的图像生成能力。

55530

Windows平台快速集成RTSPRTMP直播播放能力

8 检测是否支持解码 Windows平台解码,主要适用于性能偏弱的PC端,或者有多路播放诉求的场景,一般建议在软性能没问题的情况下,尽量软,具体处理如下,先检测系统是否支持,如果支持,再做设置...,这样的好处在于如果系统不支持,可以继续软播放,具体设置如下,在调用NT_SP_Open()之前,做检测,因为NT_SP_Open()每个句柄对应一个player实例,多个实例只需要做一次判断即可...: /* * 检查是否支持H264解码 * 如果支持的话返回NT_ERC_OK */ [DllImport(@"SmartPlayerSDK.dll... * is_hardware_decoder: 1:表示, 0:表示不用 * reserve: 保留参数, 当前传0就好 * 成功返回NT_ERC_OK...* is_hardware_decoder: 1:表示, 0:表示不用 * reserve: 保留参数, 当前传0就好 * 成功返回NT_ERC_OK

2K00

从QQ音乐开发,探讨如何利用腾讯云SDK在直播中加入视频动画

03 视频格式选型 对于插播动画的视频文件,如果考虑到如果需要支持流式播放,码率低,高画质,可以使用H264+VideoToolBox的方式。...2.ffmpeg 转h264解码问题 从iOS8开始,苹果开放了VideoToolBox,使得应用程序拥有了解码h264格式的能力。...具体的实现与分析,可以参考《iOS-H264 解码》这篇文章。因为设计同学给到的是一个mp4文件,所以首先需要先把mp4转为H264的裸码,再做解码。...其中,annexb就是h264裸码Elementary Stream的格式。...VTDecompressionSessionInvalidate:释放解码会话 但是对上面转换后的裸码解码,发现总是会遇到不出来数据的问题。

2.8K10

基于 ffmpeg 的跨平台播放器实现

但是移动端原生的播放器对各种直播的支持却不是很好。Android 原生的 MediaPlayer 不支持 flv、hls 直播,iOS 只支持标准的 HLS 。...文件读取模块(Source)的作用是为下级复用模块(Demuxer)以包的形式源源不断的提供数据,对于下一级的Demuxer来说,本地文件和网络数据是一样的。...复用模块(Demuxer):的作用是识别文件类型,媒体类型,分离出音频、视频、字幕原始数据,打上时戳信息后传给下级的视频频解码模块(Decoder)。...解码模块 从 iOS8 开始,开放了解码和编码 API,就是名为 VideoToolbox.framework 的 API,支持 h264 的硬件编解码,不过需要 iOS 8 及以上的版本才能使用...这套解码 API 是几个纯 C 函数,在任何 OC 或者 C++ 代码里都可以使用。首先要把 VideoToolbox.framework 添加到工程里,并且包含以下头文件。

6.7K11

2023年网页内嵌VLC直接播放RTSP视频,无需转码,支持,支持高版本Chome

而猿大师播放器是目前来说最成熟的、延迟最低的网页播放摄像头RTSP视频方案,基于猿大师中间件提供的内嵌网页播放的专利技术,底层调用VLC客户端的ActiveX控件可实现在Chrome等高版本浏览器中内嵌播放海康威视...、大华等摄像头的RTSP视频,可以以做到低延迟(300毫秒),不需要服务器转码转流,支持多路同时播放,支持H.264和H.265格式,支持2K、4K等高清视频,兼容主流浏览器的老版本和最新版本。...HLS、HTTP、TCP、UDP等流媒体协议,就可以直接播放;支持多种视频编码方式,不管是H.264还是H.265都可以同时支持播放,在一些采用WASM的无插件技术方案中,往往只支持H.265编码的视频

1.2K80

企鹅电竞直播关键技术大揭秘

软编/软编/ 软编码/软解码:使用CPU进行软编码/软解码,实现直接、简单,参数调整方便,升级易,但CPU负载重,性能较硬编码低,低码率下质量通常比编码要好一点。...编码/解码:使用非CPU进行解码/解码,如显卡GPU、专用的DSP、FPGA、ASIC芯片等,性能高,低码率下通常质量低于软编码器,但部分产品在GPU硬件平台移植了优秀的软编码算法(如X264)...(这部分内容在推流出类型章节详细描述) 播放端:用户在Android、IOS、PC、H5、游戏内置页面等渠道拉后,进行/软解码,目前企鹅电竞主流播放协议移动终端使用FLV、H5页面使用HLS两种播放协议...和PC端均采用腾讯云sdk的屏幕录制方案; 第四步:音视频编码:对采集的音频进行编或软编编码,目前支持H265和h264的编码标准; 第五步:推:通过腾讯云RTMP混合推(音频、视频); 第六步:...(KPL、QGC主办方)拿到; ②转码地址:对源流进行转码,比如把H264流转码为H265,把H254流转码为H264,也可以对源流的码率降码率,降分辨率处理,相当于是对源流的二次转码处理; ③DC

5K30

对话音视频牛哥:如何设计功能齐全的跨平台低延迟RTMP播放器

[H.264解码]Windows/Android/iOS支持H.264; [H.265]Windows/Android/iOS支持H.265; [H.264/H.265解码]Android...一般来说,Windows平台如果同时播放的实例不多或者分辨率不是太高的话,考虑到播放体验,建议优先考虑软解码,如果特定设备需要多路播放,也可以考虑,需要注意的是,如果调用解码,需要先做是否支持解码检测...解码如果支持的话返回NT_ERC_OK*/NT_UINT32(NT_API *IsSupportH265HardwareDecoder)();/**设置H264*is_hardware_decoder...: 1:表示, 0:表示不用*reserve: 保留参数, 当前传0就好*成功返回NT_ERC_OK*/NT_UINT32(NT_API *SetH264HardwareDecoder)(NT_HANDLE...handle, NT_INT32 is_hardware_decoder, NT_INT32 reserve);/**设置H265*is_hardware_decoder: 1:表示, 0:表示不用

41341

wpf下如何实现超低延迟的RTMP或RTSP播放

​技术背景我们在做Windows平台RTMP和RTSP播放模块对接的时候,有开发者需要在wpf下调用,如果要在wpf下使用,只需要参考C#的对接demo即可,唯一不同的是,视频数据显示的话,要么通过控件模式...[H.264解码]Windows/Android/iOS支持特定机型H.264; [H.265]Windows/Android/iOS支持特定机型H.265; [H.264/H.265解码...]Android支持设置Surface模式和普通模式解码; [RTSP模式设置]支持RTSP TCP/UDP模式设置; [RTSP TCP/UDP自动切换]支持RTSP TCP、UDP模式自动切换...; [渲染角度]支持0°,90°,180°和270°四个视频画面渲染角度设置; [渲染镜像]支持水平反转、垂直反转模式设置; [等比例缩放]支持图像等比例缩放绘制(Android设置surface模式模式不支持...总结Windows平台下如果需要wpf播放,如果需要更灵活,可以采用回调rgb数据的模式,上层直接绘制,只是低延迟的播放出来画面,采用上述控件模式亦可,除了wpf外,我们提供了C++和C#的接口和demo

12010
领券