【问题标题】:How can I play online radio streaming in Flutter?如何在 Flutter 中播放在线广播?
【发布时间】:2019-06-01 23:12:00
【问题描述】:

我正在开发想要播放直播广播的广播应用程序。我有一个 url,我将使用它来播放广播和播放。如何使用此 url 播放在线流媒体?这是我的热气腾腾的网址:

"streams" : -[
-{
"stream" : http://media.powerfm.se:80/high,
"bitrate" : 160,
"content_type" : ?,
"status" : 1,
"listeners" : 0
},
-{
"stream" : fffff,
"bitrate" : 0,
"content_type" : ?,
"status" : 0,
"listeners" : 0
 }

【问题讨论】:

  • 你找到解决办法了吗?我也在寻找同样的东西。
  • 很遗憾没有

标签: dart flutter audio-streaming radio


【解决方案1】:

我知道我对此有点晚了,但请查看Fluttery Audio。在此过程中我发现了一些建议,

  1. Android 设备并不完全相同,其中一些可以与 aac steams 兼容,而另一些则不能。
  2. 对于 ios 设备,如果不是 https 流,则需要将此代码块添加到 .plist 文件中。
    <key>NSAppTransportSecurity</key>
    <dict>
        <key>NSAllowsArbitraryLoads</key>
        <true/>
    </dict>
  1. Android 可以在后台播放音频 iOS 不能,直到对库进行更改。

【讨论】:

    【解决方案2】:

    据我了解,Flutter 无法处理此用例,您必须通过所需平台的插件以本机代码处理音频流。

    This seems to be a popular plugin that handles audio,但它是否处理流以及如何将它用于您的特定用例,是一个不同的问题。

    【讨论】:

      【解决方案3】:

      Flutter 有一个名为 Flutter Radio https://pub.dev/packages/flutter_radio 的插件。 设置非常简单。

      只需创建一个新的 Flutter 项目,然后在 pubspec.yaml 文件中添加 flutter_radio 作为依赖项。将以下代码粘贴到您的 main.dart 中,用您的 url 替换 url 字符串,然后在您的模拟器和 wola 上构建并运行该项目!

      import 'package:flutter/material.dart';
      import 'dart:async';
      
      import 'package:flutter_radio/flutter_radio.dart';
      
      void main() => runApp(new MyApp());
      
      class MyApp extends StatefulWidget {
        @override
        _MyAppState createState() => new _MyAppState();
      }
      
      class _MyAppState extends State<MyApp> {
      
        String url = "https://ia802708.us.archive.org/3/items/count_monte_cristo_0711_librivox/count_of_monte_cristo_001_dumas.mp3";
      
        @override
        void initState() {
          super.initState();
          audioStart();
        }
      
        Future<void> audioStart() async {
          await FlutterRadio.audioStart();
          print('Audio Start OK');
        }
      
        @override
        Widget build(BuildContext context) {
          return new MaterialApp(
            home: new Scaffold(
              appBar: new AppBar(
                title: const Text('Audio Plugin Android'),
              ),
              body: new Center(
                child: Column(
                  children: <Widget>[
                    FlatButton(
                      child: Icon(Icons.play_circle_filled),
                      onPressed: () => FlutterRadio.play(url: url),
                    ),
                    FlatButton(
                      child: Icon(Icons.pause_circle_filled),
                      onPressed: () => FlutterRadio.pause(),
                    )
                  ],
                )
              ),
            ),
          );
        }
      }
      

      【讨论】:

      • 这在本地有效,但在构建应用程序后无效
      猜你喜欢
      • 2011-06-05
      • 1970-01-01
      • 2020-10-13
      • 2016-04-28
      • 2012-08-04
      • 1970-01-01
      • 2012-01-07
      • 1970-01-01
      • 2021-01-30
      相关资源
      最近更新 更多