Làm cách nào để xoay video và có thể phát trên TV?


1

Tôi có một video bắt nguồn từ điện thoại và video này phát mà không gặp sự cố nào trên TV Thomson (qua USB). Các chi tiết của video như sau:

> avprobe 20170904_065655.mp4
avprobe version 11.3-6:11.3-1~trusty, Copyright (c) 2007-2014 the Libav developers
  built on Apr 13 2015 22:25:55 with gcc 4.8 (Ubuntu 4.8.2-19ubuntu1)
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '20170904_065655.mp4':
  Metadata:
    major_brand     : mp42
    minor_version   : 0
    compatible_brands: isommp42
    creation_time   : 2017-09-04 04:58:01
  Duration: 00:01:05.34, start: 0.000000, bitrate: 17094 kb/s
    Stream #0.0(eng): Video: h264 (High), yuv420p, 1920x1080, 17017 kb/s, 30 fps, 90k tbn (default)
    Metadata:
      creation_time   : 2017-09-04 04:58:01
    Side data:
      displaymatrix: rotation of -90.00 degrees
    Stream #0.1(eng): Audio: aac, 48000 Hz, stereo, fltp, 128 kb/s (default)
    Metadata:
      creation_time   : 2017-09-04 04:58:01
# avprobe output

Video được quay 90 ngược chiều kim đồng hồ. Do đó, như đã chỉ ra đây , Tôi đang thử dòng lệnh sau để xoay video 90 độ theo chiều kim đồng hồ:

ffmpeg -i 20170904_065655.mp4 -vf "transpose=1" test.mp4

Thật không may, xoay video bằng 180 độ. Có bất cứ điều gì sai với lệnh đó để xoay video?

Dù sao, tôi đã có thể xoay video bằng cách sử dụng avidemux, nhưng tệp video mới đã lưu ( rotated.mp4 ) không thể phát trên TV ('Định dạng video không được hỗ trợ'). Tôi đã cố gắng chuyển đổi tập tin thành các định dạng khác nhau bằng các lệnh như

avconv -i rotated.mp4 -c:v h264 -q:v 3 -c:a libmp3lame out.avi
avconv -i rotated.mp4 -c:v mpeg1video -q:v 3 -c:a libmp3lame out.avi
avconv -i rotated.mp4 -r 25 -vb 20M  -crf 20  output.avi
avconv -i rotated.mp4  -vcodec libx264 -acodec aac -strict -2 -b:a 384k  output.mp4

Nhưng KHÔNG làm việc đó. Tôi đang thiếu gì? Hoặc có cách nào để xoay video trên dòng lệnh mà không thay đổi định dạng / mã hóa thực tế không?

Các avprobe của rotated.mp4

avprobe version 11.3-6:11.3-1~trusty, Copyright (c) 2007-2014 the Libav developers
  built on Apr 13 2015 22:25:55 with gcc 4.8 (Ubuntu 4.8.2-19ubuntu1)
Input #0, avi, from 'rotated.mp4':
  Duration: 00:00:30.77, start: 0.000000, bitrate: 6728 kb/s
    Stream #0.0: Video: h264 (High), yuv420p, 1080x1920 [PAR 1:1 DAR 9:16], 30 fps, 30.02 tbn, 60.04 tbc
    Stream #0.1: Audio: pcm_s16le, 48000 Hz, 2 channels, s16, 1536 kb/s

Sử dụng ffmpeg từ đây các avprobe đầu ra là như sau, sau khi tôi đã áp dụng phương thức từ 'LordNeckbeard' cho rotated.mp4:

avprobe version 11.3-6:11.3-1~trusty, Copyright (c) 2007-2014 the Libav developers
  built on Apr 13 2015 22:25:55 with gcc 4.8 (Ubuntu 4.8.2-19ubuntu1)
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'output.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf57.82.104
  Duration: 00:00:30.86, start: 0.000000, bitrate: 10397 kb/s
    Stream #0.0(und): Video: h264 (Constrained Baseline), yuv420p, 1080x1920 [PAR 1:1 DAR 9:16], 8860 kb/s, 30 fps, 15360 tbn, 60 tbc (default)
    Stream #0.1(und): Audio: [1][0][0][0] / 0x0001, 48000 Hz, 2 channels (default)
Unsupported codec with id 0 for input stream 1
# avprobe output

và cả âm thanh và video đều không được hỗ trợ ...


@Alex 1. Bạn có đặc biệt cần nó được thực hiện bằng cách sử dụng avconf hoặc ffmpeg thông qua dòng lệnh, hoặc phần mềm libre khác sẽ ổn chứ? 2. TV nào đang được đề cập đến? 3. Có vấn đề gì không nếu định dạng thay đổi miễn là chất lượng được bảo tồn?
wizzwizz2

