ffmpeg

windows 10 webrtc 下载与编译以及遇到的问题

只愿长相守 提交于 2020-11-01 13:46:50
下载: 1、由于webrtc 源码在 墙外,所以需要科学上网(自行解决)。当然现在webrtc 有国内的镜像地址:https://webrtc.org.cn/mirror 内附编译下载教程自行查阅(下载后只包含M79 和最新的master 分支),由于个人项目需要M72 版本,所以需要科学上网。 2、需要在windows 上安装git(version 2.23.0.windows.1),然后配置环境变量,后续需要在 “命令提示符” 中使用 3、下载depot_tools git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git 下载depot-tools之后解压,把解压目录设置到环境变量里面 (PATH) 环境变量中添加下面两项 DEPOT_TOOLS_WIN_TOOL_WIN_TOOLCHAIN = 0 4、下载WebRTC源码 创建文件夹 $mkdir webrtc_wins $cd webrtc_src 获取源码 $fetch --nohooks webrtc $gclient sync 将分支定位到m72 $cd src $git checkout -b m72 refs/remotes/branch-heads/72 $gclient sync 编译 1、编译前需要配置一下环境

ffmpeg学习笔记-音频播放

主宰稳场 提交于 2020-10-28 12:37:24
前文讲到音频解码,将音频解码,并且输入到PCM文件,这里将音频通过AudioTrack直接输出 音频播放说明 在Android中自带的MediaPlayer也可以对音频播放,但其支持格式太少 使用ffmpeg可以支持更多格式 常用的音频播放有很多种方式,但播放PCM就只有OpenSL和AudioTrack 这里使用AudioTrack进行实现 在上文中已经实现了音频的解码,而在本文中,将对解码完成的音频进行播放 在解码完成以后不是将其转化为PCM存储,而是直接进行播放 为何要播放PCM格式音频,是因为喇叭最终输出的就是PCM数据 代码示例 PCMPlayer.java import android . media . AudioFormat ; import android . media . AudioManager ; import android . media . AudioTrack ; public class PCMPlayer { public native void sound ( String input ) ; public AudioTrack createAudioTrack ( int sampleRateInHz , int channelConfig ) { //44100HZ 16bits 立体声 //int sampleRateInHz =

Qt编写安防视频监控系统31-onvif设备搜索

左心房为你撑大大i 提交于 2020-10-26 08:10:02
一、前言 做视频监控系统,绕不过onvif这玩意,这玩意主要就是为了统一一个大概的标准,能够对各个厂家的监控设备进行常用的一些操作,比如搜索、获取信息、云台控制、事件订阅、抓拍图片等,如果没有这个规范,那么各个厂家都各自为政,需要用私有的sdk去处理,这样就很麻烦很惨了,几十个厂家就需要几十个sdk,对于程序员来说简直是灾难,想想就很恐怖的事情,哪个程序员不想多活几年! onvif设备搜索是最基本的功能,想要对设备进行进一步的处理,必须先搜索到设备,默认onvif搜索只能搜索到同一个网段的设备,要跨网段的话,需要手动指定设备的IP地址或者onvif地址进行搜索,这两者在封装的onvif类中都考虑到了,经历过各种复杂的现场情况的考验,也可以算是本系统的一个小特色吧。 onvif主要的功能 搜索设备,获取设备的信息比如厂家、型号等。 获取设备的多个配置文件信息profile。 获取对应配置文件的视频流地址rtsp,以及分辨率等参数。 云台控制,上下左右移动,焦距放大缩小,相对和绝对移动。 获取预置位信息,触发预置位。 订阅事件,接收设备的各种消息尤其是报警事件比如IO口的报警。 抓图,获取设备当前的图片。 获取、创建、删除用户信息。 获取和设备网络配置信息比如IP地址等。 获取和设置NTP时间同步。 获取和设置设备时间。 重启设备。 onvif的处理流程 绑定组播IP(239.255

Qt音视频开发24-ffmpeg音视频同步

我的未来我决定 提交于 2020-10-26 07:55:46
一、前言 用ffmpeg来做音视频同步,个人认为这个是ffmpeg基础处理中最难的一个,无数人就卡在这里,怎么也不准,本人也是尝试过网上各种demo,基本上都是渣渣,要么仅仅支持极其少量的视频文件比如收到的数据包是一帧视频一帧音频的,要么根本没法同步歪七八糟的,要么进度跳过去直接蹦蹦蹦崩溃的,其实最完美的音视频同步处理demo就是ffplay,我亲测过几十种各种各样的音视频本地文件,数十种视频流文件,都是非常完美,当然啦这是亲生的啦,不完美还玩个屁。 如果仅仅是播放视频流(不带音频流),可能不需要音视频同步,所以最开始只做rtsp视频流播放的时候根本没有考虑同步的问题,因为没遇到也不需要,等到后期发现各种rtmp、http、m3u8这种视频流的时候,问题大了去了,他是hls格式的视频流文件一次性过来的,一个个小视频文件过来的,如果没有同步的话,意味着突然之间刷刷刷的图片过去很多,下一次来的又是刷刷的,这就需要自己计算同步了,上次接收到的数据包放入队列,到了需要显示的时候就显示。 常用的音视频同步方法: 通过fps来控制,fps表示一秒钟播放多少帧,比如25帧,可以自行计算一帧解码用掉的时间,一帧占用(1000/25=40毫秒),通过延时来处理,这其实是最渣渣的办法。 记住开始解码的时间startTime,通过av_rescale_q计算pts时间,两者的差值就是需要延时的时间

FFmpeg 开发(06):FFmpeg 播放器实现音视频同步的三种方式

て烟熏妆下的殇ゞ 提交于 2020-10-25 12:50:53
该文章首发于微信公众号:字节流动 FFmpeg 开发系列连载: FFmpeg 开发(01):FFmpeg 编译和集成 FFmpeg 开发(02):FFmpeg + ANativeWindow 实现视频解码播放 FFmpeg 开发(03):FFmpeg + OpenSLES 实现音频解码播放 FFmpeg 开发(04):FFmpeg + OpenGLES 实现音频可视化播放 FFmpeg 开发(05):FFmpeg + OpenGLES 实现视频解码播放和视频滤镜 前文中,我们基于 FFmpeg 利用 OpenGL ES 和 OpenSL ES 分别实现了对解码后视频和音频的渲染,本文将实现播放器的最后一个重要功能:音视频同步。 老人们经常说,播放器对音频和视频的播放没有绝对的静态的同步,只有相对的动态的同步,实际上音视频同步就是一个“你追我赶”的过程。 音视频的同步方式有 3 种,即:音视频向系统时钟同步、音频向视频同步及视频向音频同步。 音视频解码器结构 在实现音视频同步之前,我们先简单说下本文播放器的大致结构,方便后面实现不同的音视频同步方式。 如上图所示,音频解码和视频解码分别占用一个独立线程,线程里有一个解码循环,解码循环里不断对音视频编码数据进行解码,音视频解码帧不设置缓存 Buffer , 进行实时渲染,极大地方便了音视频同步的实现。 音视频解码线程独立分离的播放器模式