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)

vs.動作中の場合:

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 14年

ffprobe video.mp4どのピクセル形式が使用されているかを確認するために使用できます。
l --marc l

回答:


47

このStackOverflowの回答に基づい-pix_fmt yuv420pて、次のようにコマンドに追加します。コメントの1つには追加-vcodec libx264記載されているため、ここに含まれています。

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

または、フォーマットフィルターを使用できます。この例では、の代わりにスケールフィルターを使用し、代わりに-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解決しました!
ニックデサウルニエ

唯一の最初のソリューションは、私のために働いた
PR
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.