ffmpeg를 사용하여 다음과 같이 큰 파일의 섹션을 잘라냅니다.
ffmpeg -i input.wmv -ss 60 -t 60 -acodec copy -vcodec copy output.wmv
-ss
부분은 잘 작동하지만이 -t
무시됩니다. 지정된 지정된 초를 올바르게 제거 -ss
하지만 사본과 함께 입력의 끝으로 계속 진행합니다.
ffmpeg를 사용하여 비디오를 다시 코딩하지 않고 비디오의 끝을 잘라내는 방법이 있습니까?
ffmpeg를 사용하여 다음과 같이 큰 파일의 섹션을 잘라냅니다.
ffmpeg -i input.wmv -ss 60 -t 60 -acodec copy -vcodec copy output.wmv
-ss
부분은 잘 작동하지만이 -t
무시됩니다. 지정된 지정된 초를 올바르게 제거 -ss
하지만 사본과 함께 입력의 끝으로 계속 진행합니다.
ffmpeg를 사용하여 비디오를 다시 코딩하지 않고 비디오의 끝을 잘라내는 방법이 있습니까?
답변:
이 -ss
옵션을 사용하여 시작 타임 스탬프 -t
를 지정하고 옵션을 사용하여 인코딩 지속 시간을 지정할 수 있습니다. 타임 스탬프는 HH:MM:SS.xxx
형식 또는 초 단위 ( s.msec
) 여야 합니다 .
다음은 처음 30 초를 클리핑 한 다음 10 초 후에 모든 것을 클리핑합니다.
ffmpeg -ss 00:00:30.0 -i input.wmv -c copy -t 00:00:10.0 output.wmv
ffmpeg -ss 30 -i input.wmv -c copy -t 10 output.wmv
참고 -t
항상 출력 옵션이며 지정해야합니다 후 -i
.
몇 가지 팁 :
-ss
after 를 사용 -i
하면 실행 속도가 느려져보다 정확한 검색이 가능합니다. 참조 : FFmpeg로 찾기-to
대신 -t
잘라내려는 타임 스탬프를 지정하는 대신 사용할 수 있습니다 . 따라서, -i <input> -ss 30 -t 10
당신 대신에 -i <input> -ss 30 -to 40
똑같은 것을 성취 할 수도 있습니다 .
ffmpeg가 -c
또는을 지원하지 않으면 -to
매우 오래된 것일 수 있습니다. 새 버전을 직접 컴파일 하거나 홈페이지에서 정적 빌드 를 다운로드하십시오 . 정말 복잡하지 않습니다.
ffmpeg -i input.wmv -c copy -t 35 output.wmv
frame= 150 fps=0.0 q=-1.0 Lsize= 264kB time=00:00:09.97 bitrate= 216.6kbits/s
-c copy
초기 검은 화면이 제거되었습니다. 자세한 내용은 답변을 참조하십시오.
다른 사람들이 언급했듯이, -ss
이전 (훨씬 더 빠름) 또는 이후 (더 정확한)를 두는 -i
것이 큰 차이를 만듭니다. ffmpeg 찾기 페이지의 "빠르고 정확한 검색"섹션에서 두 가지를 얻는 방법을 설명하고이를 사용했으며 큰 차이를 만듭니다. 기본적으로 , -ss
이전과 이후에 -i
다른 키 프레임을 만들기 위해 절단을 시작하기 전에 충분한 시간을 두십시오. 예 : Video.mp4에서 9 분 0 초에서 10 분 0 초까지 1 분 클립을 만들려면 다음을 사용하여 빠르고 정확하게 수행 할 수 있습니다.
ffmpeg -ss 00:08:00 -i Video.mp4 -ss 00:01:00 -t 00:01:00 -c copy VideoClip.mp4
첫 번째 -ss
는 8 분 0 초까지 빨리 탐색 한 다음 두 번째 -ss
는 9 분 0 초까지 정확하게 탐색 -t 00:01:00
하고 1 분 0 초 클립을 가져옵니다.
또한 " -ss
와 함께 사용하면 -c:v copy
ffmpeg가 i- 프레임에서만 사용 / 분할되도록하기 때문에 결과 비트 스트림이 고르지 않거나 재생되지 않거나 오디오 스트림과 동기화되지 않을 수 있습니다. "
즉, 비디오를 복사하거나 끊기거나 동기화되지 않은 경우에도 비디오를 다시 인코딩해야합니다. -c copy
먼저 시도해 볼 수 있지만 비디오가 빨라지면 다시 실행해야합니다.
-c:a copy
이 방법으로 같은 경고가 적용됩니다 .
나는 시작 -ss
과 함께 -c copy
0.5 초 절단을 발견했습니다 .
이를 피하려면 -c copy
(트랜스 코드를 수행 할 것임) 을 제거 해야합니다.
-c copy
했습니다.
프레임 단위로 프레임별로 미디어 플레이어에서 파일을 열고 다음 과 같은 데이터 로 AVISynth 파일 을 재생 하십시오 .
DirectShowSource(("C:\Downloads\Video\Do you want him.flv"), Pixel_Type="yuy2").Crop(0,0,-0,-0)
Subtitle("C:\Downloads\Video\Do you want him.flv", font="Arial", size=24, text_color=$ff0000, align=3)
ShowFrameNumber(scroll=true, x=336, y=27, font="Arial", size=24, text_color=$ff0000)
ShowTime(x=398, y=44, font="Arial", size=24, text_color=$ff0000)
그런 다음 정확한 시간 형식으로 잘라내십시오.
ffmpeg -i "Path\do you want him.flv" \
-ss 00:00:05.240 -to 00:00:08.360 \
-vcodec libx264 -acodec libvo_aacenc \
"Path\Do you want him1.flv"
과
ffmpeg -i "Path\do you want him.flv" \
-ss 00:00:10.240 -to 00:00:14.360 \
-vcodec libx264 -acodec libvo_aacenc \
"Path\Do you want him2.flv"
이제 다음과 같은 내용의 비디오 파일로 txt 파일을 만드십시오.
file 'C:\Downloads\Video\Do you want him1.flv'
file 'C:\Downloads\Video\Do you want him2.flv'
ffmpeg를 실행하십시오.
ffmpeg -f concat -i FileList.txt -c copy "Path\NewName_joined.flv"
나에게 -t
옵션은 효과가 없었지만 -vframes
효과가있었습니다. I #frames
-Frames를 자르고을 사용하여 비디오에 대한 GOP를 발견했기 때문에을 사용하는 것이 ffprobe
좋습니다.
나를 위해 일한 명령 줄은 다음과 같습니다.
ffmpeg -ss 60s -i input.wmv -vframes 1800 -acodec copy -vcodec copy output.wmv
그건 그렇고, -ss
앞에 두는 -i
것은 실행 시간에 큰 차이 를 만듭니다.
-vframes
(또는 -frames:v
)는 -i
출력 옵션이므로 이후에 와야 합니다.
나는 이것을 많이 언급하지는 않지만 (나는 전문가가 아니므로 어쩌면 캐치가있을 수 있습니다) 파일에 자막과 같은 다른 스트림과 챕터와 같은 다른 메타 데이터가있는 경우 자르기 / 트리밍 및 모든 스트림을 다음 명령
ffmpeg -to 60 -i input.mkv -map 0 -c copy output.mkv
함께 -map 0
사용하면 파일에있는 모든 스트림을, 그리고 함께 -c copy
모든 복사 그들은 그대로.
사용 -to
을 통해 개시 생략 -ss
제 60 처음부터 입력 영상을 절단한다.
map
특정 스트림 만 컷으로 유지하려는 경우에도 파일을 사용하는 것이 유용합니다 (파일에 모든 오디오 소스가 필요하지 않거나 일부 자막 만 필요할 수 있음).
FAT32 저장소에 저장할 수없는 큰 MKV 파일을 분할해야 할 때 이것을 사용합니다.