이 질문에는 이미 답변이 있습니다.
현재 .flv 플래시 파일을 .webm 및 .mp4 파일로 변환하여 HTML5 비디오 플레이어와 함께 사용하고 있습니다.
_
WEBM 에이 ffmpeg 명령을 사용합니다. ffmpeg -i filename.flv -vcodec libvpx -acodec libvorbis filename.webm
이 기능은 훌륭하게 작동 하며 파일 크기는 상대적으로 동일합니다 (불필요).
_
MP4의 경우 다음을 사용하고 있습니다. ffmpeg -i filename.flv -sameq -ar 22050 filename.mp4
.mp4 fine으로 변환하고 품질 손실을 방지하지만 파일 크기는 거의 세 배입니다.
품질을 잃지 않고 파일 크기를 크게 막지 않으면 서 어떤 ffmpeg 공식을 사용하여 MP4로 변환 할 수 있습니까?
답변
ffmpeg -i filename.flv -c:v libx264 -crf 19 -strict experimental filename.mp4
사용되는 비디오 코덱을 지정해야합니다. 명령에서 당신은 지정하지 -vcodec
나 -c:v
이렇게는 FFmpeg은 MP4에 대한 기본 코덱 (사용 mpeg4
아주 좋은 압축 효율이 없음). 대신 libx264를 사용하고 품질 수준 인 CRF를 설정하십시오 (낮을수록 좋음, 기본값은 23, 정상 값은 18-28 임).
libx264로 인코딩하는 것은 복잡한 일이므로 H.264 인코딩 안내서를 찾아보십시오 .
또한 -strict experimental
다음과 같이 얻을 수도 있습니다. “인코더 ‘aac’는 실험적이지만 실험적인 코덱은 사용할 수 없습니다. 사용하려면 ‘-strict -2’를 추가하십시오.”
답변
이 명령은 재 인코딩없이 컨테이너 만 변경합니다.
ffmpeg -i input.flv -codec copy output.mp4
답변
avconv
와 ffmpeg
본질적으로 같은 것입니다. [매우 최근에 약간의 발산이 있지만 직접 컴파일하면 집에 쓸 글이 많지 않습니다. ffmpeg
예를 들어 우분투 저장소에 제공된 파일은 오래되었으며 해당 비디오 크기로 고통받습니다. 비디오가 잘못된 비율을 가지고 있다고 말하지만, ffmpeg
컴파일 가이드 를 읽고 git에서 컴파일하려는 경우 대부분의 OS에서 제공되는 이전 버전의 문제는 없습니다. 참조 감가 상각 경고는 avconv
그들이 시도하고 대체 할 새로운 폴더의 유틸리티를 만든 사실을 말하고 ffmpeg
, 그러나입니다 SO 광범위하게 그들은 우리가에서 소프트 링크를 만드는 모든 것을 차단하려고해도 것을 사용 avconv
에ffmpeg
어쨌든 그들은 일을 멈추고 버리지 않을 것입니다.]]
사용하는 것은 나쁜 일이 아닙니다. avconv
난 본질적으로 빈 메시지 인 감가 상각 경고를 언급 한 답글을 보았습니다 .ffpmeg에 대한 대안은 여기에 더 현실적인 avconv를 시도 할 수 있습니다.
avconv -i inputfile.flv -map 0 -c:v libx264 -c:a copy outputfile.mp4
정말 같은
ffmpeg -i filename.flv -vcodec libvpx -acodec libvorbis
본질적으로 첫 번째에는 짧은 옵션을 사용하고 두 번째에는 더 다양한 옵션을 사용합니다.
ALSO -map 0
는 오디오 트랙을 참조하므로 mp4a
다중 오디오 트랙을 잘 처리 할 수있는 것을 사용하는 경우 모든 오디오 스트림을 결과 파일로 복사하기 위해 이것을 해제 할 수 있습니다. 동일한 파일에서 여러 오디오 트랙을 지원하지 않는 코덱을 사용하는 경우에만 필요한 경우 필요한 오디오를 모두 매핑하려는 것이 아닙니다. 물론 사용되는 공간을 최소화하려는 경우 파일 크기를 약간만 줄 이도록 하나만 지정할 수 있습니다. [오디오는 비디오 트랙 크기의 1/3과 같으며 관대합니다].
-c:v = codec(video)
그래서 : -c:v libx264
사용하는 것과 같습니다 : -vcodec libx264
FYI; 이 예제와 동일합니다 :-c:v copy = -vcodec copy
또한 FLV의 경우 flv 파일은 비디오 또는 오디오 용 코덱을 여러 개 포함 할 수있는 컨테이너라는 점에서 avi와 동일합니다. 비디오 및 / 또는 오디오 스트림을 복사하거나 새로운 것에서 무엇이든 파일을 변환하기 전에 파일 자체 내에서 무엇이 사용되는지 확인하려면 먼저 선택한 미디어 검사 유틸리티를 사용하십시오. 따라서 한 FLV에 가장 적합한 명령은 다른 FLV에 대해 동일하지 않을 수도 있습니다 (물론 동일한 소스에서 여러 FLV를 가져 오는 경우 동일한 방식으로 인코딩되지만 보장되는 것은 아닙니다).
nit pick을 시도하지 않고 웹 검색 에서이 문제를 극복하고 사람들을 위해 물건을 명확하게 설명하려고했습니다.
이 답변 아래에 회신에 대해이 답변이 표시되는 것처럼 YES를 실행하는 ffmpeg는 항상이 메시지를 게시 할 것입니다.이 두 유틸리티는 여전히 거의 동일한 유틸리티이며 차이가 거의 없기 때문입니다. 거의 모든 경우에 두 명령을 사용하여 정확히 동일한 결과를 얻어야합니다. 이것이 반드시 전체 코드를 다시 변환해야하는 것은 아닙니다. 왜 그렇습니까? A, 필요하지 않은 경우 시간을 절약하고 B 파일을 이미 비디오 코덱으로 압축 한 파일을 다시 트랜스 코딩하는 경우 이미 압축 된 내용에 대해 압축 루틴을 실행하고 있습니다. 소스보다 품질이 떨어집니다. AVI와 같은 FLV는 다른 코덱의 컨테이너 일 뿐이므로 flv는 FLV 래퍼 내에서 기술적으로 MP4가 될 수 있습니다. 그래서, 그것은 비디오 및 ausio 코덱에 대해 소스 flv가 트랜스 코딩 해야하는지 여부와 비교하여 변환하는 것과 비교합니다. FLV 내에서 오디오 용으로 H264 MP4 비디오 및 MP4a를 사용한 경우 MP4 비디오 대신 실제 MP4로 읽히도록 파일을 복사하고 파일 헤더 만 조정하면됩니다. FLV 파일 내부
답변
이 안내서 에 따르면 AV 레코딩없이 FLV를 MP4로 변환하는 올바른 명령은 다음과 같습니다.
ffmpeg -i input.flv -c copy -copyts output.mp4
AVC 비디오 및 AAC 또는 MP3 오디오와 함께 모든 경우에 완벽하게 작동했습니다.
답변
ffmpeg를 사용할 때 avconv를 사용하라는 경고 메시지가 표시됩니다. avconv를 사용하여 좋은 결과를 얻었습니다.
avconv -i inputfile.flv -map 0 -c : v libx264 -c : 복사 출력 파일 .mp4
man avconv
자세한 내용을 읽으십시오 .
답변
video_flv_to_mp4
다음 내용으로 호출되는 쉘 스크립트를 작성하는 것이 좋습니다 .
ffmpeg -i $1 -sameq -ar 22050 -vcodec libx264 $1.mp4
그런 다음 다음과 같이 실행하십시오.
$ video_flv_to_mp4 video.flv
video.flv.mp4 파일이 제공됩니다.