当前位置: 首页 > news >正文

装修公司做网站推广能接到活吗湘潭正规seo优化

装修公司做网站推广能接到活吗,湘潭正规seo优化,东莞骄阳网站建设,怎样做聊天网站在之前的文章ExoPlayer中常见MediaSource子类的区别和使用场景中介绍了Exoplayer中各种子MediaSource的使用场景#xff0c;这篇我们着重详细介绍下实现多路流混合播放的用法。常见的使用场景有#xff1a;视频文件电影字幕、正片视频广告视频、背景视频背景音乐等。 初始化…在之前的文章ExoPlayer中常见MediaSource子类的区别和使用场景中介绍了Exoplayer中各种子MediaSource的使用场景这篇我们着重详细介绍下实现多路流混合播放的用法。常见的使用场景有视频文件电影字幕、正片视频广告视频、背景视频背景音乐等。 初始化Exoplayer就不多说了随便查查文档就知道。 ExoPlayer mExoPlayer new ExoPlayer.Builder(context, new DefaultMediaSourceFactory(context)).build(); 1.视频文件电影字幕MergingMediaSource Uri videoUri Uri.parse(https://example.com/video.mp4); Uri subtitleUri Uri.parse(https://example.com/subtitles.srt);MediaSource videoSource new ExtractorMediaSource.Factory(dataSourceFactory).createMediaSource(videoUri);MediaSource subtitleSource new SingleSampleMediaSource.Factory(dataSourceFactory).createMediaSource(subtitleUri, Format.createTextSampleFormat(subs, MimeTypes.TEXT_SUBRIP, C.SELECTION_FLAG_DEFAULT, en));MediaSource mergedSource new MergingMediaSource(videoSource, subtitleSource); 2.广告视频正片视频ConcatenatingMediaSource DefaultMediaSourceFactory mediaSourceFactory new DefaultMediaSourceFactory(dataSourceFactory);// 创建两个视频的 MediaSourceMediaSource video1Source mediaSourceFactory.createMediaSource(MediaItem.fromUri(asset://android_asset/01.mp4));MediaSource video2Source mediaSourceFactory.createMediaSource(MediaItem.fromUri(asset://android_asset/02.mp4));ConcatenatingMediaSource concatenatingMediaSource new ConcatenatingMediaSource(video1Source,video2Source);mExoPlayer.setMediaSource(concatenatingMediaSource); 这样就能让两个视频按顺序播放且无缝衔接若还想它两循环播放可用LoopingMediaSource进一步封装。 //无限循环 LoopingMediaSource loopingMediaSource new LoopingMediaSource(concatenatingMediaSource); //循环5次 LoopingMediaSource loopingMediaSource new LoopingMediaSource(concatenatingMediaSource,5); mExoPlayer.setMediaSource(loopingMediaSource); 3.视频音频 DefaultMediaSourceFactory mediaSourceFactory new DefaultMediaSourceFactory(dataSourceFactory);MediaSource video2Source mediaSourceFactory.createMediaSource(MediaItem.fromUri(asset://android_asset/02.mp4)); MediaSource audio1Source mediaSourceFactory.createMediaSource(MediaItem.fromUri(asset://android_asset/audio/ori.mp2));MergingMediaSource audioMerged new MergingMediaSource(video2Source , audio1Source); mExoPlayer.setMediaSource(audioMerged ); 上面是1个视频1个音频当然也可以支持1个视频多个音频比如电影中有多个不同语言的音轨 DefaultMediaSourceFactory mediaSourceFactory new DefaultMediaSourceFactory(dataSourceFactory);MediaSource video1Source mediaSourceFactory.createMediaSource(MediaItem.fromUri(asset://android_asset/01.mp4));// 合并两个音频源MediaSource audio1Source mediaSourceFactory.createMediaSource(MediaItem.fromUri(asset://android_asset/audio/ori.mp2));MediaSource audio2Source mediaSourceFactory.createMediaSource(MediaItem.fromUri(asset://android_asset/audio/acc.mp2));MergingMediaSource audioMerged new MergingMediaSource(audio1Source,audio2Source); //合并视频和音频MergingMediaSource finalSource new MergingMediaSource(audioMerged,video1Source);mExoPlayer.setMediaSource(finalSource); 这样就可以实现一个视频混合多个音轨文件的播放了那么如何动态切换不同音轨呢TrackSelector DefaultTrackSelector trackSelector new DefaultTrackSelector(context); mExoPlayer new ExoPlayer.Builder(context, renderersFactory).setTrackSelector(trackSelector) .build();//查看所有音轨信息private class PlayerEventListener implements Player.Listener {SuppressLint(UnsafeOptInUsageError)Overridepublic void onTracksChanged(Tracks tracks) {audioList.clear();Player.Listener.super.onTracksChanged(tracks);ImmutableListTracks.Group trackGroups tracks.getGroups();for (int index 0; index trackGroups.size(); index) {Tracks.Group group trackGroups.get(index);for (int jIndex 0; jIndex group.length; jIndex) {Format format group.getTrackFormat(jIndex);LOG.info(onTracksChanged format Format.toLogString(format));if (MimeTypes.isAudio(format.sampleMimeType)) {audioList.add(format);}}}currentTrackGroups mExoPlayer.getCurrentTrackGroups();}mExoPlayer.addListener(new PlayerEventListener());// 用户选择第 index 个音轨TrackGroup selectedGroup null;selectedGroup currentTrackGroups.get(1); //根据需要选择第几个音轨// 应用新音轨mExoPlayer.setTrackSelectionParameters(mExoPlayer.getTrackSelectionParameters().buildUpon().setOverrideForType(new TrackSelectionOverride(selectedGroup, 0)) // 需要切换到的音轨索引.build()); 这里有个问题就是如果视频和音频时长不一致特别是想混合多个音频和多个视频时就会出问题无法播放报错如下 E/ExoPlayerImplInternal(11191): Playback error E/ExoPlayerImplInternal(11191): com.google.android.exoplayer2.ExoPlaybackException: Source error E/ExoPlayerImplInternal(11191): at com.google.android.exoplayer2.ExoPlayerImplInternal.handleIoException(ExoPlayerImplInternal.java:684) E/ExoPlayerImplInternal(11191): at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:660) E/ExoPlayerImplInternal(11191): at android.os.Handler.dispatchMessage(Handler.java:98) E/ExoPlayerImplInternal(11191): at android.os.Looper.loop(Looper.java:136) E/ExoPlayerImplInternal(11191): at android.os.HandlerThread.run(HandlerThread.java:61) E/ExoPlayerImplInternal(11191): Caused by: com.google.android.exoplayer2.source.MergingMediaSource$IllegalMergeException E/ExoPlayerImplInternal(11191): at com.google.android.exoplayer2.source.MergingMediaSource.onChildSourceInfoRefreshed(MergingMediaSource.java:252) E/ExoPlayerImplInternal(11191): at com.google.android.exoplayer2.source.MergingMediaSource.onChildSourceInfoRefreshed(MergingMediaSource.java:52) E/ExoPlayerImplInternal(11191): at com.google.android.exoplayer2.source.CompositeMediaSource.lambda$prepareChildSource$0$com-google-android-exoplayer2-source-CompositeMediaSource(CompositeMediaSource.java:120) E/ExoPlayerImplInternal(11191): at com.google.android.exoplayer2.source.CompositeMediaSource$$ExternalSyntheticLambda0.onSourceInfoRefreshed(D8$$SyntheticClass:0) E/ExoPlayerImplInternal(11191): at com.google.android.exoplayer2.source.BaseMediaSource.refreshSourceInfo(BaseMediaSource.java:94) E/ExoPlayerImplInternal(11191): at com.google.android.exoplayer2.source.ConcatenatingMediaSource.updateTimelineAndScheduleOnCompletionActions(ConcatenatingMediaSource.java:746) E/ExoPlayerImplInternal(11191): at com.google.android.exoplayer2.source.ConcatenatingMediaSource.handleMessage(ConcatenatingMediaSource.java:716) E/ExoPlayerImplInternal(11191): at com.google.android.exoplayer2.source.ConcatenatingMediaSource.$r8$lambda$xvlxaabNVihM68DRWdn_WPenrXk(ConcatenatingMediaSource.java) E/ExoPlayerImplInternal(11191): at com.google.android.exoplayer2.source.ConcatenatingMediaSource$$ExternalSyntheticLambda0.handleMessage(D8$$SyntheticClass:0) E/ExoPlayerImplInternal(11191): ... 3 more 这个主要是播放时长不一致无法同步时序导致下一篇再讨论如何解决此类情况。
http://www.pierceye.com/news/516640/

