gpt4 book ai didi

android - 在 Flutter 中播放 Vimeo 视频

转载 作者:行者123 更新时间:2023-12-03 02:39:27 30 4
gpt4 key购买 nike

我正在尝试玩 vimeo 视频 在 flutter 应用程序中使用 video_player插件但得到 没有成功 ,它抛出了一堆错误。
请帮助我如何在 flutter 应用程序中实现这一点?使用 webview 或任何插件等?也许代码 fragment 对我有很大帮助!

这是我的代码 fragment

import 'package:video_player/video_player.dart';
import 'package:flutter/material.dart';

void main() => runApp(VideoApp());

class VideoApp extends StatefulWidget {
@override
_VideoAppState createState() => _VideoAppState();
}

class _VideoAppState extends State<VideoApp> {
VideoPlayerController _controller;

@override
void initState() {
super.initState();
_controller = VideoPlayerController.network(
'https://vimeo.com/{some-video-id}')
..initialize().then((_) {
// Ensure the first frame is shown after the video is initialized, even before the play button has been pressed.
setState(() {});
});
}

@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Video Demo',
home: Scaffold(
body: Center(
child: _controller.value.initialized
? AspectRatio(
aspectRatio: _controller.value.aspectRatio,
child: VideoPlayer(_controller),
)
: Container(),
),
floatingActionButton: FloatingActionButton(
onPressed: () {
setState(() {
_controller.value.isPlaying
? _controller.pause()
: _controller.play();
});
},
child: Icon(
_controller.value.isPlaying ? Icons.pause : Icons.play_arrow,
),
),
),
);
}

@override
void dispose() {
super.dispose();
_controller.dispose();
}
}

调试控制台中的错误 -

E/AccessibilityBridge(28662): VirtualView node must not be the root node. E/ExoPlayerImplInternal(28662): Source error. E/ExoPlayerImplInternal(28662): com.google.android.exoplayer2.upstream.HttpDataSource$InvalidResponseCodeException: Response code: 404 E/ExoPlayerImplInternal(28662): at com.google.android.exoplayer2.upstream.DefaultHttpDataSource.open(DefaultHttpDataSource.java:300) E/ExoPlayerImplInternal(28662): at com.google.android.exoplayer2.upstream.StatsDataSource.open(StatsDataSource.java:83) E/ExoPlayerImplInternal(28662): at com.google.android.exoplayer2.source.ExtractorMediaPeriod$ExtractingLoadable.load(ExtractorMediaPeriod.java:885) E/ExoPlayerImplInternal(28662): at com.google.android.exoplayer2.upstream.Loader$LoadTask.run(Loader.java:381) E/ExoPlayerImplInternal(28662): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167) E/ExoPlayerImplInternal(28662): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641) E/ExoPlayerImplInternal(28662): at java.lang.Thread.run(Thread.java:919)

最佳答案

您不能使用 Vimeo URL https://vimeo.com/{some-video-id} . VideoPlayerController需要可流式传输的视频 URL。

Solution 1



Vimeo 所需的高级帐户
  • 转至https://vimeo.com/manage/并选择要播放的视频
  • 从左侧面板中选择分布选项卡。
  • 选择视频文件链接
  • 选择播放视频.. 共同支付视频链接(它的 mp4 可偷视频链接).. 使用此 URL 获取 VideoPlayerController .

    enter image description here

  • Solution 2



    视频链接每 15 分钟过期一次
  • 调用 API https://player.vimeo.com/video/{video_id}/config您将收到 JSON 响应。
    enter image description here
  • 渐进式对象,您将获得 mp4 视频 url。

  • Solution 3


  • 将视频 Controller 替换为 webivew给这个网址
    https://vimeo.com/ {some-video-id} ..启用 javascript、视频
    将在 webview 中播放。
  • 关于android - 在 Flutter 中播放 Vimeo 视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60451825/

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