Câu hỏi Các video đã ghi trên iPhone được quay trên các hệ thống Windows


Tôi đang quay video trên iPhone và tải chúng lên máy chủ Linux của mình. Người dùng có thể xem các video này trên trang web. Nếu người dùng nhìn thấy video trên mac hoặc iDevices video có vẻ ổn nhưng khi người dùng nhìn thấy video đó trên hệ thống cửa sổ, các video này sẽ bị xoay vòng.

Tôi giả định điều này là do một số lá cờ táo trong video đã ghi mà hệ thống Windows không thể đọc được. Tôi có thể quay video theo cách nào đó để chúng không bị xoay vòng trên hệ thống Windows không? Hoặc là có cách nào tôi có thể tái mã hóa video với định hướng giao diện thích hợp bằng cách sử dụng FFmpeg?

Tôi đang mở cho cả hai cách FFmpeg hoặc iOS.


4
2018-03-01 13:41


gốc




Các câu trả lời:


Bạn không thể thay đổi cách máy ảnh iOS ghi lại video. Nó đặt cờ xoay và nếu bạn muốn video được hiển thị chính xác trong cả OS X và Windows (và các trình phát khác), bạn sẽ phải:

  • Hủy bỏ cờ xoay. Bây giờ video của bạn là cảnh quan nhưng vẫn hiển thị sai.
  • Mã hóa lại video, xoay nó.

Tải xuống ffmpeg (một xây dựng tĩnh cho hệ điều hành của bạn là tốt).

Sau đó bạn cần transpose bộ lọc, ví dụ:

ffmpeg -i portrait.mov \
-c:v libx264 -filter:v "transpose=1" \
-c:a copy \
-metadata:s:v:0 rotate=0 out.mp4

Một vài nhận xét:

  • Đây, transpose=1 sẽ xoay 90 °. Nếu video của bạn bị lộn ngược, bạn cần phải kết hợp các tùy chọn. Bạn có thể sử dụng -filter:v "transpose=2,transpose=2" hoặc những người khác. Xem ở đây: Làm thế nào để lật một video 180 ° (dọc / lộn ngược) với FFmpeg?

  • Các -metadata:s:v:0 rotate=0 tùy chọn đảm bảo rằng siêu dữ liệu luân phiên trong luồng video đầu tiên được đặt thành 0 lần nữa (trước đây là trên 90), vì vậy video của bạn hiện hiển thị tốt trên cả OS X và các hệ điều hành khác.

  • Đương nhiên, việc chuyển đổi sẽ mã hóa lại video và bạn sẽ mất chất lượng. Thêm -crf tùy chọn sau -c:v libx264 để đặt Hệ số tốc độ không đổi, kiểm soát chất lượng. Sử dụng các giá trị thấp hơn để có chất lượng tốt hơn. 23 thực sự là mặc định, vì vậy bạn không cần phải chỉ định nó chút nào, nhưng bạn có thể muốn chọn thứ gì đó thấp đến 18 nếu video kết thúc có vẻ xấu, ví dụ: -c:v libx264 -crf 18.

  • Trong một số trường hợp, bạn có thể chỉ muốn xóa cờ xoay nhưng giữ nguyên luồng bit ban đầu. Để làm như vậy, hãy thay thế -c:v libx264 -filter:v "transpose=1" với -c:v copy.

  • Kiểm tra hướng dẫn mã hóa x264 để biết thêm.


6
2018-03-01 14:20



Trên mọi iPhone tôi đã sở hữu, định hướng "gốc" cho camera phía sau là với điện thoại ở hướng ngang, với ống kính máy ảnh về phía tay trái. Nếu video ban đầu được quay theo hướng đó, việc tước cờ xoay mà không cần mã hóa lại là đủ. (Mặc dù nó có thể sẽ hiển thị chính xác trong tất cả các trình phát mà không cần sửa đổi.) - smitelli