相关文章:

  • 网站php文件上传成都网站搜索排名优化哪家好
  • 南京做网站费用做网站的服务器配置
  • 外贸用什么平台自建站较好门户网站盈利
  • 外包兼职做图的网站做视频网站用哪个模板
  • 全球购物网站大全百度网盟推广官方网站
  • 计算机网站维护建设深圳外网站建设
  • 贵州公明建设投资咨询有限公司官方网站小说网站开发对影成三人小说
  • 软件分享网站不一样的婚恋网站怎么做
  • 如何维护给做网站的客户公司变更名称和经营范围
  • 网站建设维护php建站最好的公司排名
  • 济南1951年建站wordpress 描述
  • 政务网站建设信息嵊州网站制作
  • 我的网站突然找不到网页了seo是啥意思
  • 黑河做网站的公司平面设计现在怎么样
  • 银川网站建站中国建设银行人力资源网站
  • 建设部考试中心网站用自己的ip怎么查看dw8建设的网站
  • 九江网站建设九江商标设计网页
  • 网站建设资格预审公告附近广告设计与制作门店电话
  • 百度权重站长工具网页制作工具哪些好用
  • 关键词整站优化公司网站店招用什么软件做的
  • 租车网站模版广州市网站建设 骏域
  • 关闭网站怎么不保存我做的更改人工智能专业
  • ui中有哪些做的好看的网站简单logo设计
  • 深圳大型网站设计公司校园 网站建设 知乎
  • 西部数码网站流量怎么充优化网站界面的工具
  • 街区网站建设东阳市住房和城乡建设局网站
  • 怎样建设网站是什么网站代码制作软件
  • 成华区微信网站建设计公司加盟
  • 找个男做那个视频网站好高端网站建设公司
  • 做网站 毕业设计广东手机网页制作