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

FFmpeg开发笔记(三十八)APP如何访问SRS推流RTMP直播地址

​《FFmpeg开发实战:零基础到短视频上线》一书在第10章介绍了轻量级流媒体服务器MediaMTX,通过该工具可以测试RTSP/RTMP等流媒体协议推拉流。...不过MediaMTX功能实在是太简单了,无法应用于真实直播生产环境,真正能用于生产环境流媒体服务器还要看SRS或者ZLMediaKit。...注意,使用ffmpeg命令把视频文件推流给SRS时,要注意区分FFmpeg版本,因为FFmpeg6.1开始才给RTMP协议支持HEVC、VP9、AV1这三种视频编码器,所以FFmpeg 6.0和更早版本只能以...二、修改播放代码支持RTMP流ExoPlayer详细用法参见《Android Studio开发实战:零基础到App上线(第3版)》一书第14章“14.3.3  新型播放器ExoPlayer”,其中与...更多详细FFmpeg开发知识参见《FFmpeg开发实战:零基础到短视频上线》。​

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

ExoPlayer 漫谈之解码器复用

目前ExoPlayer最新版本是2.12.2, 而且保持着凉州一个小版本, 两个月一个大版本更新节奏, google工作效率还是比较高....enabled状态, 在此状态下,渲染器可以播放媒体流,并在可能情况下(例如,在读取流格式之后)获取解码器实例。...特别是,这意味着播放列表中一种媒体过渡到另一种媒体时,视频解码器将被重用。在渲染列表过渡到禁用状态时,音频解码器不会在此类播放列表过渡中重用,视频或音频解码器也不会重用。...我们如何复用解码器 保证你播放视频格式是相同,例如短视频信息流都是H264/AAC编码格式 如果使用ExoPlayer播放器,最好使用同一个ExoPlayer实例,因为codec实例是封装在ExoPlayer...(...)函数,这个函数使用方式是比较复杂,不能误用 https://exoplayer.dev/doc/reference/com/google/android/exoplayer2/ExoPlayer.html

2.5K60

FFmpeg开发笔记(二十七)解决APP无法访问ZLMediaKit直播链接问题

​上一篇文章介绍了如何通过ZLMediaKit实现视频推拉流,并使用VLC播放器验证视频直播地址。...关于如何在Qt工程中引入FFmpeg,可参考《FFmpeg开发实战:零基础到短视频上线》一书“第11章  FFmpeg桌面开发”。...《FFmpeg开发实战:零基础到短视频上线》一书“第12章  FFmpeg移动开发”介绍了如何在手机APP上集成FFmpeg。...无论采用谷歌官方ExoPlayer,还是采用微信小程序video标签,都播放不了ZLMediaKitHLS视频。...接着使用真机调试微信小程序,发现通过video标签也能正常播放HLS视频了。更多详细FFmpeg开发知识参见《FFmpeg开发实战:零基础到短视频上线》一书。​

13410

一个ExoPlayer原生播放问题引起思考

问题背景 我们在使用ExoPlayer播放视频视频发现一种特殊M3U8视频,播放总是失败。 而且报如下错误: ExoPlayerImplInternal: Source error....这次ExoPlayer发生播放这样视频失败原因,就是因为视频源没有遵守TS Packet大小为188字节规则,这样错误很尴尬,它违反了标准,但是它前188字节是标准TS数据。...ExoPlayer这样修改原因 ---- 先放上两个源码修改链接: https://github.com/google/ExoPlayer/commit/0697fb3955d8a30edb935cc428d515e2fd9d48cb...注释来看,google觉得每次加载不一定要等到TS_SYNC_BYTE才算加载成功,但是他们显然又怕当前不是标准TS流,就加了一个兜底,要是当前读到位置超过两个188字节还是没有发现TS_SYNC_BYTE...对TS格式分析来看,这样修改不太完美,但是播放器兜底处理来看,这样处理基本没有风险。因为最坏结果就是播放失败。已经有兜底方案了,应该没有问题。 制定了标准,总有人不去遵守。

3.3K20

Android ExoPlayer 音画同步代码分析

