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
Форумы портала PHP.SU :: Версия для печати :: Программно конвертнуть MP4 в FLV
Форумы портала PHP.SU » » Работа с файловой системой и файлами » Программно конвертнуть MP4 в FLV

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

1. MAXUS - 23 Июня, 2014 - 17:10:11 - перейти к сообщению
Задача написать конвертер из MP4 в FLV. Собственно, нашел подробное описание FLV, а MP4 не могу найти (уже день ковыряюсь). Кто-нибудь что-нибудь знает абетам? Может сталкивался с разборкой MP4?

Сразу скажу, что в итоге надо для флэшки, т.к. она умеет закидывать в поток побайтно тока FLV. А надо закинуть MP4 и именно этим способом, поэтому просто переконвертировать файл не пойдет. Просто переконвертировать - это простая задача.
2. LIME - 23 Июня, 2014 - 18:14:47 - перейти к сообщению
ffmpeg смотрел?
3. MAXUS - 23 Июня, 2014 - 19:57:35 - перейти к сообщению
LIME пишет:
ffmpeg смотрел?


Смотрел, в принципе. Неделю экспериментировал. Конвертить он конвертит. В принципе и поток создать, насколько я понял, может. Но мне всего лишь контейнер поменять надо. Тупо подставить оболочку другую, но налету.
4. LIME - 23 Июня, 2014 - 21:34:39 - перейти к сообщению
под контейнером mp4 насколько знаю скрывается целая батарея форматов
ты уверен что знаешь о чем говоришь?
я нет(про себя)
5. MAXUS - 23 Июня, 2014 - 21:38:58 - перейти к сообщению
LIME пишет:
под контейнером mp4 насколько знаю скрывается целая батарея форматов
ты уверен что знаешь о чем говоришь?
я нет(про себя)


Да, как раз нужен контейнер. Flash поддерживает FLV и MP4 контейнеры с кодеком H.264, но читать побайтово в поток позволяет только из FLV контейнера. Вернее понимает только, когда в поток передаются данные в этом формате.
6. caballero - 23 Июня, 2014 - 22:17:39 - перейти к сообщению
так при конвертации ffmpeg и указывается какой будет контейнер какой видео формат какой аудио формат и т.д
7. Viper - 23 Июня, 2014 - 23:32:25 - перейти к сообщению
MAXUS http://en[dot]wikipedia[dot]org/wiki/Fla[dot][dot][dot]#endnote_h264[dot]2A

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

читать поток из контейнера в поток?! Это вообще как?
8. caballero - 24 Июня, 2014 - 00:12:09 - перейти к сообщению
имеется ввиду что флеш читает потоковое видео только с flv
остальное он сначала грузит целиком потом проигрывает
9. Viper - 24 Июня, 2014 - 16:35:04 - перейти к сообщению
caballero эммм...

Все равно контейнеры mkv, mp4, webm даже если с них запросить к примеру кусок потока, нужно будет делать "seek", а не "jump".
10. caballero - 24 Июня, 2014 - 16:36:20 - перейти к сообщению
контейнер FLV - флеш сам с него тянет потоком.
11. MAXUS - 25 Июня, 2014 - 07:43:28 - перейти к сообщению
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...
12. caballero - 25 Июня, 2014 - 12:51:32 - перейти к сообщению
Цитата:
класс, который организует передачу входящего потока в плеер, воспринимает информацию адекватно только если файл упакован в FLV контейнер. Вот такой казус.

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


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

ни один формат не универсальный потому как о стандартах производители браузеров так и не договорились.
посему чтобы везде играло кладут файл в нескольких форматах FLV, MP4,AVI ,WEBM и т.д.
а в плеере уже указывают нужный (или список как в HTML5) а он подхватывает тот который понимает.
естественно в зависимости от типа браузера или платформы (IPhone например)
нужно подставить нужный параметр или тег
сам так делал когда-то - чтобы играло в HTML5, IE8 и IPAD конвертил видео после аплоада в 4 формата с помощью ffmpeg
13. MAXUS - 25 Июня, 2014 - 23:41:25 - перейти к сообщению
caballero пишет:
это не казус - FLV адобовский формат именно для флеша потому оно и умеет с ним работать


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


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


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

А, кстати, AVI чем проигрывается?
14. Viper - 26 Июня, 2014 - 09:45:58 - перейти к сообщению
MAXUS пишет:
ЗЫ Кстати HTML5 плеер умеет переходить на любую точку видео без предзагрузки файла по умолчанию

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

MAXUS пишет:
А, кстати, AVI чем проигрывается?
ничем, если не хотите опыта анального секса.
15. MAXUS - 30 Июня, 2014 - 06:27:04 - перейти к сообщению
Viper пишет:
MAXUS пишет:
ЗЫ Кстати HTML5 плеер умеет переходить на любую точку видео без предзагрузки файла по умолчанию

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


С того, что умеет. Если moov атом расположен в начале файла и вся информация о ключевых кадрах, соответственно, доступна при его загрузке, то переходить можно сразу на любую точку видео. Буферизация бьется на ranges, а потом по мере загрузки объединяется в один range.

 

Powered by ExBB FM 1.0 RC1