Я сталкиваюсь с этой проблемой при преобразовании файла mp4 (портрет) в mkv.Используемая мной команда
ffmpeg -y -i test.mp4 -vcodec copy -acodec copy test.mkv
Выходное видео вращается на 90 градусов против часовой стрелки.Это потому, что я думаю, что боковые данные удаляются.
Side data:
displaymatrix: rotation of -90.00 degrees
Входной файл test.mp4
info
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'test.mp4':
Metadata:
major_brand : mp42
minor_version : 0
compatible_brands: isommp42
creation_time : 2019-02-23T11:18:50.000000Z
com.android.version: 8.0.0
Duration: 00:00:25.86, start: 0.000000, bitrate: 12270 kb/s
Stream #0:0(eng): Video: h264 (avc1 / 0x31637661), yuv420p(tv, bt709), 1280x720, 12005 kb/s, SAR 1:1 DAR 16:9, 30 fps, 30 tbr, 90k tbn, 180k tbc (default)
Metadata:
rotate : 90
creation_time : 2019-02-23T11:18:50.000000Z
handler_name : VideoHandle
Side data:
displaymatrix: rotation of -90.00 degrees
Stream #0:1(eng): Audio: aac (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 256 kb/s (default)
Metadata:
creation_time : 2019-02-23T11:18:50.000000Z
handler_name : SoundHandle
Повернутый выходной файл test.mkv
info
Input #0, matroska,webm, from 'test.mkv':
Metadata:
MAJOR_BRAND : mp42
MINOR_VERSION : 0
COMPATIBLE_BRANDS: isommp42
COM.ANDROID.VERSION: 8.0.0
ENCODER : Lavf58.12.100
Duration: 00:00:25.87, start: 0.000000, bitrate: 12265 kb/s
Stream #0:0(eng): Video: h264, yuv420p(tv, bt709, progressive), 1280x720, SAR 1:1 DAR 16:9, 30 fps, 30 tbr, 1k tbn, 2k tbc (default)
Metadata:
ROTATE : 90
HANDLER_NAME : VideoHandle
DURATION : 00:00:25.866000000
Stream #0:1(eng): Audio: aac, 48000 Hz, stereo, fltp (default)
Metadata:
HANDLER_NAME : SoundHandle
DURATION : 00:00:25.813000000
Преобразование повернутого mkv в mp4 снова работает нормально, и я получаю файл портрета.Сторонние данные displaymatrix снова появляются в информации о файле.
Также отлично работает преобразование того же файла mp4 в m4v путем копирования потока.
В этой записи они решили этодля с ++.Я работаю на Android и использую ffmpeg android wrapper для использования библиотеки ffmpeg.Есть ли какой-либо флаг ffmpeg для решения этой ситуации?