二、常见音同步方式 常见同步方式 【1】获取音频播放时间 ,然后将视频播放位置Seek到音频播放位置 ,然后再将音频 Seek 到视频位置。...ExoPlayer 中,Audio Master实现中有两个核心类:com.google.android.exoplayer2.audio.AudioTrackPositionTracker和com.google.android.exoplayer2...在 ExoPlayer 中 com.google.android.exoplayer2.audio.BaseRenderer#getMediaClock 方法是空实现,但是在子类中视频依然返回 null...,在ExoPlayer中,自定义MediaClock基本上很难外部传入,那么,如果想在外部传入自定义MediaClock怎么实现呢 ?...在有些业务中音频输出和ExoPlayer是分开,我们要考虑如何通过音频播放器去同步ExoPlayer视频渲染器,但有ExoPlayer具备高度可扩展性,我们可以通过自定时钟方式去同步ExoPlayer

1.1K20

ExoPlayer播放音视频使用介绍

本文翻译自:https://google.github.io/ExoPlayer/guide.html#mediasource 一、简介 在安卓设备上播放视频和音乐是很受欢迎活动。...(1)将ExoPlayer添加为依赖项 入门第一步是确保您项目根目录中build.gradle文件中包含JCenter和Google存储库。...:2.X.X' implementation 'com.google.android.exoplayer:exoplayer-dash:2.X.X' implementation 'com.google.android.exoplayer...(1)侧面加载字幕文件 给定一个视频文件和一个单独字幕文件,可以使用 MergingMediaSource 将它们合并到单个播放源中。...MediaSource - 如果您希望以自定义方式获取媒体示例以供给呈现器,或者如果您希望实现自定义MediaSource合成行为,则实现自定义MediaSource类可能是合适

6.2K20

看点视频秒开优化:解码器复用优化方案篇

首帧优化已经进入深水区,受Google ExoPlayer切换清晰度方案(不用重启解码器)启发,我们探索出一种适合短视频场景,基于Android平台跨播放器解码器复用方案,对中低端机首帧性能提升明显...受到Google ExoPlayer优化切换清晰度时耗时方案启发(具体可见《Improved decoder reuse in ExoPlayer》),解码器可以在一定条件下不经过重启,直接播放不同清晰度视频...而Google为了优化清晰度无缝切换时耗时,在ExoPlayer上实现了播放器内解码器复用。...2.1.2 GoogleExoPlayer方案不适合短视频场景 Google已经在ExoPlayer上进行了解码器复用实践,那么是否可以将对应方案直接应用到我们业务呢?答案是不能。...2.1.3 探索出适合短视频场景解码器复用方案 基于前面的问题,需要探索出一种更适合短视频场景,可以跨播放器全局共享解码器复用方案。

5.6K126

选择最新 Chromium,支持 H264 H265

测试视频是 MP4 格式,日志上看,大致可以判断是对流解析出现问题。...MojoVideoDecoder ,而使用 Google 官方发布 Chrome for Android,视频解码器为 MediaCodecVideoDecoder: 对比图看似乎是解码器创建错误...如何判断系统 MediaCodec 对各种视频编码格式支持,这里需要介绍 google 开源播放器 exoplayerExoPlayer 是适用于 Android 应用程序级媒体播放器。...exoplayer 项目地址: https://github.com/google/ExoPlayer 构建和安装 exoplayer 后,可以使用命令行来播放指定视频: $ adb shell am...start -a com.google.android.exoplayer.demo.action.VIEW -d 如果某种格式在 chromium 中无法播放,先使用 exoplayer

76430

ExoPlayer漫谈之解码器复用

目前ExoPlayer最新版本是2.12.2, 而且保持着凉州一个小版本, 两个月一个大版本更新节奏, google工作效率还是比较高....enabled状态, 在此状态下,渲染器可以播放媒体流,并在可能情况下(例如,在读取流格式之后)获取解码器实例。 started状态, 在此状态下,渲染器使用持有的解码器实例来播放视频 ?...在2.10之前版本中,只要视频渲染器保持在启用和启动状态,ExoPlayer就会尽可能重复使用视频解码器。特别是,这意味着播放列表中一种媒体过渡到另一种媒体时,视频解码器将被重用。...我们如何复用解码器 保证你播放视频格式是相同,例如短视频信息流都是H264/AAC编码格式 如果使用ExoPlayer播放器,最好使用同一个ExoPlayer实例,因为codec实例是封装在ExoPlayer...(...)函数,这个函数使用方式是比较复杂,不能误用 https://exoplayer.dev/doc/reference/com/google/android/exoplayer2/ExoPlayer.html

