Запись видеофайла и одновременное его воспроизведение.

В своем веселом проекте я загружаю видеофайл с YouTube и записываю в файл на локальном диске. Одновременно я хочу играть в нее. Цель состоит в том, чтобы кэшировать файл на локальном диске, чтобы при повторном просмотре видео приложение могло воспроизводить его локально, тем самым экономя пропускную способность.

я использую Python 3.3.1, PyQt4/Phonon а также LibVLC. Пока что я могу делать следующие вещи:

  • Учитывая YouTube часы URL, я могу скачать видео файл и затем играть в нее, используя PyQt4 / Phonon и LibVLC, независимо. Это не потоковый.

  • Поскольку LibVLC поддерживает потоковую передачу, я могу воспроизводить данный URL через потоковую передачу.

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

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

Я полностью в порядке с любым API (который делает работу), пока он:

  • Python 3.3.1 (желательно)
  • С
  • C ++.

И я также ищу альтернативные подходы, если мой текущий подход не верен или делает проблему более сложной, чем она есть на самом деле.

4

Решение

VLC поддерживает воспроизведение неполных файлов, поэтому, если вам нужно немного неблокирующего ввода-вывода и / или параллельного кода, вы сможете начать загрузку, и после того, как будет написано достаточное количество, используйте LibVLC для запуска воспроизведение. В зависимости от того, какой алгоритм сжатия используется, вам может понадобиться достаточно буферизовать, чтобы в буфере всегда оставалось несколько секунд данных — если я правильно помню, некоторые из более современных алгоритмов записывают дельты и информацию индекса в прямом и обратном направлении.

Вы можете получить несколько предупреждений / сообщений об ошибках / исключений, но я бы не стал считать их фатальными — пусть качество воспроизведения будет вашим руководством!

Это несколько похоже на некоторые предложения из комментариев выше, а также связано с тем, что сказал @abarnert, в меньшей степени с обменом с @StackedCrooked.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]