The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
ffmpeg, кодирование видео для смартфона, !*! ябалдею, 19-Май-13, 16:27  [смотреть все]
Как-то зачастил я кататься куда попало, решил время зря не терять, посмотреть что-нибудь в поездке (а то что-то выходит новое в киноиндустрии, да дома времени нет даже пролистать).
Девайс у меня HTC Desire Z (Qualcomm 800MHz Display 800x480). Родное видео с камеры выдаёт по ffmpeg -i

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'VIDEO0008.3gp':
  Metadata:
   major_brand     : 3gp4
   minor_version   : 0
   compatible_brands: isom3gp4
  Duration: 00:00:05.59, start: 0.000000, bitrate: 4249 kb/s
   Stream #0.0(eng): Audio: aac, 44100 Hz, mono, s16, 63 kb/s
   Stream #0.1(eng): Video: h264 (Baseline), yuv420p, 480x800, 3089 kb/s, PAR 65536:65536 DAR 3:5, 23.34 fps, 90k tbr, 90k tbn, 180k tbc

Ну и соответственно из рассчёта что может быть ЭТО смартфоном будет декодироваться как-то аппаратно (не так тормозить, не так садить батарею), хотелось бы оптимально подогнать конвертируемое видео к такому формату.

Пока получился такой вот скрипт

#!/bin/sh

size=800x480
video_out=video$size
mkdir $video_out

for i in *.flv *.mp4
do
    ffmpeg -i "$i" -vf "scale=800:480,unsharp" -r 24 -vb 1200k -vcodec mpeg4 -acodec libfaac -ab 96k -ar 44100 $video_out/"$i.mp4"
done

Из косяков:
1) Видео более маленького разрешения растягивается. Есть какой-то параметр у ffmpeg чтобы не увеличивать разрешение?
2) Не совсем разобрался, как оно будет масштабировать левые пропорции. Будет опять же растягивать лица или обрезать края?

Ну и может кто подскажет ещё пару каких фокусов, как оптимизировать это под смартфоны/телефоны?

  • ffmpeg, кодирование видео для смартфона, !*! foxy_ant, 22:01 , 23-Май-13 (1)
    > 1) Видео более маленького разрешения растягивается. Есть какой-то параметр у ffmpeg чтобы
    > не увеличивать разрешение?

    Так и должно быть при применении видеофильтра scale, если нужен другой размер то надо поменять параметры фильтра, вместо 800:480 указать нужные, если ненадо изменять размер то вместо видеофильтра scale надо использовать фильтр copy.

    Можно задать размер с помощью параметра -s.

    > 2) Не совсем разобрался, как оно будет масштабировать левые пропорции. Будет опять
    > же растягивать лица или обрезать края?

    Будет растягивать-сжимать. Для обрезания кадра есть параметры -croptop, -cropbottom и т.д., этого эффекта можно добиться с помощью фильтра crop.

    • ffmpeg, кодирование видео для смартфона, !*! чаёвник, 12:32 , 24-Май-13 (2)
      > вместо видеофильтра scale надо использовать фильтр copy.

      И тогда перекодирования видеоданных вообще не будет, в итоге смартфон не справляется с раскодированием.
      Нужно
      1) Для видео бОльшего размера уменьшить разрешение до 800:480
      2) Для видео меньшего размера оставить разрешение без изменений
      3) Перекодировать из всяких жестоко тормозных flv в mpeg4
      Я понимаю что каждый файл можно ручками тискать, подгоняя разрешение по необходимости, но хотелось бы всю очередь скриптом прогнать за ночь и утром уже забрать нормальные файлы на смартфон и ехать, а не плясать всю ночь над каждым файлом с подгонкой разрешения

      • ffmpeg, кодирование видео для смартфона, !*! foxy_ant, 22:21 , 25-Май-13 (3)
        >> вместо видеофильтра scale надо использовать фильтр copy.
        > И тогда перекодирования видеоданных вообще не будет, в итоге смартфон не справляется
        > с раскодированием.

        вообще фильтры scale и copy перекодированием не занимаются, они задуманы для работы с размером изображения.

        • ffmpeg, кодирование видео для смартфона, !*! чаёвник, 11:14 , 26-Май-13 (4)
          > вообще фильтры scale и copy перекодированием не занимаются, они задуманы для работы
          > с размером изображения.

          Поэтому у меня этот пункт выполняется через указание -vcodec mpeg4. Вопрос не в этом. Вопрос в том, как изменить размер в меньшую сторону, если он больше заданного, но оставить неизменным, если он меньше заданного.

  • ffmpeg, кодирование видео для смартфона, !*! Прохожий, 18:25 , 11-Май-15 (5)
    >[оверквотинг удален]
    >     ffmpeg -i "$i" -vf "scale=800:480,unsharp" -r 24 -vb
    > 1200k -vcodec mpeg4 -acodec libfaac -ab 96k -ar 44100 $video_out/"$i.mp4"
    > done
    > Из косяков:
    > 1) Видео более маленького разрешения растягивается. Есть какой-то параметр у ffmpeg чтобы
    > не увеличивать разрешение?
    > 2) Не совсем разобрался, как оно будет масштабировать левые пропорции. Будет опять
    > же растягивать лица или обрезать края?
    > Ну и может кто подскажет ещё пару каких фокусов, как оптимизировать это
    > под смартфоны/телефоны?

    Для аппаратного декодирования важен вот этот параметр: Video: h264 (Baseline)
    Для своей NOKIA C7 кодирую с
    -vcodec libx264 -profile:v baseline




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру