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 писал:
Я не очень понимаю как Линукс версию установить, но в моём Кейвкрик (Ццбилл) сервере работает Петер, единственный, который разбирается во всём, что нужно, надеюсь, он поможет с установкой.
Да, нужен админ.
Главное чтобы он установил 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
цитата
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
Да, надо настраивать на сервере отдачу файлов с "промоткой", иначе все-равно чтобы мотать придется выкачать сначала весь файл в кэш.
Админ тебе нужен грамотный, в общем
И доступ на сервер человеческий (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 писал:
Да, надо настраивать на сервере отдачу файлов с "промоткой", иначе все-равно чтобы мотать придется выкачать сначала весь файл в кэш.
Админ тебе нужен грамотный, в общем
И доступ на сервер человеческий (root) чтобы выдать админу.
Ну, они там, вроде, мастера на CcBill, по крайней мере парочка из них, делали удивительные вещи с перекорёженным Стронгбоксом (с самой Али у меня уже несколько лет не ладилось
)
Они сами эти сервера там собирают и дают пароли, так что у них есть доступ куда угодно.
За 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, а, не хранят контент в одном месте?
даже не сумлевайся
цитата
28/12/15 в 22:42
Securom
Топикстартера даже потроллить нельзя,он как будто с другой планеты с такими вопросами
CDN достаточно дорогое решение,я вот как нищеброд соорудил из трех гигабитных серверов типа своего CDNа и раздаю с них контент и как толпа налетает то пиздец у меня серваки напрягаются и тормозят в плане перемотки видео.
цитата
28/12/15 в 23:04
sweetypie
spasibo
Последний раз редактировалось: sweetypie (
28/12/15 в 23:06
), всего редактировалось 1 раз
цитата
28/12/15 в 23:05
sweetypie
Securom писал:
Топикстартера даже потроллить нельзя,он как будто с другой планеты с такими вопросами
CDN достаточно дорогое решение,я вот как нищеброд соорудил из трех гигабитных серверов типа своего CDNа и раздаю с них контент и как толпа налетает то пиздец у меня серваки напрягаются и тормозят в плане перемотки видео.
А, по каким странам (или штатам) вы их расставили?
цитата
29/12/15 в 06:36
Securom
Ни по каким,все видосы по очереди раздаются с каждого сервака,вот и все распределение нагрузки
цитата
29/12/15 в 07:08
sweetypie
Тогда, это же не совсем CDN концепция, Вы, просто, усиливаете свой сервер, а, не "разбрасываете" его ближе к потребителю?
У меня, к сожалению нет такого ажиотажа, у меня, вообще, лимит 60т, который я и близко не раздаю.
У Вас тюб?
Стр.
« первая
<
1
,
2
,
3
,
4
>
последняя »
Новая тема
Ответить
Эта страница в полной версии