安卓手机APP开发__媒体开发部分__媒体项

这篇具有很好参考价值的文章主要介绍了安卓手机APP开发__媒体开发部分__媒体项。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

安卓手机APP开发__媒体开发部分__媒体项

目录

概述

简单媒体项

处理非标准的文件扩展名

受保护的内容

边播边加载的字幕轨道

剪切一个媒体流

加广告


概述

基于媒体项的实例的播放列表API,能够很方便地使用MediaItem.Builder
来构建。 在播放器内部,一个播放项能被媒体源工厂转换成一个可以播放的
媒体源。没有定制化的配置,这个转化由一个默认的媒体源工厂来执行,它能
构建一个复杂的媒体源,这个源对应着媒体项的属性。一些在媒体项的属性
在下面列出来了。

简单媒体项

一个媒体项包括了一个流URI,构建如下:

Kotlin


val mediaItem = MediaItem.fromUri(videoUri)

对于其它的情况,能使用一个MediaItem.Builder。在如下的例子中,
一个媒体项能用一个编号和一些附加的元数据来构建:

Kotlin

val mediaItem = MediaItem.Builder().setMediaId(mediaId).setTag(myAppData).setUri(videoUri).build()

当播放列表的切换发生时,附加的元数据能在更新你的APP的用户界面时很有用。

处理非标准的文件扩展名

ExoPlayer提供了可适配的媒体源,包括了DASH,HLS,光滑流的情况。如果
这样的可适配的媒体项的URI以一个标准的文件扩展名结束,相应的媒体源被
自动地创建。如果媒体项的URI有一个非标准的扩展名,或者是没有扩展名,
那么MIME的类型能够被显式地显示为媒体项的类型:

Kotlin

val mediaItem = MediaItem.Builder().setUri(hlsUri).setMimeType(MimeTypes.APPLICATION_M3U8).build()

对于先进的媒体流,一个MIME类型是不需要有的。

受保护的内容

对于受保护的内容,媒体项的数据版权管理的属性应该被设置:

Kotlin

val mediaItem =
  MediaItem.Builder()
    .setUri(videoUri)
    .setDrmConfiguration(
      MediaItem.DrmConfiguration.Builder(C.WIDEVINE_UUID)
        .setLicenseUri(licenseUri)
        .setMultiSession(true)
        .setLicenseRequestHeaders(httpRequestHeaders)
        .build()
    )
    .build()

这个例子构造了一个宽藤(估计是一个商标)受保护的内容的媒体项。
在播放器内,DefaultMediaSourceFactory传递了一些属性给DrmSessionManagerProvider,
这样就得到了DrmSessionManager,然后这个管理器被注入到已创建的媒体源。
数字版权管理行为能够根据你的需求,被进一步地定制。

边播边加载的字幕轨道

对边播边加载的字幕轨道,当构建一个媒体项时,媒体项的字幕实例能被加上:

Kotlin

val subtitle =
  SubtitleConfiguration.Builder(subtitleUri)
    .setMimeType(mimeType) // The correct MIME type (required).
    .setLanguage(language) // The subtitle language (optional).
    .setSelectionFlags(selectionFlags) // Selection flags for the track (optional).
    .build()
val mediaItem =MediaItem.Builder().setUri(videoUri).setSubtitleConfigurations(listOf(subtitle)).build()

从内部看,DefaultMediaSourceFactory将使用MergingMediaSource来组合内容媒体源。
DefaultMediaSourceFactory不支持多个DASH的边播边加载字幕的功能。

剪切一个媒体流

为了剪切一个媒体项优先的内容,设置定制的开始和结束位置:

Kotlin

val mediaItem =
  MediaItem.Builder()
    .setUri(videoUri)
    .setClippingConfiguration(
      MediaItem.ClippingConfiguration.Builder()
        .setStartPositionMs(startPositionMs)
        .setEndPositionMs(endPositionMs)
        .build()
    )
    .build()

内部地看,DefaultMediaSourceFactory使用ClippingMediaSource来打包内容媒体源。
这有附加的剪切属性。

加广告

为了加广告,一个媒体项的广告标签的URI属性应该设置成:

Kotlin

val mediaItem =
  MediaItem.Builder()
    .setUri(videoUri)
    .setAdsConfiguration(MediaItem.AdsConfiguration.Builder(adTagUri).build())

从内部看,DefaultMediaSourceFactory将打包内容媒体源到广告媒体源,来插入广告。
为了做到这一点,播放器也需要有它自己的相应的DefaultMediaSourceFactory的配置。文章来源地址https://www.toymoban.com/news/detail-856481.html

