gpt4 book ai didi

android - 如何在android应用程序中播放.mov格式的视频文件

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:27:42 26 4
gpt4 key购买 nike

我正在开发一个android应用程序,它可以播放我们服务器上由iphone和android上传的视频,问题是iphone录制的视频是.mov格式,android不支持。我搜索了很多,但找不到任何解决方案。帮帮我。提前致谢:)

最佳答案

我会建议您将格式从 iPhone 更改为兼容格式(即使打开会更好),因为服务器上的 2 种不同格式的视频迟早会令人头疼。

如果可以,请使用 ffmpeg 重新格式化您的视频并以相同的格式将其全部保存在服务器上。

如果您不能或很难实现,您可以尝试使用 Google 的 ExoPlayer 组件。我试过像你这样的应用程序,其中设备(iPhone 和 Android)录制视频并上传到服务器。在服务器端重新格式化所有这些视频几乎是不可能的,因此我们最终决定在客户端为遗留视频应用解决方案。

https://google.github.io/ExoPlayer/

ExoPlayer 的设置比VideoView 大,但很容易完成。

    private var player: ExoPlayer = initPlayer()

private fun initPlayer(): ExoPlayer {
val bandwidthMeter = DefaultBandwidthMeter()
val videoTrackSelectionFactory = AdaptiveTrackSelection.Factory(bandwidthMeter)
val trackSelector = DefaultTrackSelector(videoTrackSelectionFactory)
return ExoPlayerFactory.newSimpleInstance(context, trackSelector)
}

fun setup() {

videoExo.setPlayer(player)
videoExo.useController = false

val dataSourceFactory = DefaultDataSourceFactory(
context,
Util.getUserAgent(context, context?.packageName), DefaultBandwidthMeter()
)

val videoSource = ExtractorMediaSource.Factory(dataSourceFactory).createMediaSource(videoUri)

player.addListener(object: Player.EventListener {
override fun onPlayerStateChanged(playWhenReady: Boolean, playbackState: Int) {
if (playbackState == Player.STATE_READY) {
startCallback()
}
}
override fun onPlaybackParametersChanged(playbackParameters: PlaybackParameters?) {}
override fun onSeekProcessed() {}
override fun onTracksChanged(trackGroups: TrackGroupArray?, trackSelections: TrackSelectionArray?) {}
override fun onPlayerError(error: ExoPlaybackException?) {}
override fun onLoadingChanged(isLoading: Boolean) {}
override fun onPositionDiscontinuity(reason: Int) {}
override fun onRepeatModeChanged(repeatMode: Int) {}
override fun onShuffleModeEnabledChanged(shuffleModeEnabled: Boolean) {}
override fun onTimelineChanged(timeline: Timeline?, manifest: Any?, reason: Int) {}
})

player.prepare(videoSource)
player.playWhenReady = true
player.repeatMode = REPEAT_MODE_ALL

}

希望对你有帮助

关于android - 如何在android应用程序中播放.mov格式的视频文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15991706/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com