ビデオを回転させてテレビで再生できるようにするにはどうすればいいですか?

ビデオを回転させてテレビで再生できるようにするにはどうすればいいですか?

携帯電話から送信され、Thomson テレビ セット (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) はテレビで再生できませんでした (「ビデオ形式がサポートされていません」)。次のようなコマンドを使用して、ファイルを別の形式に変換しようとしました。

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
  • テレビは回転サイドデ​​ータを無視するように見えるため、ビデオを回転させるには再エンコードする必要があります。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

  • テレビはうるさいので、さらに実験が必要になる場合があります。 60 秒の短いセグメントをすばやくテストするには、 を追加できます-t 60

  • 以来、タグが使用されました。 は の許容可能な代替として許可されるものと想定しました。 は使用しておらず、よく知らないため、 には当てはまらないavconv可能性があります。 の最新バージョンを使用してください。 Linuxの場合は、最新バージョンを次の場所からダウンロードできます。avconvffmpegffmpeghttps://www.johnvansickle.com/ffmpeg/

答え2

回転したビデオがテレビの能力を超えている可能性があります。

回転により解像度が 1920x1080 から 1080x1920 に変更されました。

テレビが 1080p (フル HD) の場合は 1,920x1,080 をサポートし、720p のみの場合は 1,280x720 をサポートします。

どちらの場合も、ビデオの高さが最大値を超えています。このようなビデオには、2K または 4K のテレビが必要になります。

関連情報