到了这里,关于安卓手机APP开发__媒体开发部分__媒体项的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 音视频流媒体开发难以学习?今天教你如何“丝滑”入门

    Android平台最常用的渲染工具就是鼎鼎大名的 OpenGL ,程序员多多少少都有听过它,目前市面上众多3A游戏引擎很多就是由OpenGL编写的,而与此同时,对咱们Android开发来说,为什么要学习Opengl呢?其实就俩字: 高薪 ! 今天就带大家来了解了解 OpenGL ! OpenGL到底是什么呢?很多人

    2023年04月08日
    浏览(49)
  • Qt/C++音视频开发51-推流到各种流媒体服务程序

    最近将推流程序完善了很多功能,尤其是增加了对多种流媒体服务程序的支持,目前支持mediamtx、LiveQing、EasyDarwin、nginx-rtmp、ZLMediaKit、srs、ABLMediaServer等,其中经过大量的对比测试,个人比较建议使用mediamtx和ZLMediaKit,因为这两者支持的格式众多,不仅同时支持rtsp/rtmp推流,

    2024年02月09日
    浏览(57)
  • 安卓音视频开发(3)—— AudioTrack两种方式播放pcm音频

    前言 之前学习了AudioRecord录制pcm音频,与之对应的就是AudioTrack播放pcm音频(MediaPlayer、SoundPool有其他应用场景),它有两种数据加载模式(MODE_STATIC、MODE_STREAM)。 模式 MODE_STATIC :这种模式下,一次将所有的数据放入一个固定的buffer,然后写入到AudioTrack中,后续就不用继续

    2023年04月22日
    浏览(49)
  • 用Qt开发的ffmpeg流媒体播放器,支持截图、录像,支持音视频播放,支持本地文件播放、网络流播放

    本工程qt用的版本是5.8-32位,ffmpeg用的版本是较新的5.1版本。它支持TCP或UDP方式拉取实时流,实时流我采用的是监控摄像头的RTSP流。音频播放采用的是QAudioOutput,视频经ffmpeg解码并由YUV转RGB后是在QOpenGLWidget下进行渲染显示。本工程的代码有注释,可以通过本博客查看代码或者

    2024年02月03日
    浏览(97)
  • 音视频开发:Qt在视频剪辑3D桌面软件获胜, 嵌入式不敌安卓

    1 Qt Android嵌入式应用层开发方向对比   大家都知道啊,做嵌入式linux设备,一些没有屏幕,比如安防摄像头,门铃之类的,另外一些嵌入式设备是有触控屏,在触控屏上还跑应用软件的,这种比如商场各种自动售卖机,铁路卖票,银行自助服务,车载系统等。 10年前,我大学

    2024年02月09日
    浏览(41)
  • Android 音视频开发 - VideoView

    本篇文章主要介绍下Android 中的VideoView. VideoView是一个用于播放视频的视图组件,可以方便地在应用程序中播放本地或网络上的视频文件。 VideoView可以直接在布局文件中使用,也可以在代码中动态创建。 它封装了MediaPlayer和SurfaceView,提供了简单的接口来控制视频的播放和显示

    2024年04月08日
    浏览(93)
  • Android音视频开发 - MediaMetadataRetriever 相关

    MediaMetadataRetriever 是android中用于从媒体文件中提取元数据新的类. 可以获取音频,视频和图像文件的各种信息,如时长,标题,封面等. 需要申请 读写权限 . 这里我使用的是本地路径, 需要注意的是如果路径文件不存在,会抛出 IllegalArgumentException,具体的源码如下: 根据keyCode返回keyC

    2024年04月08日
    浏览(51)
  • Android音视频开发实战02-Jni

    JNI是Java Native Interface的缩写,是Java提供的一种机制,用于在Java代码中调用本地(C/C++)代码。它允许Java代码与本地代码进行交互,通过JNI,Java应用程序可以调用一些原生库或者操作系统API,以获取更好的性能和更强的功能支持。 使用JNI需要编写一些Native方法,并将其实现在

    2024年02月11日
    浏览(51)
  • Android音视频开发实战01-环境搭建

    FFmpeg 是一款流行的开源多媒体处理工具,它可以用于转换、编辑、录制和流式传输音视频文件。FFmpeg 具有广泛的应用场景,包括视频编解码、格式转换、裁剪、合并、滤镜等等。官网:https://ffmpeg.org/ FFmpeg 支持各种常见的音视频格式,例如 MP4、AVI、FLV、MOV、AAC、MP3、M4A 等等

    2024年02月10日
    浏览(52)
  • 音视频开发系列(6)——全面了解Android MediaFormat

    MediaFormat 是 Android 平台中用于描述音视频格式的类,它提供了许多 API 用于设置和获取音视频的格式信息。以下是 MediaFormat 类的主要 API: 用于创建音频和视频格式的 MediaFormat 对象。需要指定媒体类型(例如 audio/mp4a-latm 或 video/avc)、媒体的采样率、通道数、码率、帧率等信

    2024年02月01日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包