電話から発信されたビデオがあり、それ自体が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
)はテレビで再生できませんでした(「ビデオ形式はサポートされていません」)。次のようなコマンドを使用して、ファイルをさまざまな形式に変換しようとしました
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
しかし、そのどれもうまくいきませんでした。何が足りないのですか?または、実際のフォーマット/エンコーディングを変更せずにコマンドラインでビデオを回転させる方法はありますか?
rotated.mp4
のavprobe
は
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
here のffmpegを使用すると、 'LordNeckbeard'からrotated.mp4
にメソッドを適用した後、avprobe
の出力は次のようになります。
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
オーディオもビデオも現在サポートされていません...
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
を避けて回避できる場合、次善の策はmain、最も最適でないのはベースラインですですが、ローカルTVの再生ではそれほど重要ではありません。機能するものが最適です。
scale フィルターは、高さが1080になるようにビデオを縮小します。そうでない場合、1080x1920サイズのビデオは再生されません。
format フィルタを使用すると、互換性のあるピクセル形式が保証されます。あなたの入力はすでにYUV4:2:0平面ですが、これは他の入力タイプの単なる保険です。
-c:a copy
は、不要な再エンコードを回避するために、オーディオをストリーミングコピー(再多重化)するために追加されました。 AAC以外の音声を含む入力の場合は、-c:a aac
の代わりに-c:a copy
を使用してください。
テレビはうるさいことがあるので、これにはさらに実験が必要かもしれません。 60秒の短いセグメントをすばやくテストするには、-t 60
を追加します。
ffmpeg タグが使用されたので、avconv
の代わりに使用できると思いました。私はそれを使用しておらず、私はそれをよく知らないので、これのどれもavconv
に当てはまらないかもしれません。必ず最新バージョンのffmpeg
を使用してください。 Linuxの場合、最近のffmpeg
を https://www.johnvansickle.com/ffmpeg/ でダウンロードできます。
回転したビデオがテレビの機能を超えている可能性があります。
回転により、解像度が1920x1080から1080x1920に変更されました。
テレビが1080p(フルHD)の場合、1,920x1,080をサポートし、720pのみの場合は1,280x720をサポートします。
どちらの場合も、ビデオの高さが最大値を超えています。このようなビデオには、2Kまたは4Kのテレビが必要です。