Master-X
Форум | Новости | Статьи
Главная » Форум » CJs » 
Тема: Универсальный видео формат
цитата
07/12/15 в 09:22
 MilkSucker
Команда под unix:
nice /usr/local/bin/ffmpeg -y -i "_path_to_input_file_" -acodec libfaac -b:a 160k -s 1920x1080 -vcodec libx264 -movflags faststart -profile:v baseline -pix_fmt yuv420p -level:v 30 -crf 18 -vf "transpose=1" -metadata rotate=0 -threads 1 "_path_to_output_file_" :

Грубое описание:
nice - запускаем утилиту ffpmeg так чтобы она не жрала все ресурсы сервера
/usr/local/bin/ffmpeg - путь к утилите
-y - перезаписывать если файл с результаттом уже есть
-i "_path_to_input_file_" - так задается путь к исходному
-acodec libfaac -b:a 160k - настройки аудио: используем кодек libfaac, аудиобитрейт 160к
-s 1920x1080 - изменяем размер видео до 1920х1080 (HD)
-vcodec libx264 - для видео используем кодек libx264, который вроде как должен читаться всеми мобилками современными
-movflags faststart - переписываем хедеры в начало файла, чтобы запускалось сразу, без буфферицации полностью файла в кэш браузера (по идее, чтобы работала перемотка, надо еще настроить на сервере отдачу контента правильно)

