비디오를 회전하고 TV에서 재생하려면 어떻게 해야 합니까?

비디오를 회전하고 TV에서 재생하려면 어떻게 해야 합니까?

휴대폰에서 생성된 비디오가 있고 Thomson TV 세트(USB를 통해)에서 문제 없이 재생됩니다. 영상의 세부 내용은 다음과 같습니다.

> 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

비디오가 시계 반대 방향으로 90도 회전됩니다. 그러므로 지적한 바와 같이여기, 다음 명령줄을 사용하여 비디오를 시계 방향으로 90도 회전하려고 합니다.

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

안타깝게도 동영상이 다음과 같이 회전합니다.180도. 비디오를 회전시키는 명령에 문제가 있습니까?

아무튼 를 이용해서 영상을 회전시킬 수는 있었는데 avidemux저장된 새 영상 파일( rotated.mp4)이 TV에서 재생이 되지 않았습니다('영상 형식은 지원되지 않습니다'). 다음과 같은 명령을 사용하여 파일을 다른 형식으로 변환하려고했습니다.

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

그러나 그 어느 것도 효과가 없었습니다. 내가 무엇을 놓치고 있나요? 아니면 실제 형식/인코딩을 변경하지 않고 명령줄에서 비디오를 회전하는 방법이 있습니까?

avproberotated.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

ffmpeg 사용여기avprobe'LordNeckbeard'의 메소드를 다음에 적용한 후의 출력은 다음과 같습니다 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

이제 오디오나 비디오가 모두 지원되지 않습니다.

답변1

ffmpeg -i input.mp4 -vf "scale=-2:1080,format=yuv420p" -c:a copy output.mp4
  • TV가 회전 측면 데이터를 무시하는 것처럼 보이기 때문에 비디오를 회전하려면 비디오를 다시 인코딩해야 합니다. ffmpeg이 작업은 자동으로 수행되므로 특별한 작업을 수행할 필요가 없습니다.

  • 그래도 작동하지 않으면 -profile:v baseline추가 호환성을 위해 추가하세요. 나는 또한 시도 -profile:v main하고 생략하는 것이 좋습니다 -profile:v. 피할 수 있다면 -profile:v피하세요. 차선책은기본, 가장 최적이 아닌 것은기준선, 그러나 로컬 TV 재생에는 그다지 중요하지 않습니다. 무엇이든 작동하는 것이 가장 좋습니다.

  • 그만큼규모필터는 높이가 1080이 되도록 비디오를 축소합니다. 그렇지 않으면 1080x1920 크기의 비디오를 재생하지 않습니다.

  • 사용하여체재필터는 호환 가능한 픽셀 형식을 보장합니다. 귀하의 입력은 이미 YUV 4:2:0 평면이지만 이는 다른 입력 유형에 대한 보험일 뿐입니다.

  • -c:a copy불필요한 재인코딩을 피하기 위해 오디오를 스트림 복사(재다중화)하기 위해 추가되었습니다. AAC -c:a aac이외 의 오디오가 포함된 입력의 경우 -c:a copy.

  • TV는 까다로울 수 있으므로 추가 실험이 필요할 수 있습니다. 60초 길이의 짧은 세그먼트를 빠르게 테스트하려면 -t 60.

  • 이후태그가 사용되었습니다. 나는 귀하가 이 태그를 에 대한 허용 가능한 대안으로 허용할 것이라고 가정했습니다 avconv. avconv나는 그것을 사용하지 않고 익숙하지 않기 때문에 이 중 어느 것도 적용되지 않을 수 있습니다 . 반드시 최신 버전의 ffmpeg. Linux의 경우 최신 버전을 다운로드할 수 있습니다 ffmpeg.https://www.johnvansickle.com/ffmpeg/

답변2

회전된 영상이 TV의 성능을 초과할 가능성이 있습니다.

회전으로 인해 해상도가 1920x1080에서 1080x1920으로 변경되었습니다.

TV가 1080p(풀 HD)인 경우 1,920x1,080을 지원하고, 720p인 경우 1,280x720을 지원합니다.

두 경우 모두 비디오 높이가 최대값보다 높습니다. 이러한 비디오를 보려면 2K 또는 4K TV가 필요합니다.

관련 정보