URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID15
Нить номер: 4028
[ Назад ]

Исходное сообщение
"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 , 23-Май-13 22:01 
> 1) Видео более маленького разрешения растягивается. Есть какой-то параметр у ffmpeg чтобы
> не увеличивать разрешение?

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

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

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

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


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

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


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

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


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

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


"ffmpeg, кодирование видео для смартфона"
Отправлено Прохожий , 11-Май-15 18:25 
>[оверквотинг удален]
>     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