【问题标题】:Tried calling group(0) on null in youtube_extractor in flutter尝试在颤振的 youtube_extractor 中调用 group(0) 为 null
【发布时间】:2020-10-10 16:17:51
【问题描述】:

我打算制作一个 youtube 视频和 mp3 下载应用程序,为此我尝试在颤振中使用 youtube_extractor 实现。 **这是代码**

 bool _isProcessed = false;
  String _videoDownloadUrl;
  String _audioDownloadUrl;

  var extractor = YouTubeExtractor();

  TextEditingController _youtubeEditingController = TextEditingController();

  void _getDownloadLink() async {
    String youtubeUrl = _youtubeEditingController.text;
    if (youtubeUrl.isNotEmpty) {
      
      youtubeUrl =
          youtubeUrl.replaceAll("https://www.youtube.com/watch?v=", "");

      youtubeUrl = youtubeUrl.replaceAll("https://youtu.be/", "");
      print(youtubeUrl); 

      var audioUrlInfo = await extractor.getMediaStreamsAsync(youtubeUrl);

      _audioDownloadUrl = audioUrlInfo.audio.first.url; // getting the audio url
      print(_audioDownloadUrl);

      var videoUrlInfo = await extractor.getMediaStreamsAsync(youtubeUrl);

      _videoDownloadUrl = videoUrlInfo.muxed.first.url;
      print(_videoDownloadUrl);

      setState(() {
        _isProcessed = true;
      });
    }
  }

但我遇到了一些错误

 Receiver: null
E/flutter (13883): Tried calling: group(0)
E/flutter (13883): #0      Object.noSuchMethod  (dart:core-patch/object_patch.dart:51:5))
E/flutter (13883): #1      YouTubeExtractor._getVideoPlayerContextAsync 
package:youtube_extractor/youtube_extractor.dart:228
E/flutter (13883): <asynchronous suspension>
E/flutter (13883): #2      YouTubeExtractor.getMediaStreamsAsync 
package:youtube_extractor/youtube_extractor.dart:38
E/flutter (13883): #3      _YTDownloadManagerState._getDownloadLink 
package:bollywood_beats/…/YoutubeDownloader/YTDownloadManager.dart:29 

and so on

【问题讨论】:

    标签: flutter dart youtube-api flutter-layout flutter-dependencies


    【解决方案1】:

    youtube_extractor 它不再更新,但我们可以找到更好的替换包。将此包替换为 youtube_explode_dart,这样您就可以获得相同的结果。

    我刚刚在下面更新了您的代码。

    bool _isProcessed = false;
    String _videoDownloadUrl;
    String _audioDownloadUrl;
    
    final extractor = YoutubeExplode();
    
    final TextEditingController _youtubeEditingController = TextEditingController();
    
    Future<void> _getDownloadLink() async {
      String youtubeUrl = _youtubeEditingController.text;
      if (youtubeUrl.isNotEmpty) {
        youtubeUrl = youtubeUrl.replaceAll('https://www.youtube.com/watch?v=', '');
    
        youtubeUrl = youtubeUrl.replaceAll('https://youtu.be/', '');
        print(youtubeUrl);
    
        final streamManifest = await extractor.videos.streamsClient.getManifest(youtubeUrl);
    
        final audioStreamInfo = streamManifest.audioOnly.withHighestBitrate();
        _audioDownloadUrl = audioStreamInfo.url.toString();
        print(_audioDownloadUrl);
    
        final videoStreamInfo = streamManifest.muxed.withHighestBitrate();
        _videoDownloadUrl = videoStreamInfo.url.toString();
        print(_videoDownloadUrl);
    
        setState(() {
          _isProcessed = true;
        });
      }
    }
    
    

    【讨论】:

    • edit您的回答:改进文本排列,包括解释它是如何工作的以及为什么它是问题的解决方案?见How to Answer
    猜你喜欢
    • 1970-01-01
    • 2021-06-03
    • 1970-01-01
    • 2021-09-17
    • 2022-07-03
    • 1970-01-01
    • 2021-04-06
    • 2019-11-12
    • 2021-05-29
    相关资源
    最近更新 更多