FFmpeg로 인코딩 된 동영상 파일을 Quicktime에서 재생할 수없는 이유는 무엇입니까? [복제]


34

영화를 열려고 할 때 방금 다음 명령으로 만들었습니다.

ffmpeg -pattern_type glob -i '*.JPG' -s 640x480 movie.mp4

QuickTime에서 오류가 발생합니다.

The document “movie.mp4” could not be opened.
The file may be damaged or may not be a movie file that is compatible with QuickTime Player.

iSight 시간 경과에서 생성 된 이미지 세트에 동일한 명령을 사용했지만이 경우 위 이미지는 디지털 카메라에서 가져온 것입니다. 해상도는 훨씬 높지만 640x480으로 크기를 조정하고 있으며 출력에서 ​​문제를 나타내는 아무것도 표시되지 않습니다.

Input #0, image2, from '*.JPG':
  Duration: 00:00:04.76, start: 0.000000, bitrate: N/A
    Stream #0:0: Video: mjpeg, yuvj422p(pc), 4928x3264, 25 tbr, 25 tbn, 25 tbc

작업 영화 대 :

Input #0, image2, from '*.JPG':
  Duration: 00:01:23.72, start: 0.000000, bitrate: N/A
    Stream #0:0: Video: mjpeg, yuvj420p(pc), 640x480 [SAR 1:1 DAR 4:3], 25 fps, 25 tbr, 25 tbn, 25 tbc

그리고 출력 :

Output #0, mp4, to 'movie.mp4':
  Metadata:
    encoder         : Lavf55.19.104
    Stream #0:0: Video: h264 (libx264) ([33][0][0][0] / 0x0021), yuvj422p, 640x480, q=-1--1, 12800 tbn, 25 tbc
Stream mapping:
  Stream #0:0 -> #0:0 (mjpeg -> libx264)

작동하는 대 :

Output #0, mp4, to 'movie.mp4':
  Metadata:
    encoder         : Lavf55.19.104
    Stream #0:0: Video: h264 (libx264) ([33][0][0][0] / 0x0021), yuvj420p, 640x480 [SAR 1:1 DAR 4:3], q=-1--1, 12800 tbn, 25 tbc
Stream mapping:
  Stream #0:0 -> #0:0 (mjpeg -> libx264)

작업중인 영화가 길고 소스 해상도가 낮을뿐 아니라 비디오 스트림에 언급 된 추가 "[SAR 1 : 1 DAR 4 : 3]"이 있다는 점만 다릅니다. 또는 작동하지 않는 영화에서 강제로 시도하는 방법입니다.

업데이트 : 방금 VLC를 다운로드했으며 영화를 잘 재생합니다. ffmpeg가 잘못되었다는 것을 알고 있습니다.


2
앞으로 ffmpeg에 대해 질문 할 때는 항상 전체 커트되지 않은 명령 행 출력을 포함하십시오. 내가 실수하지 않은 경우 (그리고 최신 버전이있는 경우) 일부 플레이어와 호환되지 않는 픽셀 형식에 대해 알려 주어야합니다.
slhck

ffprobe video.mp4사용 된 픽셀 형식을 확인하는 데 사용할 수 있습니다.
l --marc l

답변:


47

StackOverflow 답변을 기반으로 다음 -pix_fmt yuv420p과 같이 명령에 추가 합니다. 의견 중 하나가 추가 -vcodec libx264언급 하므로 여기에 포함됩니다.

ffmpeg -pattern_type glob -i '*.JPG' -vcodec libx264 -s 640x480 \
-pix_fmt yuv420p movie.mp4

또는 format 필터를 사용할 수 있습니다 . 이 예제는 대신 스케일 필터 를 사용하고 대신 -s형식 필터를 사용합니다 -pix_fmt.

ffmpeg -pattern_type glob -i '*.JPG' -vcodec libx264 \
-vf scale=640:-2,format=yuv420p movie.mp4

또한 공식 FFmpeg Wiki 에서“벙어리 플레이어 인코딩”이라는 제목 으로 자세히 설명되었습니다 . 강조 광산 :

-pix_fmt yuv420pQuickTime 및 대부분의 다른 플레이어에서 작업하려면 출력 을 사용해야 할 수도 있습니다 . 이 플레이어는 H.264 비디오를위한 4 : 2 : 0 크로마 서브 샘플링이있는 YUV 평면 색 공간 만 지원합니다. 그렇지 않으면 소스에 따라 ffmpeg가 이러한 플레이어와 호환되지 않는 픽셀 형식으로 출력 될 수 있습니다.


6
실제로 ffmpeg는 Quicktime을 화나게하는 yuv422p의 기본 인코딩을 선택했습니다. 추가하면 -pix_fmt yuv420p나를 위해 해결되었습니다!
Nick Desaulniers 2016 년

첫 번째 솔루션 만 나를 위해 일했다
PR
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.