본문 바로가기
TIL

20230919 TIL

by 김빵그 2023. 9. 19.

Today 요약

[]  flutter 강의 1개

[] dart 강의 11강 1개

[] 프로그래머스  코딩테스트  1문제


배운 점

1. flutter camera 비디오 녹화후 프리뷰 확인하기

await _cameraController.prepareForVideoRecording();
Future<void> _startRecording(TapDownDetails _) async {
    if (_cameraController.value.isRecordingVideo) return;
    await _cameraController.startVideoRecording();
  }

Future<void> _stopRecording() async {
    if (!_cameraController.value.isRecordingVideo) return;
    final video = await _cameraController.stopVideoRecording();
    // print(file.name);
    // print(file.path);
	 Navigator.push(
      context,
      MaterialPageRoute(
        builder: (context) => VideoPreviewScreen(video: video),
      ),
    );
  }

1-1 _cameracontroller 

  • 카메라와 관련된 작업을 제어하기 위한 컨트롤러 

1-2 _startRecording

  • if 조건문은 이미 녹화가 진행중인 경우 아무작업도 수행하지 않도록 하는 것 isRecordingVideo 속성은 현재 비디오 녹화가 진행중인지 여부를 확인하는데 사용한다
  • startVideoRecording()을 호출하여 비디오 녹화를 시작한다 비동기로 호출되므로 await 키워드를 사용하여 비디오 녹화가 시작되고 완료될 때까지 기다린다

1-3 _stopRecording

  • 비디오 녹화를 중지하고 저장하는데 사용
  • if 녹화가 진행중이 아닌 경우 아무작업도 수행하지 않는다
  • stopVideoRecording()을 호출하여 비디오 녹화 중지하고 녹화된 비디오를 반환하여 video 변수에 저장

1-4 VideoPreview

class VideoPreviewScreen extends StatefulWidget {
  final XFile video;
  const VideoPreviewScreen({
    super.key,
    required this.video,
  });

  @override
  State<VideoPreviewScreen> createState() => _VideoPreviewScreenState();
}

class _VideoPreviewScreenState extends State<VideoPreviewScreen> {
  late final VideoPlayerController _videoPlayerController;
  Future<void> _initVideo() async {
    _videoPlayerController =
        VideoPlayerController.file(File(widget.video.path));

    await _videoPlayerController.initialize();
    await _videoPlayerController.setLooping(true);
    await _videoPlayerController.play();
    setState(() {});
  }

  @override
  void initState() {
    super.initState();
    _initVideo();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: _videoPlayerController.value.isInitialized
          ? VideoPlayer(_videoPlayerController)
          : null,
    );
  }
}
  • _videoPlayerController : 비디오 파일을 재생하는데 사용

초기화

  • _videoPlayerController : 비디오 파일로 초기화 
  • await _videoPlayerController.initialize() 를 사용하여 비디오 컨트롤러를 초기화, 비디오를 재생하기 전에 반드시 초기화해야한다
  • setLooping(true) : 끝날 때  자동으로 루프되도록 설정
  • play() : 호출하여 비디오를 재생
  • setState : ui 업데이트 상태변경시키기

 


후후 

어제  배운 애니메이션 flutter 오늘 데모 버전 앱에 적용했다 너무나도 뿌듯 ㅎㅎ

'TIL' 카테고리의 다른 글

20230927 TIL  (0) 2023.09.27
20230925 TIL  (0) 2023.09.25
20230918 TIL :: 코로나에 진 몸뚱아리  (0) 2023.09.18
20230912 TIL :: 아무생각없이 공부만 한 날  (0) 2023.09.12
20230911 TIL : 업보빔 맞는 중  (0) 2023.09.11