不过MediaMTX的功能实在是太简单了,无法应用于真实直播的生产环境,真正能用于生产环境的流媒体服务器还要看SRS或者ZLMediaKit。...在手机上可通过APP或者小程序播放RTMP直播流,其中小程序使用video标签播放RTMP链接,APP除了借助FFmpeg库处理之外,还能使用ExoPlayer播放RTMP链接。...:exoplayer:2.17.1'implementation 'com.google.android.exoplayer:extension-rtmp:2.17.1'可见以上配置不但导入了exoplayer...打开srs安装目录下的conf/srs.conf,在“vhost __defaultVhost__”节点内部添加下面一行:gop_cache on;该行配置的作用是开启缓存关键帧,实际应用记得设置为on...,否则客户端拉流找不到关键帧就无法渲染画面。
其许可协议为修订过的BSD许可证。 此处Yasm用来编译x86平台下ffmpeg中部分汇编代码。 注意,Yasm是x86平台汇编器,不需要交叉编译。...ffmpeg 直接在ffmpeg官网https://www.ffmpeg.org/下载最新版源码包。...ffmpeg源码仓库地址https://git.ffmpeg.org/ffmpeg.git,在github上镜像地址https://github.com/FFmpeg/FFmpeg.git。...因为我们前面将所有第三方库的安装路径都设置为/home/think/目录。...ffprobe huangh.flv 注意: 远程终端处于控制台命令行模式(运行级别3),无权限调用SDL,因此无法测试ffplay,但可以测试ffmpeg和ffprobe。
关于如何在Qt工程中引入FFmpeg,可参考《FFmpeg开发实战:从零基础到短视频上线》一书的“第11章 FFmpeg的桌面开发”。...《FFmpeg开发实战:从零基础到短视频上线》一书的“第12章 FFmpeg的移动开发”介绍了如何在手机APP上集成FFmpeg。...但是如果手机APP不走FFmpeg,通过其他途径访问直播地址之时,却发现无法播放ZLMediaKit的HLS直播地址http://124.***.***.***:8080/live/test/hls.m3u8...于是检查ZLMediaKit的源代码,发现ZLMediaKit内部对于HTTP地址增加了Cookie校验,原来这套校验规则适配了FFmpeg,却尚未适配ExoPlayer,也未适配小程序。...更多详细的FFmpeg开发知识参见《FFmpeg开发实战:从零基础到短视频上线》一书。
开发的一个播放器软件,目前支持Android和iOS两种平台,ffmpeg是音视频领域的大山,基本上做音视频开发的根本绕不过去,所以ijkplayer采用ffmpeg作为音视频播放器的基础也是可以理解的...; ffmpeg中提供了ffplay 和 SDL(Simple DirectMedia Layer) 功能模块,是ffmpeg 视频播放的集大成;整个ijkplayer就是以ffplay为基础展开的;...IjkPlayer的架构以FFplay为核心,FFplay基于FFmpeg,FFmpeg具备强大的扩展性,所以Ijkplayer的拓展能力主要是FFmpeg的拓展能力; IjkPlayer的整体流程比较清晰...; 2.视频解码无法接入软解,可扩展性一般; 3.适合播放场景简单的项目,播放过程中无切换码流的情况; ---- ExoPlayer 会替代MediaPlayer成为Android平台上的默认播放器吗?...不会,两个原因: Android 5.0 之后Android的Codec架构做了依次重大调整,放弃了AwesomePlayer ,使用NuPlayer架构,ExoPlayer 没有做过多的兼容; ExoPlayer
ExoPlayer支持RTSP流(通过扩展或自定义Renderer)。通过FFmpeg支持RTSP由于FFmpeg是一个非常强大的多媒体框架,它支持包括RTSP在内的多种流媒体协议。...你可以将FFmpeg与ExoPlayer结合使用,通过FFmpeg来解码RTSP流,并将解码后的数据传递给ExoPlayer进行播放。...创建自定义MediaSource:在ExoPlayer中,你可以通过创建自定义的MediaSource来集成FFmpeg。...这个MediaSource将负责使用FFmpeg来拉取和解码RTSP流,并将解码后的数据(通常是PCM音频和YUV或RGB视频帧)传递给ExoPlayer的渲染器。...然而,由于FFmpeg和ExoPlayer的渲染机制可能不同,你可能需要编写一些额外的代码来桥接这两个系统。3.
作者:张陈博男 业务层播放器架构演变 企鹅FM android端的播放器架构经历过两次较大的调整 第一次是2.1版本,首次引入了以FFmpeg为基础的腾讯视频SDK,替换了之前一直使用的系统播放器,结束了不同机型上表现不一和调用其...一套统一的代码,这也是作为一个优秀的业务播放器的必备条件,否则假如建立在系统播放器基础上(各个厂商都会修改系统播放器代码),同样的实现在不同的机型上几乎无法做到表现一致,更遑论成功率了(常常是改动了调用方式后...腾讯视频很完善,具备一切我们需要的功能,但是太过于庞杂:最下层是FFmpeg,然后是C++实现的播放器逻辑,上层一个java接口层和部分逻辑。...其次、C/C++层的逻辑一旦出异常,堆栈极其难以定位到原因,而且就算定位到了,FFmpeg带来的问题也比较棘手。再次、处理数据就必须经过多次jni传递,这降低了效率。 本地代理带来的结构上的冗余。...引入本地代理是因为腾讯视频SDK的请求部分是写死的,无法在其中再加入我们自身的比如文件头zip压缩和分片下载缓存的逻辑。
1.ffmpeg https://github.com/FFmpeg/FFmpeg ffmpeg应该是音视频入门必须要掌握的开源项目,涉及到音视频从生产到消费的完整过程,ffmpeg是一个综合性项目,...涉及到非常多的知识点; ffmpeg 从模块上划分可以分为下面几个模块: libavutil:ffmpeg中通用的工具库,其他模块的通用功能会调用到这儿; libavformat:音视频封装格式处理模块...编译出来的包过大,约20M,这是工程开发无法忍受的; vlc的更新节奏非常快,不像ijkplayer,目前基本上没有太多bilibili公司的人维护了; 6.mp4parser https://github.com...https://github.com/google/ExoPlayer ExoPlayer是google开源的一个播放器库,是基于MediaPlayer的一个扩展,核心原理是分离音频和视频流,然后基于...MediaCodec硬解码解析数据,目前的稳定性比较好,而且效率较高;如果你的视频源本身比较简单或者播放过程中不涉及码流的切换等等,建议还是选择ExoPlayer,播放效果更佳; 9.MediaSDK
,以RTMP Streamer、SRT Streamer为代表。...2、开源流媒体服务器开源的流媒体服务器主要有两种,一种是国外的开源流媒体服务器,以MediaMTX和nginx-rtmp为代表;另一种是国产的开源流媒体服务器,以SRS和ZLMediaKit为代表。...3、开源音视频播放器开源音视频播放器主要有两种,一种是电脑端的播放软件,以ffplay和VLC media player为代表;另一种是手机端的播放软件,以ExoPlayer和ijkplayer为代表。...有关ExoPlayer的详细用法参见《Android Studio开发实战:从零基础到App上线(第3版)》一书的“14.3.3 新型播放器ExoPlayer”。...综合以上的开源直播录制软件、开源流媒体服务器和开源音视频播放器,即可搭建完整的直播系统,该系统的效果图详见之前的文章《利用RTMP协议构建电脑与手机的直播Demo》和《利用SRT协议构建手机APP的直播
》一书第14章的“14.3.3 新型播放器ExoPlayer”就详细介绍了Exoplayer库的详细用法。...根据上述条件准备好了开发环境,再按照以下描述引入Media3的ExoPlayer库,详细步骤说明如下。...implementation "androidx.media3:media3-exoplayer:1.4.0"implementation "androidx.media3:media3-exoplayer-hls...对象,并对其设置ExoPlayer的播放器对象: PlayerView pv_content = findViewById(R.id.pv_content); mPlayer = new ExoPlayer.Builder...可见成功把Media3的ExoPlayer库跑了起来,并且正常播放网络视频。更多详细的FFmpeg开发知识参见《FFmpeg开发实战:从零基础到短视频上线》一书。
继音视频播放器ExoPlayer之后,谷歌又推出了音视频转换器Transformer,要在音视频加工领域施展拳脚。...因为Transformer被Media3囊括在内,所以它对运行环境要求颇高,具体环境要求参见之前的文章《使用Media3的Exoplayer播放网络视频》。...准备好了开发环境之后,再按照以下描述引入Media3的ExoPlayer库,详细步骤说明如下。...,指定输出视频格式为H265,输出音频格式为AAC,并且监听转换操作的结束事件和失败事件。...更多详细的FFmpeg开发知识参见《FFmpeg开发实战:从零基础到短视频上线》一书。
该方向的学习难度系数为★★★,保饭碗指数为★★。理由:爸爸的App开发技术都是公开的,而且简单易学门槛低。...再如初级安卓只会通过VideoView和ExoPlayer播放视频,但是音视频方面更需要实时交互和动态剪辑,那么WebRTC、FFmpeg、RTMP/SRT(直播协议)就是必须掌握的。...:从零基础到短视频上线》一书的“第12章 FFmpeg的移动开发”,手机App的直播技术参见之前的文章《利用RTMP协议构建电脑与手机的直播Demo》和《利用SRT协议构建手机APP的直播Demo》。...该方向的学习难度系数为★★★★,保饭碗指数为★★★。理由:以上技能涉及计算机科学的专业领域知识,具备一定的技术门槛。...★★★★,保饭碗指数为★★★★。
ijkPlayer ijkPlayer是BiliBili公司维护的一个开源工程,基于ffmpeg开发的一个播放器软件,支持Android和iOS平台,整个ijkplayer就是以ffplay为基础,如果只是使用它进行播放...支持软硬编解码,支持倍速播放,可以定制化集成需要的功能,集成占用体积也很小,更详细的解释参看下面官方介绍: Features Common remove rarely used ffmpeg components...Using ExoPlayer Via jCenter The easiest way to get started using ExoPlayer is by including the following...:ExoPlayer:library') } As a jar If you want to use ExoPlayer as a jar, run: ....不太适合直播,视频解码无法接入软解,可扩展性一般,而且只支持Android平台。
你好,欢迎回来,上一讲我们说了如何使用FFmpeg实现音视频格式的转换!实际的应用场景中,相信你也会碰到为视频添加水印的需求,一来是标明视频的所属权,二来也起到一定的宣传作用!...而这一目标,同样通过FFmpeg命令行,就可以帮助我们实现!让我们一起来看一下如何做: 一、准备工作 视频文件和环境准备工作,与前面一致,不再赘述!...操作命令行: ffmpeg -i 2_6.mp4 -vf "movie=logo.png[wm];[in][wm]overlay=100:50[out]" 2_6_out.mp4 执行完此命令之后,会得到名为...三、具体命令解析 -i:表示指定输入文件 -vf:表示设置视频滤镜(vf即video filter得缩写) " ":上述命令中,引号中的内容为具体的滤镜的内容 滤镜的具体内容解释: 滤镜的一般格式为:...滤镜名称=滤镜具体的内容(可以有多个); 本例中使用的滤镜: movie:movie滤镜 movie滤镜具体内容:logo.png[wm];[in][wm] (使用logo.png,定义为标签[wm
本文介绍下如何使用ffmpeg将大量图片拼接成一个视频,并介绍其中部分参数的含义。...使用ffmpeg将图片拼接成视频前,需要将图片文件名做下预处理,文件名中必须有数字将其次序标记出来,这里我直接使用数字将图片重命名了 直接使用命令ffmpeg -f image2 -i %d.jpeg...-crf 调整视频质量 -crf Constant Rate Factor,用以平衡视频质量和文件大小的参数,FFMPEG里取值范围为0-51,取值越高内容损失越多,视频质量更差。...ffmpeg的默认值是23,建议的取值范围是17-28。...-vf scale 调整视频分辨率 -vf scale: Video Filter Scale ffmpeg -f image2 -i %d.jpeg -s 640x480 output5.mp4 上面的命令会将视频直接调整为
结合上图,总结关键步骤(图中内容从左往右,以音频解码播放为例): 播放器初始化: stream_open主要创建读数据线程read_thread 创建存放audio解码前数据的队列audioq 创建存放...备注: ExoPlayer对多音频流的ts分片支持不完善(issue),因此测试时需要调整相关接口。...,互换音频流后无法明显差别,通过合成第三条音频流,来验证是它是对所有音频流全播放 ffmpeg -i INPUT_FILE_1 -i INPUT_FILE_2 -map 0:0 -map 0:1 -map...0:2 -map 1:0 -c copy OUTPUT_FILE 总结 从以上数据看到,iOS和PC端会默认选择第一条流,而在Android端的FFmpeg和ExoPlayer会根据音频流属性来选择数值更好的一条...但以上2个选择方案都无法识别“内容异常”的音频流。 解决方案 因此处理该问题,需要从音源上进行修复和规避。
FFmpeg解码获得的AVPacket只包含视频压缩数据,并没有包含相关的解码信息 (比如:h264的sps pps头信息,AAC的adts头信息),没有这些编码头信息解 码器(MediaCodec)是识别不到不能解码的...在FFmpeg中,这些头信息是保存 在解码器上下文(AVCodecContext)的extradata中的,所以我们需要为每一种 格式的视频添加相应的解码头信息,这样解码器(MediaCodec)才能正确解析
联想到 Chromium 文档中有提到专有解码器的,原话为: 此外,您可能希望包括对专有音频和视频编解码器的支持,就像 Google 的 WebView 所做的那样。...这些编解码器可能受到专利或许可协议的保护,在分发包含它们的 WebView 构建之前,您应该寻求法律建议。 因为平台是支持硬解 H264 / H265 的,没有联想到和这个有关系。...赶紧加到编译选项中: ffmpeg_branding = "Chrome" proprietary_codecs = true 问题得到圆满的解决?答案是没有。...exoplayer 的项目地址: https://github.com/google/ExoPlayer 构建和安装 exoplayer 后,可以使用命令行来播放指定的视频: $ adb shell am...start -a com.google.android.exoplayer.demo.action.VIEW -d 如果某种格式在 chromium 中无法播放,先使用 exoplayer
GSYVideoPlayer是一个国产的移动端视频播放器,它采用了IJKPlayer、Media3(EXOPlayer)、MediaPlayer、AliPlayer等四种播放器内核,支持弹幕、滤镜、广告等多项功能...GSYVideoPlayer的Github主页为https://github.com/CarGuo/GSYVideoPlayer,截止2024年8月18日,该项目的Github星标数为2万,副本数为0.42...万,这个成绩算是相当不错的了,要知道FFmpeg项目同期在Github的星标数也才4.44万。...Jellyfish虽然GSYVideoPlayer主页没有说明要在哪个版本的Android Studio中导入该库,但在实际操作中发现,即使是前两年推出的Android Studio Dolphin(小海豚版本)都无法正常导入...利用NormalGSYVideoPlayer播放直播视频的效果图如下所示:更多详细的FFmpeg开发知识参见《FFmpeg开发实战:从零基础到短视频上线》一书。
引言 在前面的Demo中,我们已经分别在独立的线程中实现了对视频的解码渲染和音频的解码播放功能 Android FFmpeg系列03--视频解码与渲染 Android FFmpeg系列05--音频解码与播放...只需要在合理的区间内相互追赶就行,所以说音视频的同步是动态的、是暂时的,不同步则是常态 无感知区间:音频帧和视频帧显示的时间戳差值在-100ms~+25ms之间 能感知区间:音频滞后在-100ms以上或者超前了25ms+ 无法接受的区间...ffplay,exoplayer都是如此 音画同步的关键在于计算视频和音频时间的diff和计算最终的delay,在ffplay.c源码中通过如下函数计算 static double compute_target_delay...,以及呈现该帧的估计时间 该接口的注意事项: 该接口不一定都支持,不支持的时候会返回0; 在音频管道初始预热阶段,可能无法连续更新时间戳; 该接口不应该太频繁调用,频繁调用会导致CPU负担,电量损耗过大...;exoplayer中是每500ms查询一次 AudioTrack#getPlaybackHeadPosition() (api level 3+) 返回当前播放的头位置(以帧为单位) 计算最新的音频时间戳
备注: ExoPlayer对多音频流的ts分片支持不完善(issue),因此测试时需要调整相关接口。...,互换音频流后无法明显差别,通过合成第三条音频流,来验证是它是对所有音频流全播放 ffmpeg -i INPUT_FILE_1 -i INPUT_FILE_2 -map 0:0 -map 0:1 -map...0:2 -map 1:0 -c copy OUTPUT_FILE 3、总结 从以上数据看到,iOS和PC平台会默认选择第一条流,而在Android平台的FFmpeg和ExoPlayer会根据音频流属性来选择数值更好的一条...但以上2个选择方案都无法识别“内容异常”的音频流。.../doxygen/2.8/ https://github.com/google/ExoPlayer https://www.jianshu.com/p/daf0a61cc1e0 https://www.jianshu.com
领取专属 10元无门槛券
手把手带您无忧上云