자바 와 ffmpeg 를 사용 하여 오디 오 와 동 영상 을 합성 하 는 조작 방법

FFmpeg 는 무료 로 플랫폼 을 뛰 어 넘 는 동 영상 과 오디 오 스 트림 방안 으로 자유 소프트웨어 에 속 하 며 LGPL 또는 GPL 허가증(선택 한 구성 요소 에 따라)을 사용 합 니 다.그것 은 녹음,전환,흐 르 는 음성 영상의 완전한 해결 방안 을 제공 했다.이 는 매우 선진 적 인 오디 오/비디오 디 코딩 라 이브 러 리 libavcodec 를 포함 하고 있 으 며,높 은 이식 성과 디 코딩 품질 을 확보 하기 위해 libavcodec 에 서 는 많은 codec 가 처음부터 개발 되 었 다.
   FFmpeg 는 디지털 오디 오,동 영상 을 기록 하고 변환 하 며 스 트림 으로 전환 할 수 있 는 오픈 소스 컴퓨터 프로그램 이다.그것 은 현재 앞장 서 는 음/비디오 인 코딩 라 이브 러 리 libavcodec 를 포함한다.FFmpeg 는 Linux 에서 개 발 된 것 이지 만 윈도 우 를 포함 한 대부분의 운영 체제 에서 컴 파일 할 수 있 습 니 다.이 프로젝트 는 Fabrice Bellard 가 시 작 했 으 며 현재 Michael Niedermayer 가 진행 하고 있다.다양한 동 영상 형식 간 의 상호 전환 을 쉽게 실현 할 수 있다.예 를 들 어 촬영 한 동 영상 avi 등 을 현재 동 영상 사이트 에서 사용 하 는 flv 형식 으로 전환 할 수 있다.
주요 기능:
1.비디오 포맷 변환 기능
ffmpeg 영상 변환 기능.영상 형식 변환,예 를 들 어 여러 가지 영상 형식 을 flv 형식 으로 변환 할 수 있 으 며,영상 신호 변환 이 아 닙 니 다.  。
ffmpeg 는 다양한 동 영상 형식 간 의 상호 전환(wma,rm,avi,mod 등)을 쉽게 실현 할 수 있다.예 를 들 어 촬영 한 동 영상 avi 등 을 현재 동 영상 사이트 에서 사용 하 는 flv 형식 으로 바 꿀 수 있다.
2.영상 캡 처 기능
선택 한 동 영상 에 대해 서 는 지정 한 시간의 미리 보기 그림 을 캡 처 합 니 다.비디오 캡 처,정적 그림 과 동적 그림 을 가 져 오고 gif 파일 을 잡 는 것 을 권장 하지 않 습 니 다.캡 처 한 gif 파일 이 커서 재생 이 원활 하지 않 습 니 다.
3.동 영상 에 워 터 마크 기능 추가
ffmpeg 동 영상 으로 워 터 마크(로고)를 추가 합 니 다.
자,오늘 본문 을 시작 하 겠 습 니 다.
제3자 도 구 를 빌려 ffmpeg 합성 영상
수요:작은 터미널 에서 동 영상 을 다운로드 하 였 으 나 컴퓨터 에 넣 어 보 았 습 니 다.제 가 닦 았 습 니 다.음성 파일 과 동 영상 파일 은 분리 되 었 습 니 다.
  • ffmpeg 를 정확하게 설치 하고 환경 변 수 를 설정 합 니 다
  • 자바 코드 테스트
    里面是视频
    다운 받 은 영상 과 오디 오 가 들 어 있 습 니 다.
    在这里插入图片描述
    나 는 코드 를 재 귀 했 습 니 다.정확 한 ffmpeg 명령 과 자바 로 ffmpeg.exe 프로그램 을 호출 하면 합성 할 수 있 습 니 다.
    
    package com.lovely.test;
    
    import java.io.BufferedReader;
    import java.io.File;
    //import java.io.FileInputStream;
    //import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    import java.util.UUID;
    /**
     * 
     *          
     * 
     */
    public class TestFfmpeg {
     // FFmpeg   
     private static final String FFMPEG_PATH = "D:\\softWare\\tools\\joyTool\\ffmpeg\\bin\\ffmpeg.exe";
     public static void main(String[] args) {
     
     String path = "E:\\StudyVedio\\ComputerScience\\US";
     try {
     getAll(path);
     } catch (Exception e) {
     e.printStackTrace();
     }
     }
     /**
     *         
     * @param videoInputPath
     *          
     * 
     * @param audioInputPath
     *         
     * 
     * @param videoOutPath
     *                  
     */
     public static void convetor(String videoInputPath, String audioInputPath, String videoOutPath)
     throws Exception {
     Process process = null;
     InputStream errorStream = null;
     InputStreamReader inputStreamReader = null;
     BufferedReader br = null;
     try {
     // ffmpeg  
     String command = FFMPEG_PATH + " -i " + videoInputPath + " -i " + audioInputPath
      + " -c:v copy -c:a aac -strict experimental " +
      " -map 0:v:0 -map 1:a:0 "
      + " -y " + videoOutPath;
     
     process = Runtime.getRuntime().exec(command);
     errorStream = process.getErrorStream();
     inputStreamReader = new InputStreamReader(errorStream);
     br = new BufferedReader(inputStreamReader);
     //          
     String str = "";
     while ((str = br.readLine()) != null) {
     System.out.println(str);
     }
     process.waitFor();
     } catch (IOException e) {
     e.printStackTrace();
     } finally {
     if (br != null) {
     br.close();
     }
     if (inputStreamReader != null) {
     inputStreamReader.close();
     }
     if (errorStream != null) {
     errorStream.close();
     }
     }
     }
     //     
     public static void getAll(String path) throws Exception {
     String videoInputPath = "";
     String audioInputPath = "";
     String videoOutPath = "";
     
     File file = new File(path); 
     if (file.isDirectory()) {
     File[] files = file.listFiles();
     for (File f : files) {
     getAll(f.getPath());
     if (f.isFile()) { 
      
      if (f.getName().endsWith(".m4s")) {
     
      if (f.getName().endsWith("audio.m4s")) 
      audioInputPath = file.getPath() + "\\audio.m4s";
       if (f.getName().endsWith("video.m4s"))
      videoInputPath = file.getPath() + "\\video.m4s";
      videoOutPath = file.getPath() + "\\all.mp4";
      
     
      if (!videoInputPath.equals(""))
      convetor(videoInputPath, audioInputPath, videoOutPath);
      
      }
      
     } 
     
     }
     
     }
     }
    }
    나 는 마지막 으로 몇 분 동안 30 개의 완전한 동 영상 을 합성 했다.귀환 의 강 함 을 체득 하 다.
    총결산
    자바 와 ffmpeg 를 사용 하여 오디 오 와 동 영상 을 합성 하 는 방법 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.자바 ffmpeg 오디 오 합성 동 영상 콘 텐 츠 는 예전 의 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 응원 부 탁 드 리 겠 습 니 다!

    좋은 웹페이지 즐겨찾기