Flutter_ffmpeg concat демультиплексор | видео с передней камеры перевернуты или повреждены ⇐ Android
Flutter_ffmpeg concat демультиплексор | видео с передней камеры перевернуты или повреждены
В настоящее время я записываю несколько клипов в формате mp4 (используя пакет камеры Flutter), а затем использую демультиплексор ffmpeg concat для создания одного видео:
await _flutterFFmpeg.execute('-f concat -safe 0 -i ${txtFile.path} -c copy ${outputClipPath.path}'); Это корректно работает с любым видео с задней камеры. Когда я также объединяю видео с передней камеры, они перевернуты, поскольку кажется, что ffmpeg не обнаруживает поворот их метаданных.
В настоящее время мне удалось определить, снято ли видео с передней или задней камеры, следующим образом:
final FlutterFFprobe flutterFFprobe = FlutterFFprobe(); MediaInformation mediaInformation = ждут flutterFFprobe.getMediaInformation(this.path); Карта mp = mediaInformation.getAllProperties(); int Rotation = mp['streams'][0]['side_data_list'][0]['rotation']; если (поворот == 90) { // Видео перевернуто и снято с передней камеры } Вопрос в том, нужно ли мне самому поворачивать видео перед его объединением? Если да, то как лучше всего это сделать с помощью flutter_ffmpeg?
Мне удалось повернуть видео с помощью следующей команды:
await _flutterFFmpeg.execute('-noautorotate -i ${this.path} -metadata:s:v Rotate="0" -vf "transpose=2" ${outputClipPath.path}'); Но если я это сделаю, результат объединения будет испорчен. Как сохранить кодировку и поток после поворота?
Спасибо.
В настоящее время я записываю несколько клипов в формате mp4 (используя пакет камеры Flutter), а затем использую демультиплексор ffmpeg concat для создания одного видео:
await _flutterFFmpeg.execute('-f concat -safe 0 -i ${txtFile.path} -c copy ${outputClipPath.path}'); Это корректно работает с любым видео с задней камеры. Когда я также объединяю видео с передней камеры, они перевернуты, поскольку кажется, что ffmpeg не обнаруживает поворот их метаданных.
В настоящее время мне удалось определить, снято ли видео с передней или задней камеры, следующим образом:
final FlutterFFprobe flutterFFprobe = FlutterFFprobe(); MediaInformation mediaInformation = ждут flutterFFprobe.getMediaInformation(this.path); Карта mp = mediaInformation.getAllProperties(); int Rotation = mp['streams'][0]['side_data_list'][0]['rotation']; если (поворот == 90) { // Видео перевернуто и снято с передней камеры } Вопрос в том, нужно ли мне самому поворачивать видео перед его объединением? Если да, то как лучше всего это сделать с помощью flutter_ffmpeg?
Мне удалось повернуть видео с помощью следующей команды:
await _flutterFFmpeg.execute('-noautorotate -i ${this.path} -metadata:s:v Rotate="0" -vf "transpose=2" ${outputClipPath.path}'); Но если я это сделаю, результат объединения будет испорчен. Как сохранить кодировку и поток после поворота?
Спасибо.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение