먼저 FFmpeg 프로파일 사용과 직접 명령 행 옵션의 차이점을 이해해야합니다. ffmpeg가 설치되어있는 곳 또는 어디에 있든지 파일을 -vpre
사용합니다 . 일련의 옵션 = 값 쌍이며, 귀하의 경우 직접 정의해야 할 것입니다 (적어도 나는 ffmpeg와 함께 제공된 사전 설정을 모릅니다 )..ffpreset
/usr/share/ffmpeg/
baseline
사전 설정을 직접 만들고 명령 줄 옵션이 무엇인지 알지 않는 한 사전 설정을 사용하지 않는 것이 좋습니다. 저는 몇 년 동안 ffmpeg를 사용해 왔으며 사전 설정을 사용한 적이 없습니다.
대부분의 장치와 호환되는 H.264 비디오를 생성하기위한 일반적인 명령 줄은 다음과 같습니다.
ffmpeg -i <input> \
-c:v libx264 -crf 23 -profile:v baseline -level 3.0 -pix_fmt yuv420p \
-c:a aac -ac 2 -b:a 128k \
-movflags faststart \
output.mp4
몇 가지 참고 사항 :
H.264 / AAC는 HTML5에서 광범위한 지원을위한 최상의 조합입니다. 그러나 H.264 디코더가없는 브라우저에는 VP8 / Vorbis 비디오도 필요합니다. 일부 명령 행 예제 는이 답변을 참조하십시오 . 다른 코덱에 대해서는 Wikipedia 의 브라우저 지원 페이지를 참조하십시오 .
H.264는 모바일 장치에서도 잘 작동합니다.
-profile:v baseline
및 -level 3.0
옵션은 H.264의 CPU를 많이 사용하는 기능을 처리 할 수없는 기존 모바일 장치가 필요하다. 당신은 일반적으로 이것을 생략하거나 대신 사용할 수 있습니다 -profile:v main
.
CRF는 품질을 설정합니다 (18-28은 합리적인 범위이며, 낮을수록 품질이 향상됨). 물론 고정 비트 전송률을 사용 -b:v 1000k
하거나 이와 유사한 것을 사용할 수 있습니다 . 비디오 해상도와 일치하는 비트 전송률을 선택하십시오. 일부 저전력 장치는 불필요하게 높은 비트 전송률을 처리하지 못할 수 있습니다.
이 -movflags faststart
옵션은 컨테이너 메타 데이터를 파일을 그대로 두지 않고 파일의 시작 부분으로 이동 시키므로 스트리밍에 필수적입니다. 그러면 파일이 완전히로드 될 때까지 기다리지 않고 즉시 재생을 시작할 수 있습니다.
그러나 대상이되는 모든 장치에 대해 가장 낮은 공통 분모를 찾는 것이 중요합니다. 항상 존재하지는 않습니다. 물론 당신은 (이다, 다른를 사용하고 싶지 않아요 더 H.264 이상) 코덱을. 실제로 메인 또는 하이 프로파일을 디코딩 할 수있는 클라이언트에베이스 라인 인코딩 비디오를 제공하는 것은 현명하지 않습니다. 디코딩 복잡성을 줄이려면 품질을 떨어 뜨립니다.
내 경험에 따르면 Android 기기는 MP4 컨테이너에서 AAC-LC 오디오를 사용하여 Baseline H.264를 재생할 수 있습니다. 나는 그것에 문제가 없었습니다. 실제로 일부 장치는 공식적으로 지원되지 않지만 더 높은 프로파일을 재생할 수 있습니다. iOS는 일반적으로 Baseline H.264도 지원하지만 일부 장치에서도 메인 프로파일을 사용할 수 있습니다. 일부 지침은 이 게시물 (약간 구식)을 참조하십시오 .
재생 문제가있는 사용자가있는 경우 어떤 비디오가 문제를 일으키는 지 확인하고 사용중인 하드웨어 및 플레이어 소프트웨어에 대한 자세한 정보를 확인해야합니다. 그런 다음 해당 사례의 문제 해결에 대해 이야기 할 수 있습니다.