Date Редакция Категория comp Теги LaTeX / beamer / pdf

Формат PDF позволяет создавать динамические документы, в том числе -- внедрять в них фрагменты видео при помощи механизма Rich Media Annotation (RMA), впервые появившегося в 9-ой версии Adobe Acrobat/Reader.

Поддерживаемые видео-, аудио- и интерактивные форматы

В файлах PDF можно воспроизводить следующие типы мультимедийного содержимого:

  • Интерактивное мультимедийное содержимое: файлы SWF.
  • Видео. Включает файлы форматов MOV, MP4, M4V, 3GP и 3G2, в которых используется сжатие H.264. Также поддерживаются файлы FLV, F4V. Для воспроизведения файлов, в которых используется сжатие H.264, требуется наличие на компьютере кодеков H.264.
  • Аудио: MP3 и MP4.

Всё это очень хорошо. Проблема заключается в том, что полностью эти возможности реализуются лишь в случае, когда PDF-документ создан при помощи Adobe Acrobat и просматривается программой Adobe Acrobat Reader.

Ограничения

  1. программа просмотра PDF-документов должна поддерживать возможность воспроизведения видео (т.е. RMA). На сегодняшний день таких программ совсем немного. В первую очередь, это Adobe Reader версий 9+ и Okular (Linux). Если под Windows можно использовать Adobe Reader указанных версий, то для Linux это должен быть Reader версий 9.0–9.4.1, поскольку Reader'ы более новых версий не поддерживают воспроизведение видео из соображений безопасности. Старые версии Adobe Reader'a для Linux можно найти здесь.
  2. зависимость от платформы существует как при просмотре, так и при создании видео. Вопрос, как добиться, чтобы видео, вставленное в PDF на одной платформе, воспроизводилось на другой платформе, мы будем рассматривать по ходу нашего рассказа.

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

  • преобразовать видео в последовательность кадров и воспроизвести как анимацию (снимаются вопросы с кодеками);
  • запускать видео в отдельном окне: "Конвертация PDF в PowerPoint"
  • наконец, пожертвовать векторностью формата и конвертировать PDF в презентацию PowerPoint, составленную из рисунков.

multimedia: вставка AVI

Пакет multimedia является частью beamer, но может использоваться и отдельно. С его помощью можно воспроизводить локальные файлы (\movie, \sound) и файлы, расположенные по заданному URL (\hyperlinkmovie, \hyperlinksound). Подробности можно узнать в главе 14 "Animations, Sounds, and Slide Transitions" руководства по beamer.

Формат команды \movie:

\movie[опции]{заглушка}{медиа-файл}

Опциями могут быть размеры кадра. "Заглушка" показывается в документе до того, как начнёт воспроизводится видео. Это может быть обычный текст, но я предпочитаю вставить картинку, равную по размеру кадру видео. Лучше всего на эту роль подходит первый кадр из того же видео.

\documentclass{article}
\usepackage{graphicx}
\usepackage{multimedia}
\begin{document}
\movie[width=0.5\textwidth]{\includegraphics[width=0.5\textwidth]{flocking1.jpg}}{flocking1.avi}
\end{document}

При использовании multimedia видео- и аудиофайлы не внедряются в документ PDF.

Как известно, файлы AVI представляют собой медиконтейнеры, в которых хранятся видео- и аудио- данные, сжатые разными кодеками. Вопрос, какими кодеками надо сжимать данные, чтобы результат воспроизводился multimedia в документации к пакету не описан, так что решать его придётся экспериментально. По моему опыту, онлайновый сервис позволяет получить нужные AVI.

media9: вставка видео, аудио и 3D-графики

Этот пакет позволяет внедрять в документ PDF файлы интерактивного мультимедийного содержимого (SWF) и 3D-графику (Adobe U3D и PRC). Кроме того, с его помощью в PDF можно внедрить файлы MP4, FLV и MP3. Однако для их воспроизведения в PDF нужно внедрить также небольшой проигрыватель Flash-анимации. Обо всём этом подробно написано в документации, а необходимые проигрыватели поставляются вместе с пакетом.

В media9 входит также проигрыватель SlideShow.swf, позволяющий внедрять в документ и просматривать галереи изображений, составленные из файлов PNG, JPEG или GIF, как локальных, так и расположенных удалённо.

SWF

В следующем примере в PDF-документ внедряется flash-анимация blendone.swf. В качестве постера, который отображается на странице документа перед воспроизведением видео, использован файл FlashPoster.jpg (источник файлов):

% media9-swf.tex
\documentclass{article}
\usepackage{media9}
\usepackage[english]{babel}

\begin{document}
\includemedia[activate=onclick, width=0.5\textwidth]
             {\includegraphics{FlashPoster.jpg}}{blendone.swf}
\end{document}

Результат: media9-swf.pdf.

MP4

Растровые видеофайлы перед внедрением нужно конвертировать в формат MP4 со сжатием H.264. В Windows для этого можно использовать бесплатную версию Any Video Converter, в Linux — программу avconv или ffmpeg, например так:

ffmpeg -i sample.avi -vcodec libx264 sample.mp4   # sample.avi -> sample.mp4
ffmpeg -i frame-%d.png -vcodec libx264 sample.mp4 # последовательность кадров frame-0.png, frame-1.png, ... в sample.mp4

Внедряем полученное видео в файл:

% media9-mp4.tex
\documentclass{article}
\usepackage[english]{babel}
\usepackage{media9}

