Адаптация видео для LaTeX с помощью ffmpeg не дает ожидаемого результата

427
TomCho

В течение нескольких недель я пытался встроить несколько видео (созданных с помощью python-Matplotlib) в свою презентацию Latex / Beamer в соответствии с примерами, подобными этому, в которых используется пакет под названием media9. Компиляция документа не показывает ошибок, но все равно не работает.

В основном он использует проигрыватель Flash в PDF для воспроизведения, и поэтому видео, которые он воспроизводит, очень ограничено (с точки зрения поддерживаемых кодеков, расширений и т. Д.). Если я буду следовать документации и конвертировать старое видео, которое у меня было, в правильные спецификации, то это будет работать. Тем не менее, я не могу заставить его работать на видео, которые я создаю в настоящее время, и я не могу сказать, что вызывает эту разницу.

Согласно документации :

Flash Player поддерживает эффективный кодек H.264 для сжатия видео. Видеофайлы MP4 / H.264 могут быть закодированы из существующих видеофайлов и из пронумерованных битовых последовательностей с использованием инструментов командной строки ffmpeg ( http://ffmpeg.org .) Или avconv ( http://libav.org .). Чтобы обеспечить точный поиск в видеофайлах, необходимо кодировать их с достаточным количеством ключевых кадров. Командная строка для записи существующего видеофайла video.avi в video.mp4 читает

ffmpeg -i video.avi -vf scale="trunc(iw/2)*2:trunc(ih/2)*2" -c:v libx264 -profile:v high -pix_fmt yuv420p -g 30 -r 30 video.mp4 

Вещи, которые я пробовал:

Я попытался создать видео с Matplotlib, используя ffmpegс правильными характеристиками уже ( -pix_fmt yuv420p -g 30 -r 30, codec=libx264и .mp4расширение). Это не сработало.

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

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

Вот пример одного из моих старых видео, которые работают с ffmpeg -i(после использования команды выше):

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'convB_C250_txy0.mp4.mp4': Metadata: major_brand : isom minor_version : 512 compatible_brands: isomiso2avc1mp41 encoder : Lavf57.83.100 Duration: 00:00:20.83, start: 0.000000, bitrate: 11867 kb/s Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1080x840, 11864 kb/s, 30 fps, 30 tbr, 15360 tbn, 60 tbc (default) Metadata: handler_name : VideoHandler 

А теперь пример видео, которое я недавно создал, прошло через ту же команду, но это не работает:

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'convC1_old.mp4.mp4': Metadata: major_brand : isom minor_version : 512 compatible_brands: isomiso2avc1mp41 encoder : Lavf57.83.100 Duration: 00:00:04.13, start: 0.000000, bitrate: 226 kb/s Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1080x840, 222 kb/s, 30 fps, 30 tbr, 15360 tbn, 60 tbc (default) Metadata: handler_name : VideoHandler 

Единственное отличие, которое я вижу в обоих, - это битрейт, который не должен иметь значения. Но даже в этом случае я не могу сравнить битрейт нового видео со старым.

Есть что-то, чего я здесь не хватает?

2
`Media9` показывает какие-либо сообщения об ошибках? Добавьте `-movflags + faststart` и` -bf 0` и проверьте. Gyan 6 лет назад 0
@Mulvya Нет, не показывает никаких предупреждений или сообщений об ошибках. Я скомпилировал вывод, который я уже сделал в `.mp4` с помощью` ffmpeg -i convC1_old.mp4 -vf scale = "trunc (iw / 2) * 2: trunc (ih / 2) * 2" -c: v libx264 -profile: v high -pix_fmt yuv420p -g 30 -r 30 -movflags + faststart -bf 0 convC1_old.mp4.mp4`, согласно вашему предложению, но результат был тем же. TomCho 6 лет назад 0

0 ответов на вопрос

Похожие вопросы