기술나눔

FFmpeg를 사용하여 Android에서 카메라 비디오를 녹화하고 로컬 MP4 파일에 저장

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

모바일 애플리케이션 개발 시 장치의 카메라를 사용하여 비디오를 녹화해야 하는 경우가 있으며, 녹화 프로세스 중에 비디오의 품질, 형식 및 지속 시간을 정확하게 제어할 수 있기를 원합니다. 강력한 멀티미디어 처리 도구인 FFmpeg는 이러한 요구를 충족하는 데 도움이 되는 다양한 기능과 옵션을 제공합니다.

종속성 추가

Android 플랫폼에서는 다음을 사용할 수 있습니다. com.arthenica:mobile-ffmpeg-full 이 목표를 달성하기 위해 도서관.

implementation 'com.arthenica:mobile-ffmpeg-full:4.4'
  • 1

창고 주소:https://github.com/tanersener/mobile-ffmpeg

ffmpeg의 다른 용도에 대해서는 위의 주소 문서 예를 참조하세요.

FFmpeg를 사용하여 비디오를 녹화하는 명령

FFmpeg.execute("-f android_camera -video_size 1280x720 -i 0:0 -r 25 -b:v 1.5M -pixel_format yuv420p -t 00:01:00 /sdcard/recorded_video.mp4");
  • 1

매개변수의 의미와 기능:

  • -f android_camera: 입력 형식을 android_camera로 지정하여 FFmpeg에 Android 장치의 카메라에서 비디오 스트림을 가져오도록 지시합니다.

  • -video_size 1280x720 : 영상 입력 해상도를 1280x720픽셀로 설정하세요. 필요에 따라 카메라가 지원하는 해상도에 따라 다릅니다.

  • -i 0:0 : 입력 파일이나 장치를 지정합니다. 여기서 0:0은 FFmpeg가 Android 시스템의 기본 카메라에서 비디오 입력을 받는다는 의미입니다. 0은 장치 번호(일반적으로 카메라)를 나타내고, 0은 입력 스트림 인덱스(일반적으로 비디오 스트림)를 나타냅니다.

  • -r 25 : 출력 영상의 프레임 속도를 초당 25프레임(fps)으로 설정합니다. 비디오가 초당 표시하는 프레임 수를 결정합니다.

  • -b:v 1.5M : 비디오의 비디오 비트 전송률을 1.5Mbps(초당 1.5메가비트)로 설정합니다. 비트 전송률은 비디오의 품질과 파일 크기를 결정하며, 일반적으로 비트 전송률이 높을수록 비디오 품질이 높아지고 파일 크기가 커집니다.

  • -pixel_format yuv420p : 픽셀 형식을 YUV420P로 설정합니다. YUV420P는 비디오 인코딩 및 전송에 널리 사용되는 픽셀 형식으로, Y는 휘도 성분(Luma)을 나타내고 U와 V는 채도 성분(Chroma)을 나타냅니다.

  • -t 00:01:00 : 녹화 영상 길이를 1분(00:01:00)으로 설정하세요. FFmpeg는 지정된 시간이 지나면 녹음을 중지합니다.

  • /sdcard/recorded_video.mp4 : 출력 파일의 경로와 파일 이름을 지정합니다. 여기서 영상은 MP4 형식의 파일로 저장되며 경로는 /sdcard/recorded_video.mp4 입니다. 필요에 따라 실제 경로를 작성하고 읽기 및 쓰기 권한이 있는지 확인하세요.

알아채다

FFmpeg에서 매개변수의 순서를 마음대로 변경하지 마십시오. 그렇지 않으면 매개변수 설정이 유효하지 않게 되고 다음과 같은 기본 매개변수가 사용됩니다. -video_size 1280x720 배치된 경우-i 0:0그 이후에는 안될수도 있으니 꼭 기억해주세요!

-t 00:01:00 1분간 녹화를 하고 시간이 지나면 자동으로 종료됩니다. 물론, 계속 녹화하고 싶다면 이 매개변수를 제거하고 종료하고 싶을 때 호출하면 됩니다.FFmpeg.cancel그게 다야

-b:v 1.5M 필요에 따라 유연하게 구성할 수 있습니다. 모든 것은 실제 조건에 따라 달라집니다. 값이 클수록 적절한 값을 찾으면 됩니다.

🆗,就这些雷,我替大家踩了,下班。