2017-02-18 9 views
1

mp4 비디오의 특정 부분을 잘라내어 다시 병합하여 단일 비디오 파일을 만들고 싶습니다. 동영상의 미리보기를 애니메이션으로 만드는 것입니다.FFMPEG : 비디오의 특정 부분을 잘라내서 하나의 파일로 병합하십시오.

구체적 :

  • 1 부 : 비디오의 이러한 부분을 잘라 잘라 = 총 시간의 20 %의 시작 시간; 종료 시간 = 총 시간의 20 % + 3 초,
  • 파트 2 : 총 시간의 40 %; 40 % nof 총 시간 + 3 초
  • 파트 3 : 총 시간의 60 %; 총 시간의 60 % + 3 초
  • 파트 4 : 전체 시간의 80 %; 총 시간 + 3초

80 % (비디오는 3 분 이상 길기 때문에 일부에서 겹치는 부분이 없어야)

그렇다면 새로운 MP4 동영상 파일 이들 4 부 병합 . FFMPEG로 어떻게 그걸합니까? 내가 FFMPEG에 이러한 질문에 대한 "수퍼 유저"와 "Stackexchange"에 대한 질문에 대한 답변을 찾을

: 얻을 - 어떻게 비디오 기간

편집 : 나는이 질문에 대해 가지고로 그래서 이것은까지입니다 초에 시작/종료와 비디오 파일에서 절단 된 부분은 -Concatenate MP4 파일

을 배치

그래서 :

$ ffprobe -v error -show_entries format=duration \ 
    -of default=noprint_wrappers=1:nokey=1 -sexagesimal inputvideo.mp4 
,536,913 : 비디오의 총 시간을 가져옵니다

-sexagesimal을 사용하면 올바른 시간 형식을 사용해야합니다. 어떻게 총 시간 (20 %, 40 % ... 다음 20 % 삼초, 40에서 작업을 수행하는 방법 :

는 나도 몰라 비디오 바로 여기

ffmpeg -ss [start] -i in.mp4 -t [duration] -c copy /path/videopart[number].mp4 

을의 일부를 잘라 % 삼초 ..) 제대로 코드 라인

파일 이름을 가진 파일 videoparts.txt 만들기에 그것을 구현하는 방법 :

$ cat videoparts.txt 
file '/path/videopart1.mp4' 
file '/path/videopart2.mp4' 
file '/path/videopart3.mp4' 
file '/path/videopart4.mp4' 

그런 다음이 병합한다을 하나의 파일에 : SeekingTime Duration의 시간을 추구 '를 지정하는 유일한 방법은 정확한 시간을 제공하는 것입니다는 FFmpeg의 문서화에 따르면

$ ffmpeg -f concat -i videoparts.txt -c copy outputvideo.mp4 
+0

지금까지 시도한 적이 있습니까? – tyb

답변

1

.

ffprobe를 사용하여 총 비디오 길이를 추출하고 시작점을 계산 한 다음 해당 시작점으로 ffmpeg를 호출하는 쉘 스크립트를 작성할 수 있습니다.