[Flutter]-오늘의 에러(Daum api 동영상 재생 에러)

min_chan·2023년 6월 19일
0
post-thumbnail

문제점

  • 다음 api의 동영상 검색을 사용해 url클릭 시 동영상을 재생 하려고 했는데 다음과 같은 에러가 발생했다.


작성 코드

VideoPage.dart


               return ListTile(
                 title: Text(videoData['title']),
                 subtitle: GestureDetector(
                   child: Text(videoData['url']),
                   onTap: () {
                     Navigator.push(
                       context,
                       MaterialPageRoute(
                         builder: (context) =>
                             VideoPlayPage(url: videoData['url']),

VideoPlayPage.dart

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

class VideoPlayPage extends StatefulWidget {
  const VideoPlayPage({required this.url, super.key});
  final String url;

  
  State<VideoPlayPage> createState() => _VideoPlayPageState();
}

class _VideoPlayPageState extends State<VideoPlayPage> {
  late VideoPlayerController videoPlayerController;

  void update() => setState(() {});
  
  void initState() {
    super.initState();
    videoPlayerController = VideoPlayerController.network(widget.url)
      ..initialize().then((_) {
        update();
      });
    // initializeVideoPlayer = videoPlayerController.initialize().then((_) {
    //   update();
    //   videoPlayerController.play();
    // });
  }

  
  void dispose() {
    videoPlayerController.dispose();
    super.dispose();
  }

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

에러 메시지 & 사진

Video player had error com.google.android.exoplayer2.ExoPlaybackException: Source error


에러 원인

  • 다음 검색 api의 동영상 url은 YouTube동영상을 제공하는데 ExoPlayer는 YouTube 동영상 재생에 적합하지 않다


해결 방법

  • youtube_player_flutter 라이브러리를 사용하면 문제를 해결할 수 있다.

profile
github.com/kangminchan99

0개의 댓글