Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Программно конвертнуть MP4 в FLV

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): [1] 2 »   

> Описание: Описание контейнеров MP4 и FLV и программная конвертация
MAXUS
Отправлено: 23 Июня, 2014 - 17:10:11
Post Id


Посетитель


Покинул форум
Сообщений всего: 329
Дата рег-ции: Апр. 2011  


Помог: 7 раз(а)




Задача написать конвертер из MP4 в FLV. Собственно, нашел подробное описание FLV, а MP4 не могу найти (уже день ковыряюсь). Кто-нибудь что-нибудь знает абетам? Может сталкивался с разборкой MP4?

Сразу скажу, что в итоге надо для флэшки, т.к. она умеет закидывать в поток побайтно тока FLV. А надо закинуть MP4 и именно этим способом, поэтому просто переконвертировать файл не пойдет. Просто переконвертировать - это простая задача.
 
 Top
LIME
Отправлено: 23 Июня, 2014 - 18:14:47
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




ffmpeg смотрел?
 
 Top
MAXUS
Отправлено: 23 Июня, 2014 - 19:57:35
Post Id


Посетитель


Покинул форум
Сообщений всего: 329
Дата рег-ции: Апр. 2011  


Помог: 7 раз(а)




LIME пишет:
ffmpeg смотрел?


Смотрел, в принципе. Неделю экспериментировал. Конвертить он конвертит. В принципе и поток создать, насколько я понял, может. Но мне всего лишь контейнер поменять надо. Тупо подставить оболочку другую, но налету.
 
 Top
LIME
Отправлено: 23 Июня, 2014 - 21:34:39
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




под контейнером mp4 насколько знаю скрывается целая батарея форматов
ты уверен что знаешь о чем говоришь?
я нет(про себя)
 
 Top
MAXUS
Отправлено: 23 Июня, 2014 - 21:38:58
Post Id


Посетитель


Покинул форум
Сообщений всего: 329
Дата рег-ции: Апр. 2011  


Помог: 7 раз(а)




LIME пишет:
под контейнером mp4 насколько знаю скрывается целая батарея форматов
ты уверен что знаешь о чем говоришь?
я нет(про себя)


Да, как раз нужен контейнер. Flash поддерживает FLV и MP4 контейнеры с кодеком H.264, но читать побайтово в поток позволяет только из FLV контейнера. Вернее понимает только, когда в поток передаются данные в этом формате.
 
 Top
caballero
Отправлено: 23 Июня, 2014 - 22:17:39
Post Id


Активный участник


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


Помог: 126 раз(а)




так при конвертации ffmpeg и указывается какой будет контейнер какой видео формат какой аудио формат и т.д


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
Viper
Отправлено: 23 Июня, 2014 - 23:32:25
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




MAXUS http://en[dot]wikipedia[dot]org/wiki/Fla[dot][dot][dot]#endnote_h264[dot]2A

MAXUS пишет:
но читать побайтово в поток позволяет только из FLV контейнера. Вернее понимает только, когда в поток передаются данные в этом формате.

читать поток из контейнера в поток?! Это вообще как?


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
caballero
Отправлено: 24 Июня, 2014 - 00:12:09
Post Id


Активный участник


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


Помог: 126 раз(а)




имеется ввиду что флеш читает потоковое видео только с flv
остальное он сначала грузит целиком потом проигрывает


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
Viper
Отправлено: 24 Июня, 2014 - 16:35:04
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




caballero эммм...

Все равно контейнеры mkv, mp4, webm даже если с них запросить к примеру кусок потока, нужно будет делать "seek", а не "jump".


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
caballero
Отправлено: 24 Июня, 2014 - 16:36:20
Post Id


Активный участник


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


Помог: 126 раз(а)




контейнер FLV - флеш сам с него тянет потоком.


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
MAXUS
Отправлено: 25 Июня, 2014 - 07:43:28
Post Id


Посетитель


Покинул форум
Сообщений всего: 329
Дата рег-ции: Апр. 2011  


Помог: 7 раз(а)




Viper пишет:
читать поток из контейнера в поток?! Это вообще как?


У флэшки есть плеер, которому можно закинуть урл и он сам разберется, что с ним делать. Воспринимает FLV, F4V и MP4 (это все контейнеры). Но при таком подходе поиск (т.е. переход на определенную точку видео) возможен только после того момента, как загрузка дойдет до требуемого кадра. Т.е. для воспроизведения какого-либо фрагмента в конце файла нужно дождаться практически полной загрузки видео в кэш. Это особенности progressive download.
Но есть способ интереснее. Есть два класса. Один умеет открывать урл как поток и читать его. Второй умеет получать байты и передавать их в плеер (по сути еще один поток). Т.е. берем первый класс, тащим в него урл и полученные байты транслируем во входящий поток плеера. При помощи некоторых манипуляций с бубном можно заставить плеер переходить на любой кадр без предварительной загрузки всего файла, т.е. очень быстро. Но беда в том, что класс, который организует передачу входящего потока в плеер, воспринимает информацию адекватно только если файл упакован в FLV контейнер. Вот такой казус. Просто так MP4 играет, а через поток бреет.
Идея в том, чтобы читать MP4 потоком, подсовывать во входящий поток плеера обертку от FLV, а потом передавать уже сами кадры из MP4, т.к. по сути внутри контейнера разницы уже нет, потому что кодек один и тот же. По идее должно работать, но не хватает знаний об организации MP4. И ищется с трудом.

