Tại sao video không xuất hiện từ ffmpeg hiển thị trong QuickTime, iMovie hoặc xem trước nhanh?


20

Tôi đã sử dụng ffmpeg để chuyển đổi video không thường xuyên trong một thời gian và gần đây đã phát hiện ra rằng video H.264 (libx264) được tạo bởi ffmpeg không hoạt động trong iMovie hoặc QuickTime (chúng cũng sẽ không phát hoặc hiển thị bản xem trước trong Finder với tính năng xem nhanh).

Nếu tôi tạo video bằng các ứng dụng OS X sử dụng nội bộ ffmpeg (ví dụ MP4tools hoặc Adaptor ), video sẽ hoạt động tốt, nhưng không phải khi tôi cố gắng sử dụng trực tiếp ffmpeg, ví dụ để chuyển đổi video:

# ffmpeg -i input.avi output.mp4

hoặc để kết hợp một số hình ảnh vào video:

# ffmpeg -f image2 -pattern_type sequence image-%04d.png output.mp4

iMovie chỉ nhập video dưới dạng đen / trống, xem trước nhanh chỉ hiển thị thông tin tệp, (nhưng không xem trước video) và Quicktime cho tôi biết nó không thể phát video đó:

tài liệu không thể mở được

Chuyện gì đang xảy ra vậy?!

Câu trả lời:


31

Nói tóm lại, bạn (thường) cần bao gồm đối số -pix_fmt yuv420pkhi sử dụng ffmpeg để tạo nội dung H.264 cho phần mềm / thiết bị của Apple và một loạt các bộ giải mã khác không xử lý yuv444p.

# ffmpeg -i input.avi -pix_fmt yuv420p output.mp4

Điều này không được đề cập trong đầu ra khi sử dụng mặc định, nhưng có thể được tìm thấy trong hướng dẫn Encode / H.264 của họ .

quay ra rằng ffmpeg đã chọn một định dạng mặc định điểm ảnh của yuv444p để mã hóa libx264 (dưới một số trường hợp), trong đó không tương thích với phần mềm của Apple / phần cứng H.264 giải mã (và có lẽ không phải là rất rộng rãi tương thích nói chung? ). Thật không may, điều này dường như không thể thay đổi và không có cảnh báo nào về nó, vì vậy chỉ cần một số thứ bạn phải biết nếu sử dụng ffmpeg để tạo các tệp H.264.

Theo như tôi có thể nói, nếu chuyển đổi video đã sử dụng yuv420p thì nó sẽ duy trì điều đó, nhưng nếu chuyển đổi từ thứ gì đó kỳ lạ hơn một chút (ví dụ: hình ảnh hoặc GIF hoặc bất cứ điều gì) thì định dạng pixel phải được chỉ định cho khả năng tương thích chung của Apple.


1
Không giúp ích trong phiên bản hiện tại của iMovie (Yosemite). Còn ý tưởng nào khác không?
Milan Babuškov

1
Bạn có thể gửi đầu ra của ffprobe -select_streams v -show_streams output.mp4?
drfrogsplat 17/03/2015

Các video +1, thậm chí yuv420p cũng không phát ở High Sierra.
trisweb

Không chỉ Apple, mà cả trình phát phương tiện Windows đôi khi không thể phát đầu ra nếu bạn không chỉ định tùy chọn đó. Và nếu bạn thử chơi nó với những người chơi khác, đó sẽ là một màn hình xám với các hiện vật hiển thị trên video.
Shaya
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.