태그 보관물: ffmpeg

ffmpeg

비디오를 일괄 변환하는 가장 빠른 방법 (일괄 또는 단일)? 내가 생성해야하는 형식은 다음과 같습니다. WMV (

비디오 인코더에 대한 많은 질문이 있다는 것을 알고 있지만 워크 플로 / 효율에 대한 질문입니다.

하루 종일 일을하려면 비디오를 자주 임의의 형식 (대개 AVI , M4V 등)에서 변환하고이를 변환하여 인터넷에서 사용할 수있는 효율적인 파일로 압축하여 업로드해야합니다. 내가 생성해야하는 형식은 다음과 같습니다.

몇 가지 유스 케이스 (동일 소스, 1080p 또는 720p 로 변환)에 대한 공통 템플릿을 작성 하고 신속하게 처리하고 대기열에 넣을 수 있어야합니다.

우분투 에서이 프로세스를 가장 잘 수행하는 방법에 대한 아이디어가 있습니까?



답변

명령 줄을 선호한다면 ffmpeg(또는 handbrake-cli)를 사용할 수 있습니다 .

MP4

최신 버전을 사용한다고 가정합니다 ffmpeg.

ffmpeg -i input -c:v libx264 -crf 23 -preset medium -c:a aac -b:a 128k \
-movflags +faststart -vf scale=-2:720,format=yuv420p output.mp4
  • -crf: 품질. 범위는 로그 0 (무손실) ~ 51 (최저 품질)입니다. 기본은 23입니다. 주관적인 제정 범위는 ~ 18-28 정도입니다. 여전히 허용 가능한 품질을 제공하는 가장 높은 값을 사용하십시오. YouTube 등으로 업로드하기 위해 비실용적으로 큰 입력을 다시 인코딩하는 경우 이러한 비디오 서비스가 다시 인코딩되므로 17 또는 18의 값을 시도하십시오.

  • -preset: 인코딩 속도. 사전 설정 속도가 느리면 압축률 (파일 크기 당 품질)은 향상되지만 속도는 느려집니다. 초고속, 초고속, 매우 빠름, 빠름, 빠름, 중간 (기본값), 느리게, 느리게, 매우 느리게 인내심이 가장 느린 것을 사용하십시오.

  • -movflags +faststart: 점진적 다운로드보기의 경우 비디오를 완전히 다운로드하기 전에 비디오를 재생할 수 있습니다. 비디오를 호스팅하는 경우 유용하며, YouTube와 같은 비디오 서비스에 업로드하는 경우 불필요한 것입니다.

  • -vf scale=-2:720,format=yuv420p: 스케일포맷 비디오 필터를 사용하는 필터 그래프 . 높이를 720 픽셀로 조정하고 화면비를 유지하는 너비를 자동으로 선택한 다음 픽셀 형식이 멍청한 플레이어와 호환되는지 확인하십시오.

  • -b:a 128k: 오디오 비트 전송률. ffmpeg구식 인 경우 -strict experimental를 사용 하여 추가 해야합니다 -c:a aac.

MOV

MOV 및 MP4 파일에는 동일한 비디오 및 오디오 형식이 포함되어 있기 때문에 MP4를 인코딩하고 다시 인코딩하는 대신 리스트 ( 스트림 복사 모드 사용) 하여 MOV를 만들 수 있습니다 .

ffmpeg -i input.mp4 -codec copy output.mov

WMV

FFmpeg는 WMV 7 및 8 만 지원합니다. 버전 9의 오픈 소스 인코더를 알지 못합니다.

$ ffmpeg -encoders | grep -i windows
[...]
 V..... = Video
 A..... = Audio
 ------
 V..... wmv1                 Windows Media Video 7
 V..... wmv2                 Windows Media Video 8
 A..... wmav1                Windows Media Audio 1
 A..... wmav2                Windows Media Audio 2

이 인코더에 익숙하지 않으므로 테스트되지 않은 예만 제공 할 수 있습니다.

ffmpeg -i input -c:v wmv2 -b:v 1024k -c:a wmav2 -b:a 192k output.wmv

ffmpeg 받기

ffmpegLinux 빌드를 다운로드 하거나 단계별 ffmpeg 컴파일 안내서 에 따라 빌드를 사용자 정의 할 수 있습니다.

bash “for loop”를 사용하여 배치 인코딩 수행

디렉토리의 모든 비디오를 인코딩하려면 :

$ mkdir encoded
$ for f in *.avi; do ffmpeg -i "$f" -c:v libx264 -crf 23 -preset medium \
  -c:a aac -b:a 128k -movflags +faststart -vf scale=-2:720,format=yuv420p \
  "encoded/${f%.avi}.mp4"; done

참조


답변

HandBrake를 시도 하십시오 .

HandBrake는 거의 모든 형식의 비디오를 널리 지원되는 최신 코덱으로 변환하는 도구입니다. 설치하려면 키보드에서 Ctrl+ Alt+ T를 눌러 터미널을 엽니 다. 열리면 아래 명령을 실행하십시오.

sudo add-apt-repository ppa:stebbins/handbrake-releases
sudo apt-get update
sudo apt-get install handbrake

답변