草庐IT

Qt音视频开发27-ffmpeg视频旋转显示

一、前言用手机或者平板拍摄的视频文件,很可能是旋转的,比如分辨率是1280x720,确是垂直的,相当于分辨率变成了720x1280,如果不做旋转处理的话,那脑袋必须歪着看才行,这样看起来太难受,所以一定要想办法解析到视频的旋转角度,然后根据这个角度重新绘制。在窗体那边也需要调整对应的分辨率,一般都是宽度高度互换。其实早期的很多播放器比如vlc2版本的播放器也是不支持旋转的,从vlc3开始内置会自动给旋转,估计这种场景越来越多,毕竟现在智能手机大行其道,用手机拍摄的视频很多都是竖屏的。在ffmpeg中旋转frame帧数据,有多种方式,方式一是直接通过运算逐行取出数据,重新组织旋转后的视频帧数据;

ffmpeg推流性能优化

ffmpeg推流优化性能在使用ffmpeg推流时,可以通过设置缓存大小来调整推流的性能。可以使用以下选项:-max_delay:设置最大延迟时间。如果延迟超过这个时间,将跳过缓冲并立即发送数据。默认值为10000毫秒。-bufsize:设置缓冲区大小,以比特为单位。默认值为2000000比特。-rtbufsize:设置实时缓冲区大小,以比特为单位。默认值为2000000比特。示例:性能优化ffmpeg-iinput.mp4-codec:vcopy-codec:aaac-fflv-max_delay5000-bufsize500000-rtbufsize500000rtmp://server/l

音视频大合集最终篇;学废了

前言加企鹅群:1079654574解锁 《音视频八大板块资料》音视频大合集,从初中高到面试应有尽有;让学习更贴近未来实战。已形成PDF版八个模块内容如下:1.音视频基础2.FFmpeg实战3.流媒体客户端4.流媒体服务器5.WebRTC项目实战6.AndroidNDK开发7.项目实践8.零声服务整理不易,关注一下吧。开始进入正题,ღ(´・ᴗ・`)🤔一丶音视频面试题1.为什么巨大的原始视频可以编码成很小的视频呢?这其中的技术是什么呢?参考答案1)空间冗余:图像相邻像素之间有较强的相关性2)时间冗余:视频序列的相邻图像之间内容相似3)编码冗余:不同像素值出现的概率不同4)视觉冗余:人的视觉系统对某

音视频大合集最终篇;学废了

前言加企鹅群:1079654574解锁 《音视频八大板块资料》音视频大合集,从初中高到面试应有尽有;让学习更贴近未来实战。已形成PDF版八个模块内容如下:1.音视频基础2.FFmpeg实战3.流媒体客户端4.流媒体服务器5.WebRTC项目实战6.AndroidNDK开发7.项目实践8.零声服务整理不易,关注一下吧。开始进入正题,ღ(´・ᴗ・`)🤔一丶音视频面试题1.为什么巨大的原始视频可以编码成很小的视频呢?这其中的技术是什么呢?参考答案1)空间冗余:图像相邻像素之间有较强的相关性2)时间冗余:视频序列的相邻图像之间内容相似3)编码冗余:不同像素值出现的概率不同4)视觉冗余:人的视觉系统对某

音视频开发---ffmpeg rtmp推流

1、推流介绍推流是将输入视频数据推送至流媒体服务器,输入视频数据可以是本地视频文件(avi,mp4,flv......),也可以是内存视频数据,或者摄像头等系统设备,也可以是网络流URL。本篇介绍将本地视频文件通过FFmpeg编程以RTMP直播流的形式推送至RTMP流媒体服务器的方法。推流的网络拓扑结构如下:RTMP流媒体服务器:采用nginx+rtmpmodule实现RTMP拉流器:RTMP推流器:采用ffmpeg实现需要注意的是,RTMP采用的封装格式是FLV。在指定输出流媒体格式的时候需要指定其封装格式为“flv”。同理,其他流媒体协议也需要指定其封装格式。例如采用UDP推送流媒体的时候

使用flv.js + websokect播放rtsp格式视频流

1.问题背景  在最近的项目中,涉及到海康接入的视频播放的问题,海康这边获取到的视频流是rtsp格式,web端目前没有直接可以播放的组件,于是最开始是后端处理了视频流,返回hls格式的m3u8地址,这样用videojs插件就可以播放了,但是问题就是处理了的m3u8地址播放效果非常差,第一次加载时间较长,且播放过程中很卡,尤其是项目的界面做的是视频监控墙,不止一个视频,导致没办法看了。想着最好的方式还是直接播放rtsp地址,不经过转码。于是问题回到了如何播放rtsp.2.方案的筛选  播放rtsp格式的视频流,网上有很多方式,除了上述的转m3u8,还有转rtmp的,或者使用WebRTC、stre

使用flv.js + websokect播放rtsp格式视频流

1.问题背景  在最近的项目中,涉及到海康接入的视频播放的问题,海康这边获取到的视频流是rtsp格式,web端目前没有直接可以播放的组件,于是最开始是后端处理了视频流,返回hls格式的m3u8地址,这样用videojs插件就可以播放了,但是问题就是处理了的m3u8地址播放效果非常差,第一次加载时间较长,且播放过程中很卡,尤其是项目的界面做的是视频监控墙,不止一个视频,导致没办法看了。想着最好的方式还是直接播放rtsp地址,不经过转码。于是问题回到了如何播放rtsp.2.方案的筛选  播放rtsp格式的视频流,网上有很多方式,除了上述的转m3u8,还有转rtmp的,或者使用WebRTC、stre

如何复用ijkplayer库实现ffmpeg的功能

ijkplayer库介绍现在ijkplayer播放器应用的非常广泛,很多播放器基本上都是基于ijkplayer二次迭代开发的,众所周知,ijkplayer是基于ffplay的,所以要使用ijkplayer,就必须使用三个so库。jeffmony@JeffMonydeMacBook-Proarm64-v8a%ls-hltotal21240-rwxr-xr-x1jeffmonystaff 9.6M43000:25libijkffmpeg.so-rwxr-xr-x1jeffmonystaff 348K43000:25libijkplayer.so-rwxr-xr-x1jeffmonystaff 47

如何复用ijkplayer库实现ffmpeg的功能

ijkplayer库介绍现在ijkplayer播放器应用的非常广泛,很多播放器基本上都是基于ijkplayer二次迭代开发的,众所周知,ijkplayer是基于ffplay的,所以要使用ijkplayer,就必须使用三个so库。jeffmony@JeffMonydeMacBook-Proarm64-v8a%ls-hltotal21240-rwxr-xr-x1jeffmonystaff 9.6M43000:25libijkffmpeg.so-rwxr-xr-x1jeffmonystaff 348K43000:25libijkplayer.so-rwxr-xr-x1jeffmonystaff 47

FFMPEG 播放 RTSP视频流

功能简介:使用QT+FFMPEG实现了RTSP视频流播放的基础操作,点击按钮后,将拉取指定地址的RTSP流,并在QT界面中通过Label显示开发环境:系统环境:UbuntuQT:5.12.12FFmpeg:4.4(当前最新)完整工程:https://github.com/harry19902002/ffmpeg-first-demo参考代码:FFMPEG官方示例:FFmpeg:decode_video.c详细介绍:(一)添加库文件新建一个QT工程,在pro添加lib目录和include目录的路径。##ffmpegFFMPEG_LIB=/usr/local/ffmpeg/libFFMPEG_IN