首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在所有平台(包括网页)上播放音频

如何在所有平台(包括网页)上播放音频
EN

Stack Overflow用户
提问于 2019-12-27 10:28:43
回答 1查看 8.5K关注 0票数 11

当前音频插件不支持网络。假设我有一个本地音频文件或远程url,我将如何在所有平台上播放?

我找到了一个使用https://pub.dev/packages/video_player的解决方案,所以我在下面作为一个自答问答分享这个问题。

EN

回答 1

Stack Overflow用户

发布于 2019-12-27 10:28:43

Flutter的播放器插件也支持音频,所以你可以使用它。它目前支持Android、iOS和网络,并且在其他平台变得稳定的时候可能会支持它们。

以下是适合播放音频文件的视频播放器菜谱示例。我用一个mp4链接替换了mp3链接,并删除了视频所需的AspectRatio小部件。(不要忘记将播放器依赖项添加到pubspec.yaml中。)

代码语言:javascript
运行
复制
import 'dart:async';

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

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

class VideoPlayerApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Video Player Demo',
      home: VideoPlayerScreen(),
    );
  }
}

class VideoPlayerScreen extends StatefulWidget {
  VideoPlayerScreen({Key key}) : super(key: key);

  @override
  _VideoPlayerScreenState createState() => _VideoPlayerScreenState();
}

class _VideoPlayerScreenState extends State<VideoPlayerScreen> {
  VideoPlayerController _controller;
  Future<void> _initializeVideoPlayerFuture;

  @override
  void initState() {
    
    // Using an mp3 file instead of mp4.
    _controller = VideoPlayerController.network(
      'https://file-examples.com/wp-content/uploads/2017/11/file_example_MP3_700KB.mp3',
    );

    _initializeVideoPlayerFuture = _controller.initialize();

    _controller.setLooping(true);

    super.initState();
  }

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

    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Butterfly Video'),
      ),
      body: FutureBuilder(
        future: _initializeVideoPlayerFuture,
        builder: (context, snapshot) {
          if (snapshot.connectionState == ConnectionState.done) {
            // not wrapped in an AspectRatio widget
            return VideoPlayer(_controller);
          } else {
            return Center(child: CircularProgressIndicator());
          }
        },
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: () {
          setState(() {
            if (_controller.value.isPlaying) {
              _controller.pause();
            } else {
              _controller.play();
            }
          });
        },
        child: Icon(
          _controller.value.isPlaying ? Icons.pause : Icons.play_arrow,
        ),
      ),
    );
  }
}

要支持web,还需要添加网站依赖项。

代码语言:javascript
运行
复制
dependencies:
  video_player: ^0.10.4
  video_player_web:
    git:
      url: git://github.com/flutter/plugins.git
      path: packages/video_player/video_player_web

请注意,这将不会在未来使用git。参见解释这里

更新:实际上是在没有指定video_player_web的情况下在web上工作。

更新2:阅读这篇文章以获得解决方案。

更新3音频看起来是一个很好的解决方案。

更新4音频是一个很好的解决方案。我正在安卓,iOS,网络和macOS上使用它。

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59499342

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档