如何在 Flutter 中播放在线广播?

Posted

技术标签:

【中文标题】如何在 Flutter 中播放在线广播?【英文标题】:How can I play online radio streaming in 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
 

【问题讨论】:

你找到解决办法了吗?我也在寻找同样的东西。 很遗憾没有 【参考方案1】:

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

    android 设备并不完全相同,其中一些可以与 aac steams 兼容,而另一些则不能。 对于 ios 设备,如果不是 https 流,则需要将此代码块添加到 .plist 文件中。
    <key>NSAppTransportSecurity</key>
    <dict>
        <key>NSAllowsArbitraryLoads</key>
        <true/>
    </dict>
    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(),
              )
            ],
          )
        ),
      ),
    );
  

【讨论】:

这在本地有效,但在构建应用程序后无效

以上是关于如何在 Flutter 中播放在线广播?的主要内容,如果未能解决你的问题,请参考以下文章

如何从在线下载视频并将其存储在本地设备上,然后使用视频播放器在 Flutter 应用程序上播放视频?

Flutter 视频播放器,如 Youtube、Amazon Prime

如何在 Android 中播放在线广播流 url。如何在 android 中播放 .pls 广播流 url

如何获取音频文件的长度而不在 Flutter/Dart 中播放

如何在 Flutter 中让任务在后台运行

如何在 Flutter 中保持屏幕关闭的视频播放?