Как повернуть видео и воспроизвести его на телевизоре?

Как повернуть видео и воспроизвести его на телевизоре?

У меня есть видео, которое исходит с телефона, и которое само по себе без проблем воспроизводится на телевизоре 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

Но НИЧЕГО из этого не сработало. Что я упускаю? Или есть способ повернуть видео в командной строке, не меняя фактический формат/кодировку?

Из avprobeявляется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

Используя 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, следующим лучшим вариантом будетосновной, наименее оптимальным являетсябазовый уровень, но для воспроизведения локального телевидения это не имеет особого значения: то, что работает, то и лучше.

  • TheшкалаФильтр уменьшит высоту видео до 1080, в противном случае видео размером 1080x1920 не будет воспроизводиться.

  • ИспользуяформатФильтр обеспечит совместимый формат пикселей. Ваш вход уже YUV 4:2:0 планарный, но это просто страховка для других типов входов.

  • -c:a copyдобавлено потоковое копирование (ремультиплексирование) аудио, чтобы избежать ненужного перекодирования. Для входов, содержащих аудио, отличное от AAC, используйте -c:a aacвместо -c:a copy.

  • Телевизоры могут быть придирчивы, поэтому это может потребовать дополнительных экспериментов. Чтобы быстро протестировать короткий 60-секундный сегмент, вы можете добавить -t 60.

  • Так кактег был использован Я предполагал, что вы разрешите это приемлемая альтернатива avconv. Ничто из этого не может быть применимо к , avconvпоскольку я не использую его и не знаком с ним. Убедитесь, что используете последнюю версию ffmpeg. Для Linux вы можете загрузить последнюю версию ffmpegнаhttps://www.johnvansickle.com/ffmpeg/

решение2

Возможно, повернутое видео превышает возможности вашего телевизора.

Вращение изменило разрешение с 1920x1080 на 1080x1920.

Если ваш телевизор поддерживает разрешение 1080p (Full HD), он поддерживает разрешение 1920x1080, а если только 720p, то 1280x720.

В обоих случаях высота видео больше максимальной. Для такого видео вам понадобится телевизор 2K или 4K.

Связанный контент