Дальше сложнее, сам не очень в командах ффмпега, настройки для видео:
-profile:v baseline - видимо профиль для формата h.264, как раз чтобы подо все играло
-pix_fmt yuv420p - туда же настройки, чтобы под apple quichtime играло (https://trac.ffmpeg.org/wiki/Encode/H.264#iOS)
-level:v 30 - туда же, видимо, уровень сжатия по профилю baseline
-crf 18 - Constant Rate Factor, степень сжатия как раз
-vf "transpose=1" - так понимаю, поворачиваем вертикальное видео в горизонтальное (не уверен, возможно и без этого будет работать?)
-metadata - вырезаем все метаданные из файла (автор, кто когда и где создал)
rotate=0 - выравниваем к горизонтальному видео (не уверен, возможно и без этого будет работать?)
-threads 1 - сколько потоков ffmpeg запускать (насколько сильно грузить сервер)
"_path_to_output_file_" - куда писать результат


То же самое, но без HD:

nice /usr/local/bin/ffmpeg -y -i "_input_" -acodec libfaac -b:a 160k -s 640x360 -vcodec libx264 -movflags faststart -profile:v baseline -pix_fmt yuv420p -level:v 30 -crf 18 -vf "transpose=1" -metadata rotate=0 -threads 1 "_output_"
цитата
07/12/15 в 09:27
 MilkSucker
sweetypie писал:
Кроме того, MilkSucker написал интересную вещь о прямой ссылке, это ещё одна сторона которая может влиять. Может, я путаю разные вещи, но, какой нибудь Хвидеос показывает какую то "замысловатую" ссылку на ролловере, не просто очевидный линк.
Ещё раз, спасибо за ваш ответ.

Ссылка там как раз с хэшем для конкретного юзера / файла. Грубо говоря, берет твой айпи, и на 15-30 минут для тебя делает ключевую фразу для файла.
Физически файл лежит на domain.tld/file.mp4 , но напрямую он не доступен.
Только если дергать как domain.tld/file.mp4?hash=SOME_HASH
А в кэше как раз кодируется md5(USER_IP ++ VIDEO_FILE_URL ++ TIMEOUT_15_MINUTES), то есть для тебя файл в течении 15 минут отдается по прямой ссылке domain.tld/file.mp4?hash=erbger874h784hTI4t4i - потому и играется.
цитата
11/12/15 в 13:22
 sweetypie
MilkSucker, большое спасибо за такой полезный ответ!
Я так понимаю, что нужно локально установить ffmpeg, и попрактиковаться с ним.
Я не очень понимаю как Линукс версию установить, но в моём Кейвкрик (Ццбилл) сервере работает Петер, единственный, который разбирается во всём, что нужно, надеюсь, он поможет с установкой.
1. "-y - перезаписывать если файл с результаттом уже есть". Результат с тем же расширением? Это оригинал (с другим расшерением) не сотрёт?
2. "для видео используем кодек libx264, который вроде как должен читаться всеми мобилками современными".
Он включен в саму ffmpeg программу, или подгружается отдельно?
3.
MilkSucker писал:
Для iOs точно (не скажу про андроид) видео должно быть доступно по прямой ссылке.
Например http://user:pass@domain.tld/video.mp4 - не сработает.
http://domain.tld/video.mp4?passcode=sha1_hash_here - сработает.

Ну и да, вроде сейчас все должны уже проигрывать h264, опять же, из платежеспособных. Древние андроиды-звонилки вряд ли принесут денег на просмотре платного порно.

Похоже, Вы очень важную вещь написали, но, я не до конца понял. На моих сайтах обычный CcBill логин через Strongbox, внутри Members директории выложены линки к файлам, находящимся в соседнем фолдере, и, собственно, всё.
На ролловер мауса я вижу http://sbxeCode.site.com/Members/videos/title.mp4, что больше напоминает вашу первую, не работающую версию. Для чего именно стоят "?passcode=sha1_hash_here" в Вашем втором примере, пожалуйста, объясните. Только, если можно, попроще, я в этом не очень разбираюсь.
MilkSucker, ещё раз большое спасибо.
цитата
12/12/15 в 04:23
 MilkSucker
sweetypie писал:

Я не очень понимаю как Линукс версию установить, но в моём Кейвкрик (Ццбилл) сервере работает Петер, единственный, который разбирается во всём, что нужно, надеюсь, он поможет с установкой.

Да, нужен админ. icon_smile.gif Главное чтобы он установил ffmpeg посвежее и с поддержкой libx264. Честно скажу: без идей как именно это делать, на это есть админ.

sweetypie писал:

1. "-y - перезаписывать если файл с результаттом уже есть". Результат с тем же расширением? Это оригинал (с другим расшерением) не сотрёт?

полное вхождение конечного файла с расширением указывается в команде к ffmpeg - он и перезапишется

sweetypie писал:

2. "для видео используем кодек libx264, который вроде как должен читаться всеми мобилками современными".
Он включен в саму ffmpeg программу, или подгружается отдельно?

смотри первый ответ, еще нужно чтобы была поддержка faststart у сборки (поэтому надо поновее версию ставить)

sweetypie писал:

3.
Похоже, Вы очень важную вещь написали, но, я не до конца понял. На моих сайтах обычный CcBill логин через Strongbox, внутри Members директории выложены линки к файлам, находящимся в соседнем фолдере, и, собственно, всё.
На ролловер мауса я вижу http://sbxeCode.site.com/Members/videos/title.mp4, что больше напоминает вашу первую, не работающую версию.

Со стронгбоксом будет и так работать, напрямую. Главное чтобы файл был правильно пережат под libx264.

sweetypie писал:

Для чего именно стоят "?passcode=sha1_hash_here" в Вашем втором примере, пожалуйста, объясните. Только, если можно, попроще, я в этом не очень разбираюсь.

Это когда файл лежит не за стронгбоксом, а, например, в открытом доступе. Чтобы все подряд не могли качать и смотреть - ставится отдельное правило на сервере что файлы с расширением таким-то не отдавать ни в коем случае по прямой линке. А если к ним приходит запрос file.ext?passcode=*** - проверять то что в passcode на валидность и тогда уже показывать.

PS: что за платник, если не секрет? можно в личку
цитата
12/12/15 в 04:34
 Securom
Вот так я собираю ffmpeg на ubuntu со всеми плюшками и кодеками


echo "deb http://www.deb-multimedia.org wheezy main non-free" >> /etc/apt/sources.list
echo "deb-src http://www.deb-multimedia.org wheezy main non-free" >> /etc/apt/sources.list
apt-get update
apt-get install deb-multimedia-keyring
apt-get update
export TMPDIR=$HOME/tmp
cd /usr/local/src
apt-get install -y libfaad-dev faad faac libfaac0 libfaac-dev libmp3lame-dev x264 libx264-dev libxvidcore-dev libopencore-amrnb-dev libopencore-amrwb-dev libsdl1.2-dev libtheora-dev libvorbis-dev libx11-dev libxfixes-dev zlib1g-dev speex libspeex-dev build-essential checkinstall git-core texi2html
apt-get build-dep ffmpeg
apt-get source ffmpeg
cd ffmpeg-*
./configure --enable-gpl --enable-nonfree --enable-libfaac --enable-libgsm --enable-libmp3lame --enable-libtheora --enable-libvorbis --enable-libx264 --enable-libxvid --enable-zlib --enable-postproc --enable-swscale --enable-pthreads --enable-x11grab --enable-libdc1394 --enable-version3 --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libspeex
mkdir -p /usr/local/share/ffmpeg
checkinstall -D --install=no --pkgname=ffmpeg-full --autodoinst=yes -y
dpkg -i ffmpeg-full_1.0.10-1_amd64.deb
make tools/qt-faststart
checkinstall --pkgname=qt-faststart --pkgversion="$(./version.sh)" --backup=no --deldoc=yes --default install -Dm755 tools/qt-faststart /usr/local/bin/qt-faststart
цитата
15/12/15 в 18:54
 sweetypie
Ffmpeg не требует видео карты установленной на сервере, он будет работать и без неё, правильно?
цитата
15/12/15 в 20:46
 Securom

facepalm.gif
цитата
16/12/15 в 00:19
 sweetypie
Какая версия лучше: командная или РНР?
цитата
16/12/15 в 00:32
 Sterx
ffmpeg-php
старое и неподдерживаемое УГ
спросите конфиг актуальной сборки
цитата
22/12/15 в 15:02
 sweetypie
Установили мне ffmpeg на сервере, а, теперь как им управлять, куда эти команды вводить?
цитата
22/12/15 в 15:29
 MilkSucker
Нужно подключиться к серверу по ssh/sftp протоколу софтом, типа, putty.
И из-под командной строки писать эти команды.

https://www.google.com/search?q=how+to+use+ssh&ie=utf-8&oe=utf-8
цитата
25/12/15 в 02:16
 sweetypie
MilkSucker писал:
Команда под unix:
nice /usr/local/bin/ffmpeg -y -i "_path_to_input_file_" -acodec libfaac -b:a 160k -s 1920x1080 -vcodec libx264 -movflags faststart -profile:v baseline -pix_fmt yuv420p -level:v 30 -crf 18 -vf "transpose=1" -metadata rotate=0 -threads 1 "_path_to_output_file_" :

Грубое описание:
nice - запускаем утилиту ffpmeg так чтобы она не жрала все ресурсы сервера
/usr/local/bin/ffmpeg - путь к утилите
-y - перезаписывать если файл с результаттом уже есть
-i "_path_to_input_file_" - так задается путь к исходному
-acodec libfaac -b:a 160k - настройки аудио: используем кодек libfaac, аудиобитрейт 160к
-s 1920x1080 - изменяем размер видео до 1920х1080 (HD)
-vcodec libx264 - для видео используем кодек libx264, который вроде как должен читаться всеми мобилками современными
-movflags faststart - переписываем хедеры в начало файла, чтобы запускалось сразу, без буфферицации полностью файла в кэш браузера (по идее, чтобы работала перемотка, надо еще настроить на сервере отдачу контента правильно)

Дальше сложнее, сам не очень в командах ффмпега, настройки для видео:
-profile:v baseline - видимо профиль для формата h.264, как раз чтобы подо все играло
-pix_fmt yuv420p - туда же настройки, чтобы под apple quichtime играло (https://trac.ffmpeg.org/wiki/Encode/H.264#iOS)
-level:v 30 - туда же, видимо, уровень сжатия по профилю baseline
-crf 18 - Constant Rate Factor, степень сжатия как раз
-vf "transpose=1" - так понимаю, поворачиваем вертикальное видео в горизонтальное (не уверен, возможно и без этого будет работать?)
-metadata - вырезаем все метаданные из файла (автор, кто когда и где создал)
rotate=0 - выравниваем к горизонтальному видео (не уверен, возможно и без этого будет работать?)
-threads 1 - сколько потоков ffmpeg запускать (насколько сильно грузить сервер)
"_path_to_output_file_" - куда писать результат


То же самое, но без HD:

nice /usr/local/bin/ffmpeg -y -i "_input_" -acodec libfaac -b:a 160k -s 640x360 -vcodec libx264 -movflags faststart -profile:v baseline -pix_fmt yuv420p -level:v 30 -crf 18 -vf "transpose=1" -metadata rotate=0 -threads 1 "_output_"


Мне наконец установили ffmpeg, но, кое что работает немного иначе:
когда я сказал, что нужен пат к программе, они ответили, что не нужен, и в их версии это просто "nice ffmpeg -i", и именно так работает, не знаю достаточно ли этого, чтобы делать всё что надо, но, рендерит.
Читая Ваше описание комманд, самой интересной показалась " -movflags faststart - переписываем хедеры в начало файла, чтобы запускалось сразу, без буфферицации полностью файла в кэш браузера", но, когда я её добавляю, Патти пишет так:
"[mp4 muxer @ 0x18d71c0] [Eval @ 0x7ffc934da8c0] Undefined constant or missing '(' in 'faststart'
[mp4 muxer @ 0x18d71c0] Unable to parse option value "faststart"
[mp4 muxer @ 0x18d71c0] Error setting option movflags to value faststart."
а, через несколько строчек так:
"Could not write header for output file #0 (incorrect codec parameters ?)"
Почему эта важная команда не принимается, как Вы думаете?
цитата
25/12/15 в 05:45
 MilkSucker
sweetypie писал:

когда я сказал, что нужен пат к программе, они ответили, что не нужен, и в их версии это просто "nice ffmpeg -i", и именно так работает, не знаю достаточно ли этого, чтобы делать всё что надо, но, рендерит.

да, это алиас. типа ярлык для вызова приложения. в любом случае, можно набрать which ffmpeg и он покажет полный путь.
sweetypie писал:

Читая Ваше описание комманд, самой интересной показалась " -movflags faststart - переписываем хедеры в начало файла, чтобы запускалось сразу, без буфферицации полностью файла в кэш браузера", но, когда я её добавляю, Патти пишет так:
"[mp4 muxer @ 0x18d71c0] [Eval @ 0x7ffc934da8c0] Undefined constant or missing '(' in 'faststart'
[mp4 muxer @ 0x18d71c0] Unable to parse option value "faststart"
[mp4 muxer @ 0x18d71c0] Error setting option movflags to value faststart."
а, через несколько строчек так:

видимо сборка или не полная, или старая, без поддержки faststart. Варианта два: просить поставить так чтобы была поддержка -movflags и faststart.
Или убирать эту часть из команды, писать в файл video_tmp.mp4 , а потом запускать так:
qt-faststart video_tmp.mp4 video_result.mp4
Но надо чтобы утилита qt-faststart тоже стояла на сервере, иначе не сработает. временный потом можно удалить, правильный (с хедерами в начале файла) будет в video_result.mp4
цитата
27/12/15 в 18:50
 sweetypie
MilkSucker писал:
да, это алиас. типа ярлык для вызова приложения. в любом случае, можно набрать which ffmpeg и он покажет полный путь.

видимо сборка или не полная, или старая, без поддержки faststart. Варианта два: просить поставить так чтобы была поддержка -movflags и faststart.
Или убирать эту часть из команды, писать в файл video_tmp.mp4 , а потом запускать так:
qt-faststart video_tmp.mp4 video_result.mp4
Но надо чтобы утилита qt-faststart тоже стояла на сервере, иначе не сработает. временный потом можно удалить, правильный (с хедерами в начале файла) будет в video_result.mp4


MilkSucker, cпасибо за Ваш ответ.
После Рождества эти ребята из Кэйвкрик не спешат с ответами, уже 3 дня жду))
А, пока хочу спросить: сейчас мои самплы ререндеренные явно играют до полного даунлоада в кэш, но, задерживаются с перемещением точки просмотра до 12 секунд, а, у тюбов это происходит почти мгновенно. Вы думаете, что movflags и faststart это то, что улучшит скорость навигации, даже, если и сейчас сеттинги на сервере позволяют перемещаться вдоль видео до полной загрузки, или всё таки эти сеттинги сервера как то "подкрутить" тоже, или добавить какую то утилиту в сервер?
цитата
28/12/15 в 03:32
 MilkSucker
