У меня есть веб-сервер под управлением Ubuntu, который принимает видео из приложения iPhone. Очевидно, что это не играло на версии приложения для Android, так как видео было MOV-файлом. Я легко смог преобразовать файл в MP4, используя ffmpeg:
ffmpeg -i <input.mov> -vcodec copy -acodec copy <output.mp4>
Это позволило видео воспроизводиться в версии приложения для Android, однако они потеряли ротацию и воспроизводились в боковом направлении как на iOS, так и на Android.
Теперь я пытаюсь использовать ffmpeg для поворота видео, чтобы оно воспроизводилось правильно, используя:
ffmpeg -i <input.mp4> -vf "transpose=1" <output.mp4>
но выходное видео не поворачивается. Я пробовал разные способы поворота с использованием ffmpeg, но ни один из них не сработал. Эти методы включают в себя:
ffmpeg -i <input.mp4> -vcodec copy -acodec copy -vf "transpose=1" <output.mp4>
ffmpeg -i <input.mp4> -metadata:s:v:0 rotate=90 <output.mp4>
и различные комбинации команд, однако никогда не происходит никаких изменений в ориентации видео.
Я нахожу странным, что -vf не работает, потому что после загрузки сервер генерирует миниатюру, используя:
ffmpeg -y -itsoffset -1 -i <input.mp4> -vcodec mjpeg -vframes 1 -vf "transpose=1" -an -f rawvideo <output>
который отлично работает и дает эскиз в правильном направлении.
В любом случае я не получаю никаких ошибок, поэтому я не уверен, что происходит, видео просто не вращается должным образом.
Поскольку это должно быть сделано автоматически, это должно быть сделано из командной строки.
Я просто попытался использовать:
ffmpeg -i <input.mp4> -acodec copy -vcodec copy -vf "transpose=1" <output.mp4>
с результатом:
ffmpeg version 0.8.6-4:0.8.6-0ubuntu0.12.04.1, Copyright (c) 2000-2013 the Libav developers built on Apr 2 2013 17:02:36 with gcc 4.6.3
*** THIS PROGRAM IS DEPRECATED *** This program is only provided for compatibility and will be removed in a future release. Please use avconv instead.
Seems stream 0 codec frame rate differs from container frame rate:
1200.00 (1200/1) -> 29.97 (30000/1001) Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'media/test.mp4': Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
creation_time : 2014-02-06 00:16:52
date : 2014-01-25T12:44:19-0800
encoder : Lavf53.21.1 Duration: 00:00:01.06, start: 0.000000, bitrate: 5391 kb/s
Stream #0.0(und): Video: h264 (Main), yuv420p, 1280x720, 5489 kb/s, 29.95 fps, 29.97 tbr, 600 tbn, 1200 tbc
Metadata:
creation_time : 2014-02-06 00:16:52
Stream #0.1(und): Audio: aac, 44100 Hz, mono, s16, 57 kb/s
Metadata:
creation_time : 2014-02-06 00:16:52 File 'media/temp.mp4' already exists. Overwrite ? [y/N] y Output #0, mp4, to 'media/temp.mp4': Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
creation_time : 2014-02-06 00:16:52
date : 2014-01-25T12:44:19-0800
encoder : Lavf53.21.1
Stream #0.0(und): Video: ![0][0][0] / 0x0021, yuv420p, 1280x720, q=2-31, 5489 kb/s, 600 tbn, 600 tbc
Metadata:
creation_time : 2014-02-06 00:16:52
Stream #0.1(und): Audio: aac, 44100 Hz, mono, 57 kb/s
Metadata:
creation_time : 2014-02-06 00:16:52 Stream mapping: Stream #0.0 -> #0.0 Stream #0.1 -> #0.1 Press ctrl-c to stop encoding frame= 31 fps= 0 q=-1.0 Lsize= 703kB time=1.00 bitrate=5739.6kbits/s video:694kB audio:8kB global headers:0kB muxing overhead 0.267996%