\begin{document}
\includemedia[
  activate=pageopen,
  width=320pt,height=180pt,
  addresource=big_buck_bunny.mp4,
  flashvars={%
        source=big_buck_bunny.mp4
        &loop=true}
]{}{VPlayer.swf}
\end{document}

(источник файла)

Результат: media9-mp4.pdf.

FLV

% rope-flv.tex
\documentclass{article}
\usepackage[english]{babel}
\usepackage{media9}

\begin{document}
\includemedia[
  activate=pageopen,
  width=136pt,height=208pt,
  addresource=btrope.flv,
  flashvars={%
        source=btrope.flv
        &loop=true}
]{}{VPlayer9.swf}
\end{document}

Кроме того, media9 позволяет воспроизводить файлы, находящиеся на популярных медиа-хостингах, например, на YouYube.

При внедрении в документ SWF-файла никаких дополнительных плееров внедрять не нужно. Для воспроизведения в Windows используется Adobe Reader 9+, а в Linux -- Adobe Reader версий 9.0–9.4.1

Для воспроизведения как в Windows, так и в Linux внедрённых MP4 и FLV, нужно при создании файла использовать плееры VPLayer9.swf или APlayer9.swf, которые входят в состав media9.

Если PDF-файл с видео предполагается использовать только на платформе Windows, то можно использовать любой SWF-плеер из предлагаемых media9 (VPLayer, APlayer и т.д.).

Если после выполнения этих рекомендаций внедрённое видео всё же не воспроизводится, то, скорее всего, дело в ошибке кодировании кодеком H.264. Попробуйте создать документ с другим MP4-файлом, гарантированно закодированным H.264, или воспользуйтесь онлайновым сервисом конвертирования.

Преимуществом media9 по сравнению multimedia* является то, что список поддерживаемых форматов и кодеков в нём подробно оговорен и к пакету прилагаются все необходимые плееры, тогда как в multimedia** формально поддерживается все форматы, которые можно воспроизводить в PDF, а фактически -- только AVI. При этом то, какие кодеки можно использовать для кодирования AVI, определяется экспериментально.

Зато созданные multimedia документы можно, как правило, просматривать при помощи Okular.

Использование видео без внедрения в PDF

Когда нужно использовать видео большого размера, внедрять его в PDF становится нецелесообразно. Для создания презентаций, в которых видео хранится отдельно, можно использовать пакет mulimedia. В media9 для отдельного хранения видео придётся использовать небольшой трюк, описанный здесь.

rmannot: создание RMA в PDF-файле

С помощь пакета rmannot можно создавать RMA, позволяющие внедрять и воспроизводить в документе SWF, FLV и MP3-файлы.

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

animate: анимация на основе последовательности изображений

Пакет animate позволяет создавать анимацию на основе последовательности изображений из графических файлов PDF, MPS (METAPOST), JPEG, PNG и др. или из изображений, созданных непосредственно в LaTeX c помощью PSTricks или Tikz. Анимированный GIF-файл перед внедрением нужно разделить на отдельные кадры, представленные в виде последовательности файлов PNG или EPS, поскольку непосредственное внедрение GIF не поддерживается спецификацией PDF.

Анимация последовательности файлов выполняется командой \animategraphics. Предположим, что необходимо воспроизвести изображения из файлов image1.png, ..., image4.png. Запишем:

% animate-png.tex
\documentclass{article}
\usepackage{animate}
\usepackage[english]{babel}

\begin{document}
\animategraphics[controls,width=5.6cm]{1}{image}{1}{4}
\end{document}

Формат \animategraphics:

\animategraphics[<опции>]{<частота_кадров>}{<базовая_часть_имени_файла>}
                                                {<начальный_номер>}{<конечный номер>}

Результат: animate-png.pdf.

Преобразование видео в последовательность кадров в Linux выполняется программами convert или ffmpeg, например, так:

convert animated.avi frame.png % Создаются файлы кадров: frame-0.png, frame-1.png, ... 

В Windows для этой цели можно использовать VirtualDub. Поддержка MKV, MP4 и MOV добавляется в VirtualDub с помощью плагина.

Другие варианты получения последовательности кадров из видео описаны здесь.

Воспроизведение видео в отдельном окне

В пакете hyperref у команды \href существует опция run, позволяющая запускать файлы на диске.

\documentclass{article}
\usepackage{graphicx} % для вставки flocking1.jpg
\usepackage{hyperref}
\begin{document}
  \href{run:flocking1.avi}{\includegraphics[scale=0.25]{flocking1.jpg}}
\end{document}

Минус этой процедуры в том, что файлы запускаются в отдельном окне. Но зато: нет проблем с кроссплатформенностью, форматами видео, кодеками и пакетами; видео хранится отдельно от PDF.

Конвертация PDF в PowerPoint

выполняется в два этапа

  1. PDF в изображения. В Windows можно использовать STDU Viewer, в Linux -- утилиту convert.
  2. Изображения в PPT. В PowerPoint 2007: вкладка Вставка -> Фотоальбом -> Создать фотоальбом... (Insert Tab -> Photo Album -> New Photo Album).

После этого можно вставлять в презентацию видео обычным для PowerPoint способом.

Чтобы у PowerPoint не возникли проблемы с воспроизведением, видео лучше сохранить в формате WMV или конвертировать в этот формат готовый AVI-файл. В Linux это можно сделать с помощью avconv (или *ffmpeg'):

avconv -i video.avi -vcodec wmv2 video.wmv


Комментарии

comments powered by Disqus