Да, надо настраивать на сервере отдачу файлов с "промоткой", иначе все-равно чтобы мотать придется выкачать сначала весь файл в кэш.
Админ тебе нужен грамотный, в общем icon_smile.gif И доступ на сервер человеческий (root) чтобы выдать админу.
цитата
28/12/15 в 03:47
 sweetypie


spasibo za otvet, MilkSucker

Последний раз редактировалось: sweetypie (28/12/15 в 03:50), всего редактировалось 2 раз(а)
цитата
28/12/15 в 03:48
 sweetypie
MilkSucker писал:
Да, надо настраивать на сервере отдачу файлов с "промоткой", иначе все-равно чтобы мотать придется выкачать сначала весь файл в кэш.
Админ тебе нужен грамотный, в общем icon_smile.gif И доступ на сервер человеческий (root) чтобы выдать админу.


Ну, они там, вроде, мастера на CcBill, по крайней мере парочка из них, делали удивительные вещи с перекорёженным Стронгбоксом (с самой Али у меня уже несколько лет не ладилосьicon_smile.gif)
Они сами эти сервера там собирают и дают пароли, так что у них есть доступ куда угодно.
За 12 секунд весь файл не зальётся в кэш, а, примерно, столько требуется, чтобы продолжить просмотр с любого места. Значит, промотка у меня есть, правильно? Но, почему то медленнее работающая, чем в тюбах. Что может её ускорить?
цитата
28/12/15 в 04:34
 Securom