А конвертировать в FLV - это не вариант, т.к. FLV формат не универсальный и, например, HTML5 плеер его не понимает. Т.е. в основном на видеохостингах используют MP4 H.264 или WEBM H.264.

ЗЫ Кстати HTML5 плеер умеет переходить на любую точку видео без предзагрузки файла по умолчанию. Это вообще нехитрая операция. Просто seek(time) и все. И почему Adobe так не сделал до сих пор для меня загадка.

ЗЫЫ Еще кстати... Такой прогноз... Если adobe сделают в плеере поддержку WEBM, то MP4 контейнер, возможно, достаточно быстро умрет, т.к. WEBM заголовки короче и читаются гораздо быстрее. Например, youtube уже по возможности отдает WEBM, а Opera HTML5 вообще не поддерживает MP4...

(Отредактировано автором: 25 Июня, 2014 - 08:14:23)

 
 Top
caballero
Отправлено: 25 Июня, 2014 - 12:51:32
Post Id


Активный участник


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


Помог: 126 раз(а)




Цитата:
класс, который организует передачу входящего потока в плеер, воспринимает информацию адекватно только если файл упакован в FLV контейнер. Вот такой казус.

это не казус - FLV адобовский формат именно для флеша потому оно и умеет с ним работать


Цитата:
А конвертировать в FLV - это не вариант, т.к. FLV формат не универсальный и, например, HTML5 плеер его не понимает.

ни один формат не универсальный потому как о стандартах производители браузеров так и не договорились.
посему чтобы везде играло кладут файл в нескольких форматах FLV, MP4,AVI ,WEBM и т.д.
а в плеере уже указывают нужный (или список как в HTML5) а он подхватывает тот который понимает.
естественно в зависимости от типа браузера или платформы (IPhone например)
нужно подставить нужный параметр или тег
сам так делал когда-то - чтобы играло в HTML5, IE8 и IPAD конвертил видео после аплоада в 4 формата с помощью ffmpeg


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
MAXUS
Отправлено: 25 Июня, 2014 - 23:41:25
Post Id


Посетитель


Покинул форум
Сообщений всего: 329
Дата рег-ции: Апр. 2011  


Помог: 7 раз(а)




caballero пишет:
это не казус - FLV адобовский формат именно для флеша потому оно и умеет с ним работать


Это понятно. Не понятно, почему в этом режиме не сделать еще и поддержку MP4? Сначала было не понятно. Потом пришел к выводу, что они не предполагали, что таким образом будут проигрывать видео, а просто сделали, чтобы на этот режим можно было замкнуть камеру (а в этом случае по большому счету одного любого формата достаточно).


caballero пишет:
посему чтобы везде играло кладут файл в нескольких форматах FLV, MP4,AVI ,WEBM и т.д.


Теоретически MP4 должен запускаться везде либо через HTML5, либо через flash. Т.е. один из этих вариантов как правило проканывает. А держать дубли не каждый может себе позволить. В моем случае один ролик в среднем 600 мегабайт. На 4 формата - это 2,4 гига. Место в 4 раза быстрее кончится, поэтому этот вариант не рассматриваетсяУлыбка
(Добавление)

А, кстати, AVI чем проигрывается?

(Отредактировано автором: 25 Июня, 2014 - 23:57:51)

 
 Top
Viper
Отправлено: 26 Июня, 2014 - 09:45:58
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




MAXUS пишет:
ЗЫ Кстати HTML5 плеер умеет переходить на любую точку видео без предзагрузки файла по умолчанию

с чего вы это взяли?

MAXUS пишет:
А, кстати, AVI чем проигрывается?
ничем, если не хотите опыта анального секса.

(Отредактировано автором: 26 Июня, 2014 - 09:46:27)



-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
MAXUS
Отправлено: 30 Июня, 2014 - 06:27:04
Post Id


Посетитель


Покинул форум
Сообщений всего: 329
Дата рег-ции: Апр. 2011  


Помог: 7 раз(а)




Viper пишет:
MAXUS пишет:
ЗЫ Кстати HTML5 плеер умеет переходить на любую точку видео без предзагрузки файла по умолчанию

с чего вы это взяли?


С того, что умеет. Если moov атом расположен в начале файла и вся информация о ключевых кадрах, соответственно, доступна при его загрузке, то переходить можно сразу на любую точку видео. Буферизация бьется на ranges, а потом по мере загрузки объединяется в один range.
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Работа с файловой системой и файлами »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB