Я разрабатываю мультимедийный проигрыватель с помощью ffmpeg. Я очень стараюсь получить аппаратное ускорение через ffmpeg, использующий vdpau аппаратный акселератор. Я не получил успеха до сих пор. Ниже я упомянул детали своих системных спецификаций, программного обеспечения и ошибки ffmpeg инструмента командной строки. Не стесняйтесь комментировать, нужна ли Вам дополнительная информация. Любые быстрые предложения будут значительно полезны.
Here is my system hardware specification: Processor: Intel® Core™ i5-4570 CPU @ 3.20GHz × 4 Graphis: GeForce GTX 750 Ti/PCIe/SSE2 Os: Ubuntu-14.04 64bit Memory: 8GiB
Программное обеспечение: ffmpeg-2.8.1
другие полезные журналы: 1. Найдите включают hw акселератор в ffmpeg
./ffmpeg-hwaccels
ffmpeg version 2.8.1 Copyright (c) 2000-2015 the FFmpeg developers built with gcc 4.8 (Ubuntu 4.8.4-2ubuntu1~14.04.3) configuration: --enable-shared libavutil 54. 31.100 / 54. 31.100 libavcodec 56. 60.100 / 56. 60.100 libavformat 56. 40.101 / 56. 40.101 libavdevice 56. 4.100 / 56. 4.100 libavfilter 5. 40.101 / 5. 40.101 libswscale 3. 1.101 / 3. 1.101 libswresample 1. 2.101 / 1. 2.101 Hardware acceleration methods: vdpau
2. Hw декодирование Accel с помощью ffmpeg
./ffmpeg-hwaccel vdpau-i/tmp/test.mp4/tmp/test.ts
Журнал ошибок:
libva info: VA-API version 0.35.0 libva info: va_getDriverName() returns 0 libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/nvidia_drv_video.so libva info: va_openDriver() returns -1
3. Команда: lspci-vnn | grep-i VGA-A 12
01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GM107 [GeForce GTX 750 Ti] [10de:1380] (rev a2) (prog-if 00 [VGA controller]) Subsystem: ZOTAC International (MCO) Ltd. Device [19da:288a] Flags: bus master, fast devsel, latency 0, IRQ 48 Memory at f6000000 (32-bit, non-prefetchable) [size=16M] Memory at e0000000 (64-bit, prefetchable) [size=256M] Memory at f0000000 (64-bit, prefetchable) [size=32M] I/O ports at e000 [size=128] [virtual] Expansion ROM at f7000000 [disabled] [size=512K] Capabilities: Kernel driver in use: nvidia 01:00.1 Audio device [0403]: NVIDIA Corporation Device [10de:0fbc] (rev a1) Subsystem: ZOTAC International (MCO) Ltd. Device [19da:288a]
Согласно документации здесь,
Для включения этого Вам обычно нужны libvdpau пакет разработки в Вашем распределении и совместимая видеокарта.
Сообщение, что VDPAU не может использоваться для декодирования кадров в памяти, сжатые кадры, отправлено libavcodec к устройству GPU, поддерживаемому VDPAU, и затем к декодируемому изображению можно получить доступ с помощью API VDPAU. Это не сделано автоматически FFmpeg, но должно быть сделано на прикладном уровне (проверьте, например, ffmpeg_vdpau.c файл, используемый ffmpeg.c). Кроме того, обратите внимание, что с этим API не возможно положить обратно декодируемый кадр к RAM, например в случае, если необходимо закодировать снова декодируемый кадр (например, при выполнении транскодирующий на сервере).
Несколько декодеров в настоящее время поддерживаются через API VDPAU в libavcodec, в особенности H.264, MPEG-1/2/4, и VC-1.
вывод mediainfo videofile
должен пролить некоторый свет на то, поддерживается ли используемый кодек, однако таблица FFMpeg IMplementations в вышеупомянутой документации показывает, что VDPAU удерживается от использования для технических причин и не должен использоваться.
у меня нет ничего далее, чтобы добавить, но надеяться, что эта информация полезна все равно.