2.2K31

可折叠设备桌面模式

它很适合于看媒体、进行视频通话、拍照甚至是玩游戏。 一个很好例子是 Google Duo 团队 对其应用进行优化,从而使该应用在平板电脑和可折叠设备上均能运行良好。...要使用这些库,您必须将 Google Maven 库添加到项目中,并且声明相关依赖: dependencies { ... // 成文时使用如下版本号,Exoplayer 最新版本号详见...https://github.com/google/ExoPlayer/releases implementation 'com.google.android.exoplayer:exoplayer-core...由于 ReactiveGuide 是水平,此属性指的是参考线到父布局底部距离。 让您应用感知屏幕折叠 现在进入最重要部分: 如何获知您手机何时进入了桌面模式,并获取到折叠处位置呢?...cancel() releasePlayer() } 如果您想要了解如何初始化和释放一个 Exoplayer 实例,请查阅——Exoplayer codelab。

2.3K30

视频开发之旅(44)-ExoPlayer介绍及简单使用

从这篇开始我们进入阶段五 —— 一些音视频开源项目的学习使用分析,今天我们进入ExoPlayer部分学习实践 一、ExoPlayer基本介绍 1.1 ExoPlayer优缺点 ExoPlayer是谷歌开源一个应用级视频播放器...1.2 ExoPlayer架构设计 ExoPlayer核心是ExoPlayer接口,其中定义了包涵传统播放器功能(缓冲音视频、播放、暂停、seek等)。...下面是一些常见ExoPlayer组件实现: MediaSource 加载媒体,通过ExoPlayer.prepare注册 TrackSelector:音/视轨提取器,MediaSource中提取出轨道数据...在我们日常项目开发中,开发一个组件 易用性和以扩展性方面考虑,既要保证使用者很容易上手使用(提供一套默认实现),又要有方便使用者根据自己场景进行方便扩展能力。...ExoPlayer,实现一个简单音频播放器,欢迎关注公众号“音视频开发之旅”,一起学习成长。

7K00

YouTube开源播放器中文使用指南

可以根据用户需求方便对播放器行为进行定制和扩展,ExoPlayer很多组件都支持自定义和扩展。 支持播放视频列表,并且可以支持对视频裁剪、合并,以及循环播放设置。...支持更多视频格式,包括MediaPlayer不支持DASH、SmoothStreaming。 支持 Widevine功能,这个功能可以下载和播放经过Google加密视频文件。...下面我们就针对每一个步骤详细去介绍下如何具体地落实到代码中去。...添加ExoPlayer依赖 首先我们要保证在项目根目录build.gradle中包含Google和JCenter仓库: repositories { google() jcenter...也可以阅读官方文档。既然是Yutube使用播放器,如何强大读者自行去挖掘,也可挖掘源码中设计架构。

3.8K20

4款知名播放器比较:ijkPlayer、VLC、SmartPlayer、ExoPlayer

,快速切换其他URL,内容切换更快; [音视频多种render机制]Android平台,视频:surfaceview/OpenGL ES,音频:AudioTrack/OpenSL ES; [实时静音...]支持H.264/H.265数据回调; [解码后视频数据回调]支持解码后YUV/RGB数据回调; [解码前音频数据回调]支持AAC/PCMA/PCMU数据回调; [音视频自适应]支持播放过程中,音视频信息改变后自适应...ExoPlayer ExoPlayergoogle推出开源播放器,主要是集成了Android 提供一套解码系统来解析视频和音频,将MediaCodec封装地非常完善,形成了一个性能优越,播放稳定性较好一个开发播放器...in your project's build.gradle file: compile 'com.google.android.exoplayer:exoplayer:rX.X.X' where rX.X.X...; VLC对点播支持比较好,但是工程庞大,接入或二次开发难度比较大; SmartPlayer对RTSP和RTMP直播播放支持非常优秀,毫秒级延迟,稳定性比较好; ExoPlayer不太适合直播,视频解码无法接入软解

7.5K70

视频开发之旅(45)-ExoPlayer 音频播放器实践(一)

Service连接状态以及获取在Service中异步获取音乐数据(这个一般不在Service中进行获取,因为涉及到是具体业务逻辑) MediaBrowserService 是一个Service,...这明显和真实场景有差异。 另外播放管理相关没有分离,播放队列维护,播放状态管理等等没有统一管理,不利于扩展扩展更换播放器等。...下一篇我们来分析umap实现,它是如何进行架构如何解决上面的问题。...在具体实践之前我们先来学习分析下uamp这个google开源音频播放器是如何架构,看看在数据源设置以及播放管理方面是否可以学习借鉴。...感谢你阅读 下一篇我们继续学习实践ExoPlayer,分析uamp设计与实现,欢迎关注公众号“音视频开发之旅”,一起学习成长。 欢迎交流

5K00

Android 音频播放速率调整实现

ijkPlayer ijkplayer是b站基于ffplay轻量级Android/iOS视频播放器,实现了跨平台功能,API易于集成;编译配置可裁剪,方便控制安装包大小。...实际实现过程中 ,seekTo正常,播放速率切换也正常(只是在切换到慢速0.5x时候存在重音情况),但是播放不了https开头url音频文件,搜索了一下需要自己编译ijkplayer源码以支持https...ExoPlayer 最终选择googleexoPlayer来实现,api类似MediaPlayer,但也有些差异,下面贴出关键播放控制部分代码。....ExoPlayer; import com.google.android.exoplayer2.ExoPlayerFactory; import com.google.android.exoplayer2....PlaybackParameters; import com.google.android.exoplayer2.Player; import com.google.android.exoplayer2

1.2K10

01.视频播放器框架介绍

(controller); //设置视频播放链接地址 mVideoPlayer.setUrl(url); //开始播放 mVideoPlayer.start(); 4.4 注意问题 如果是全屏播放,则需要在清单文件中设置当前...9.1 如何兼容不同内核播放器 提问:针对不同内核播放器,比如谷歌ExoPlayer,B站IjkPlayer,还有原生MediaPlayer,有些api不一样,那使用时候如何统一api呢?...传入视频url链接,返回一个代理链接,然后就可以呢HttpProxyCacheServer cacheServer = ProxyVideoCacheManager.getProxy(this); String...,真实url是为了真正下载),然后播放器播放时候请求到了你本地代理上了。...如何实现预加载 其实预加载思路很简单,在进行一个播放视频后,再返回接下来需要预加载视频url,启用线程去请求下载数据 开启一个线程去请求并预加载一部分数据,可能需要预加载数据大于>1,利用队列先进入先进行加载

2.6K51

04.视频播放器通用架构实践

调用时候,获取接口对象调用api,这样就可以统一Api 播放器内核 可以切换ExoPlayer、MediaPlayer,IjkPlayer,声网视频播放器,这里使用工厂模式Factory + AbstractVideoPlayer...(controller); //设置视频播放链接地址 mVideoPlayer.setUrl(url); //开始播放 mVideoPlayer.start(); 只需要四步操作即可,非常简单。...传入视频url链接,返回一个代理链接,然后就可以呢HttpProxyCacheServer server = new HttpProxyCacheServer(this); String proxyVideoUrl...,真实url是为了真正下载),然后播放器播放时候请求到了你本地代理上了。...exo播放器 https://github.com/google/ExoPlayer ijk播放器 https://github.com/bilibili/ijkplayer 阿里云播放器 https

2.4K00

ExoPlayer 自适应流切换分析

ExoPlayer中,MergingMediaSource 中同一类型(视频类型、音频类型、字幕类型等)数据,由于缺乏必要码率参数, 无法将相似FormatTrack数据合并为一组,因此使用...ExoPlayer支持Renderer拆解、组合、关闭和启用,也支持自定义解码器接入,比如通过SimpleDecoder实现FFMPEG对视频和音频解码渲染。...MediaSource 媒体源:在ExoPlayer中,得益于对DataSource中抽象出了MediaSource,使得ExoPlayer在多路流管理方面更加灵活方便。...mimeType : 资源类型 codecs: 资源编码类型 width: 视频宽度 height: 视频高度 和其他协议资源不同是,由于使用清单文件原因,基本可以实现在解封装之前就能获取到必要...但是如何验证切换完成了,实际上是有回调,参考下面接口实现。

1.2K30
领券