Крупные тьюбы вообще то используют CDN - content delivery system ,поэтому навигация по файлу быстрая,но это совсем другой уровень
цитата
28/12/15 в 20:51
 sweetypie


Securom, спасибо за Ваш ответ.
Вы точно знаете, что хвидеос и хаб используют CDN, а, не хранят контент в одном месте?
цитата
28/12/15 в 22:02
 Magistrator
sweetypie писал:
Securom, спасибо за Ваш ответ.
Вы точно знаете, что хвидеос и хаб используют CDN, а, не хранят контент в одном месте?


facepalm.gif

даже не сумлевайся
цитата
28/12/15 в 22:42
 Securom
Топикстартера даже потроллить нельзя,он как будто с другой планеты с такими вопросами facepalm.gif
CDN достаточно дорогое решение,я вот как нищеброд соорудил из трех гигабитных серверов типа своего CDNа и раздаю с них контент и как толпа налетает то пиздец у меня серваки напрягаются и тормозят в плане перемотки видео.
цитата
28/12/15 в 23:04
 sweetypie
spasibo

Последний раз редактировалось: sweetypie (28/12/15 в 23:06), всего редактировалось 1 раз
цитата
28/12/15 в 23:05
 sweetypie
Securom писал:
Топикстартера даже потроллить нельзя,он как будто с другой планеты с такими вопросами facepalm.gif
CDN достаточно дорогое решение,я вот как нищеброд соорудил из трех гигабитных серверов типа своего CDNа и раздаю с них контент и как толпа налетает то пиздец у меня серваки напрягаются и тормозят в плане перемотки видео.


А, по каким странам (или штатам) вы их расставили?
цитата
29/12/15 в 06:36
 Securom
Ни по каким,все видосы по очереди раздаются с каждого сервака,вот и все распределение нагрузки smail101.gif
цитата
29/12/15 в 07:08
 sweetypie


Тогда, это же не совсем CDN концепция, Вы, просто, усиливаете свой сервер, а, не "разбрасываете" его ближе к потребителю?
У меня, к сожалению нет такого ажиотажа, у меня, вообще, лимит 60т, который я и близко не раздаю.
У Вас тюб?
Стр. « первая   <  1, 2, 3, 4  >  последняя »


Эта страница в полной версии