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

H5多媒体能力

###事件 | 事件 | 描述 | | —- | —- | | abort | 在播放被终止时触发。| | canplay | 在媒体数据已经有足够的数据(至少播放数帧)可供播放时触发。| | canplaythrough |在媒体的readyState变为CAN_PLAY_THROUGH时触发,表明媒体可以在保持当前的下载速度的情况下不被中断地播放完毕。注意:手动设置currentTime会使得firefox触发一次canplaythrough事件,其他浏览器或许不会如此。| | durationchange |元信息已载入或已改变,表明媒体的长度发生了改变。例如,在媒体已被加载足够的长度从而得知总长度时会触发这个事件。| | emptied |媒体被清空(初始化)时触发。| | ended |播放结束时触发。| |error|在发生错误时触发。元素的error属性会包含更多信息| | loadeddata | 媒体的第一帧已经加载完毕| | loadedmetadata | 媒体的元数据已经加载完毕,现在所有的属性包含了它们应有的有效信息。| | loadstart | 在媒体开始加载时触发。| | mozaudioavailable |当音频数据缓存并交给音频层处理时| | pause |播放暂停时触发。| | play | 在媒体回放被暂停后再次开始时触发。即,在一次暂停事件后恢复媒体回放。| | playing |在媒体开始播放时触发(不论是初次播放、在暂停后恢复、或是在结束后重新开始)。| | progress | 告知媒体相关部分的下载进度时周期性地触发。有关媒体当前已下载总计的信息可以在元素的buffered属性中获取到。| | ratechange | 在回放速率变化时触发。| | seeked |在跳跃操作完成时触发。| | seeking |在跳跃操作开始时触发。| | stalled | 在尝试获取媒体数据,但数据不可用时触发。| | suspend |在媒体资源加载终止时触发,这可能是因为下载已完成或因为其他原因暂停。| | timeupdate |元素的currentTime属性表示的时间已经改变。| | volumechange |在音频音量改变时触发(既可以是volume属性改变,也可以是muted属性改变)| | waiting | 在一个待执行的操作(如回放)因等待另一个操作(如跳跃或下载)被延迟时触发。|

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

Qt音视频开发10-ffmpeg控制播放

很多人在用ffmpeg做视频流解码的时候,都会遇到一个问题,如何暂停,如果打开的是本地视频文件,暂停你只需要停止解码即可,但是视频流你会发现根本没用,一旦你停止了解码,下次重新解码的时候,居然还是以前的图片,他是从你最后暂停开始的地方重新解码的,这就懵逼了,为啥呢?我个人的理解是视频流这玩意,一旦你打开了,他就源源不断涌过来,你不处理,他就越来越多,你必须要读取他,从缓冲区拿走这些数据才行,所以如果想要暂停视频流,正确的做法是照常解码,只是不处理和绘制图片就行,说白了其实就是伪暂停,看起来是暂停了,其实后台还在不断的解码中。

02

Qt音视频开发13-mpv录像存储

用mpv来做录像存储,保存视频文件,从来都没有如此的方便,直接设置属性stream-record对应的文件路径即可,我的乖乖,一行代码,如此精简美丽大方,搞得我都不敢相信自己的眼睛,mpv除了支持主流的win、linux、mac三大操作系统外,还支持手机安卓IOS等,尤其是居然支持各种嵌入式linux,记得vlc想要在嵌入式linux上交叉编译成功的话,难于上青天,各种插件的依赖实在是太多了,直到你放弃为止,在X86的linux系统还是比较方便一些的,而在这块,mpv简直是完爆vlc啊,直接命令行都可以在嵌入式linux上安装呢,内置的ffmpeg超强解码器,使得你可以直接命令行调用mpv来播放音视频,这在一些嵌入式linux上Qt无法播放音视频的场景,非常有用,本人在全志H3板子上使用的就是mpv来播放音视频,默认GPU解码使得CPU占用极地。

01

Qt音视频开发25-ffmpeg音量设置

音视频的播放、关闭、暂停、继续这几个基本功能,绝大部分人都是信手拈来的搞定,关于音量调节还是稍微饶了下弯弯,最开始打算采用各个系统的api来处理,坐下来发现不大好,系统的支持不完美,比如有些api限定了win7,而xp确没有,而且这玩意控制的是全局的音量,不好,大部分时候需要控制的是当前播放的媒体的音量,估计vlc和mpv这类播放器在处理声音的时候也有过如此的场景分析,后面还测试过用ffmpeg的filter滤镜代码控制音频数据的分贝值,比较繁琐,代码量也大,不方便初学者学习,最后灵机一动去找QAudioOutput的函数看下有没有volume的函数,果真有卧槽,原来自带了,对Qt的爱慕之情又猛增了几十分,这里要注意的是QAudioOutput的音量值参数是0-1的范围double类型,而不是像vlc等播放器是0-100的值,所以需要自行转换。

03

Qt音视频开发26-ffmpeg播放器

用ffmpeg来实现自己的播放器,这是一直以来的一个目标,之前的难点卡在音视频同步以及如何播放声音这两点(尽管之前已经进行过不少的尝试和探索,但是问题还是挺多,比如音视频同步不完美,有些文件正常而有些文件不准,声音播放采用的sdl总感觉多了个依赖怪怪的,而且很多初学者也反映希望采用Qt自身的类来播放),近期正好把这两个难点一一攻破了,音视频同步采用的外部时钟同步,声音播放采用的Qt自带的QAudioOutput(并没有采用sdl,省去学习sdl开源库的成本),播放器的demo如期进行。有时候做项目,如果将各个难点击破以后,接下来都是顺理成章水到渠成的事情,速度会非常快,这也是我经常用的策略。

00

Qt音视频开发37-USB摄像头解码ffmpeg方案

用ffmpeg来处理USB摄像头,是前段时间研究视频监控ffmpeg内核的时候搞定的,既然ffmpeg这么牛逼的库可以解析各种音视频,我想处理个本地USB摄像头应该也不是什么难事,果真搜索也是一大堆,当然主要也是因为有个项目的应用需要用到ffmpeg来处理本地USB摄像头,需要拿到每张图片做智能分析,用Qt自带的camera类不大好处理,刚好将ffmpeg的处理流程都搞清楚了,索性直接用ffmpeg来直接处理好了,用上这么强大的解码库,理论上支持各种USB摄像头。本地USB摄像机不需要硬解码,视频流编码类型为 AV_CODEC_ID_RAWVIDEO 像素格式为 AV_PIX_FMT_YUYV422 不经过解码操作直接就可显示。

00
领券