Điều này vừa hữu ích, vừa hoàn toàn vô dụng: "Đây là vấn đề thường xuyên xảy ra với các tệp ở định dạng .AVI và .DIVX và phụ thuộc vào codec được sử dụng khi tệp được tạo. codec của nó không tương thích với TV. "
wizzwizz2

Thông tin avprobe cho rotated.mp4 là gì?
harrymc

@harrymc: Đã thêm đầu ra cho câu hỏi
Alex

Tôi đã sử dụng phiên bản mới nhất và hiện tại không hỗ trợ âm thanh cũng như video. Có lẽ tôi sẽ tìm cách ghi lại video từ màn hình máy tính ....
Alex

Câu trả lời:


1
ffmpeg -i input.mp4 -vf "scale=-2:1080,format=yuv420p" -c:a copy output.mp4
  • Vì TV dường như bỏ qua các mặt xoay, bạn sẽ phải mã hóa lại video để xoay nó. ffmpeg sẽ làm điều này tự động, vì vậy bạn không phải làm gì đặc biệt.

  • Nếu nó vẫn không hoạt động thêm -profile:v baseline để thêm khả năng tương thích. Tôi cũng khuyên bạn nên thử -profile:v main và bỏ qua -profile:v. Nếu bạn có thể tránh xa nó -profile:v, tốt nhất tiếp theo là chủ yếu , tối ưu nhất là đường cơ sở , nhưng nó không thực sự quan trọng đối với phát lại TV địa phương: bất cứ điều gì hoạt động là tốt nhất.

  • Các tỉ lệ bộ lọc sẽ thu nhỏ video để chiều cao là 1080, nếu không, nó sẽ không phát video có kích thước 1080x1920.

  • Sử dụng định dạng bộ lọc sẽ đảm bảo định dạng pixel tương thích. Đầu vào của bạn đã là YUV 4: 2: 0 phẳng, nhưng đây chỉ là bảo hiểm cho các loại đầu vào khác.

  • -c:a copy đã được thêm vào để sao chép luồng (re-mux) âm thanh để tránh mã hóa lại không cần thiết. Đối với đầu vào có chứa âm thanh khác ngoài AAC, hãy sử dụng -c:a aac thay vì -c:a copy.

  • TV có thể kén chọn, vì vậy điều này có thể cần thử nghiệm thêm. Để nhanh chóng kiểm tra một đoạn ngắn, 60 giây, bạn có thể thêm -t 60.

  • Kể từ khi Thẻ đã được sử dụng Tôi giả sử bạn sẽ cho phép nó là một thay thế chấp nhận được avconv. Không ai trong số này có thể áp dụng cho avconv vì tôi không sử dụng nó và tôi không quen với nó. Đảm bảo sử dụng phiên bản gần đây của ffmpeg. Đối với Linux, bạn có thể tải xuống gần đây ffmpeg tại https://www.johnvansickle.com/ffmpeg/


Cảm ơn lời đề nghị, nhưng nó không hoạt động. TV nói, một lần nữa: "Định dạng video không được hỗ trợ".
Alex

@Alex Hiển thị thông tin cho một video không hoạt động.
llogan

Nó ở đầu câu hỏi. Hay bạn muốn xem infos từ một video khác?
Alex

@Alex Không, xin lỗi. Tôi đã bỏ lỡ rằng nó vừa làm việc vừa không hoạt động. Hãy để trò chơi đoán bắt đầu: thử thêm -brand mp42.
llogan

Cảm ơn gợi ý này, nhưng tôi vẫn gặp lỗi "Định dạng video không được hỗ trợ". Âm thanh, tuy nhiên, hoạt động như trước ...
Alex

1

Có thể video được quay vượt quá khả năng của TV của bạn.

Vòng xoay đã thay đổi độ phân giải từ 1920x1080 thành 1080x1920.

Nếu TV của bạn là 1080p (full HD), nó hỗ trợ 1.920x1.080 và nếu chỉ 720p rồi 1.280x720.

Trong cả hai trường hợp, chiều cao video lớn hơn mức tối đa. Bạn sẽ cần một TV 2K hoặc 4K cho một video như vậy.


Có lẽ có một cách để giảm độ phân giải của video? Đó sẽ là cách dễ dàng hơn ...
Alex

@Alex Để tăng tỷ lệ lên chiều cao 1080 pixel, thêm -filter:v "scale=-2:1080" đến lệnh ffmpeg (trước khi chỉ định codec, v.v.).
slhck

@slhck: Vì vậy, bây giờ tôi đoán câu trả lời cuối cùng cho câu hỏi ban đầu của tôi là kết hợp cả hai câu trả lời ở đây ...
Alex

Bạn sẽ phải quyết định câu trả lời nào là thiết yếu hơn cho giải pháp cuối cùng.
harrymc

@Alex Bạn có thể chấp nhận một câu trả lời và đưa tiền thưởng cho người khác hoặc ngược lại. Không có quy tắc cho các trường hợp như vậy.
slhck
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.