2009-04-04 9 views
2

Я использую подобный сценарий, такой как Youtube для моего веб-сайта - загрузка видео и так, чтобы все люди могли смотреть. Мой вопрос заключается в том, что мне нужно закодировать видео после загрузки, прежде чем другие люди смогут играть удаленно, но процесс кодирования очень медленный (я пытался с помощью Microsoft Expression Encoder, а также mplayer, кодировать 20-минутное видео занимает около 10 минут). К моему удивлению, даже если мы загрузим очень большое видео на Youtube, кажется, что другие люди могут сразу выбирать и играть, похоже, что процесс кодирования занимает почти нулевое время.проблема с загрузкой файла

У вас есть идеи? Как Youtube так быстро закодировал процесс? Или Youtube полностью пропустит процесс кодирования - но если пропустить процесс кодирования, как Youtube может обеспечить воспроизведение всех загружаемых видео (например, видео следуют некоторым параметрам, таким как скорость передачи, размер изображения или что-то еще)?

спасибо заранее, Джордж

+0

Где вы управляете этим кодером? На вашем крошечном рабочем столе или на соответствующем сервере? –

+0

@ S.Lott, я запускаю его на сервере. Он имеет 2 процессора, Windows Server 2003 и x64, 4G RAM. Кодирование видео I составляет около 80 м, для кодирования видео требуется около 40-50 минут (вся длина видео составляет около 90 минут). Любые идеи для улучшения производительности? – George2

ответ

3

Не стоит забывать, что YouTube принадлежит Google, так что наличие 450,000доступных серверов может помощь!

(немного шутливым, ответ, я признаюсь. И, очевидно, YouTube не будет иметь доступ ко всем из них. Но суть остается, что они будут иметь феноменальное количество ресурсов, чтобы бросить в этом вопросе)

+0

@Brian, хотя кодирование видео должно занять некоторое время. Я не думаю, что youtube разделит мое 20-мегапиксельное видео на сотни частей, распределит на сотни машин, закодирует на каждой отдельной машине и объединит их вообще? – George2

+0

(продолжение) Возможно, Youtube не кодируется вообще? Я не нашел такой информации. Любые идеи или комментарии? – George2

+0

Признаюсь, я не знаю, как YouTube будет использовать такие ресурсы, но Google является экспертом в подразделении и параллелизацией работы, поэтому я был бы удивлен, если какая-то параллелизация не произойдет. Полная догадка, однако –

1

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

Посмотрите на http://www.ffmpegx.com/ на уровень техники в технологии кодировщика с открытым исходным кодом. Они объединяют разнообразные технологии.

+0

@ S.Lott, я пробовал с ffmpegx, я думаю, что mplayer использует его внутри. На моем компьютере закодировано 20 минут видео занимает 10 минут. Итак, я думаю, Google не использует что-то подобное. Вы уверены, что Youtube будет кодировать видео или не кодироваться вообще (просто играть то, что загружено)? – George2

+0

Я настоятельно рекомендую x264. Он может кодировать видео MPEG4 быстрее, чем в режиме реального времени, с соответствующими настройками. –

1

Кроме того, аппаратный кодер, вероятно, используется youtube.

И, возможно ли играть во время кодирования, только если кодирование выполняется быстрее, чем воспроизведение.

+0

@arsane, 1. любая ссылка на H/W-кодировщик, которая быстрее? 2. «возможно ли воспроизведение во время кодирования только в том случае, если кодирование происходит быстро, а затем воспроизвести его» - у меня нет опыта, не могли бы вы показать мне какую-то ссылку, которая показывает, как воспроизводить видео, пока он еще находится в процессе кодирования? – George2

+0

(продолжение) Я также хочу узнать некоторые рекомендации о том, когда мы должны кодировать и когда мы не должны кодировать. На самом деле, я не вижу каких-либо преимуществ кодирования - без кодирования, загруженное видео все равно может быть воспроизведено. :-) – George2

+0

Для кодировщика H/W вы можете иметь его. Но я понятия не имею, какой кодировщик H/W является лучшим. like: http://www.streetwise.com.au/product_info.php?products_id=7061 может кодировать на youtube vedio. Для второго способа воспроизведения/кодирования я не специалист по кодированию, но я думаю, что это должно быть возможно. –

1

Как Youtube так быстро закодировал процесс?

Без каких-либо конкретных инсайдерских знаний, я бы ожидать (1) измельчения входного видео в более короткие сегменты для отправки нескольких кодеров, и (2), кодирующего поток в то же время, как вы загружаете его, а не до тех пор, пока вы не загрузите весь файл для запуска.

Или Youtube полностью пропустить процесс закодировать

Нет, все должны быть преобразованы в FLV для воспроизведения.

+0

@bobince, 1. Есть ли какой-либо ссылочный код или документы о том, как реализовать кодирование одновременно при загрузке? Мне очень интересно узнать больше об этой классной идее. – George2

+0

(продолжение) 2. У вас есть какие-либо документы или образцы о том, как разделить видео на мелкие части, закодировать их и повторно собрать? Я очень смущен тем, как делиться и как разорвать, потому что я думаю, что нам нужно разобрать и понять внутренний видеоформат, чтобы разделить/собрать сборку? – George2

+0

Вам придется обрабатывать тело запроса, анализируя себя, вместо того, чтобы оставлять его в синтаксическом анализаторе формы на любой более высокоуровневой структуре/языке, который вы используете. Затем вы будете использовать что-то вроде libavformat ffmpeg для демонстрации потоков и разделить на независимые пакеты, где это позволяет формат. – bobince

Смежные вопросы