Где я могу найти обширное руководство по C/C++ FFmpeg?

Я хочу использовать ffmpeg (в форме библиотеки c), чтобы разбить видео на несколько частей, перекомпоновать их и закодировать конечный результат. Нечто основное. Но очень трудно найти документацию или подсказки по этому поводу. Куда мне обратиться / спросить совета?

4 ответа

Решение

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

В ffplay.cmain() покажет вам, как инициализировать библиотеку. stream_component_open () демонстрирует соответствие кодеков потокам в мультимедиа, а get_video_frame() показывает, как декодировать пакет и получить его PTS (метка времени представления). Это понадобится вам, чтобы правильно распределить время.

Это должно помочь вам начать со стороны декодирования. Со стороны кодирования посмотрите на ffmpeg.c. Он крупнее и сложнее, чем ffplay, но процесс кодирования кадра практически отражает процесс его декодирования, поэтому, как только вы приступите к декодированию, это должно иметь больше смысла.

Я искал учебник по FFmpeg и php, но я обнаружил, что следующие места - это лучшее место для изучения на любом языке книги. Я думаю, что это единственная книга об FFmpeg Основы FFmpeg: Работа с мультимедиа с быстрым кодировщиком аудио и видео

http://www.amazon.com/FFmpeg-Basics-Multimedia-handling-encoder/dp/1479327832/ref=sr_1_12?ie=UTF8&qid=1357356672&sr=8-12&keywords=ffmpeg

и самое интересное место http://ffmpeg.org/documentation.html

Я также какое-то время искал хорошее руководство по c/ C++ FFmpeg, и это руководство по c/ C++ ffmpeg-libav определенно лучшее, что я нашел до сих пор. В нем объясняется, как использовать FFmpeg в качестве библиотеки, а до этого дается четкий обзор ключевых слов видео (таких как кодирование, декодирование, трансконтирование, мультиплексирование и т. Д.), Что очень полезно для людей, которые не так хорошо знакомы с видео.

Кроме того, это руководство отлично подходит для понимания концепции видео, поэтому для тех, кто недостаточно знаком с миром видео, я предлагаю начать с него, и только затем продолжить изучение c/ C++ ffmpeg-libav-tutorial.

TL; DR;

https://github.com/ShootingKing-AM/ffmpeg-pseudocode-tutorial - широкое понимание рабочего процесса ffmpeg-cli через свободный псевдокод.


По мнению разработчиков FFmpeg, лучший способ - прочитать исходный код ffmpeg libav и / или ffmpeg-cli.

Цель понимания ffmpeg-cli - иметь возможность интегрировать FFmpeg в наши проекты без необходимости вызывать ffmpeg-cli в фоновом режиме для выполнения мультимедийных операций. Это важно, потому что

  • Запуск внешнего исполняемого файла обычно блокируется антивирусным программным обеспечением и может вызвать проблемы у пользователей.
  • Оптимизируйте использование libav для конкретного проекта и пропустите ненужный код из ffmpeg-cli Кроме того, официальная документация ffmpeg в лучшем случае расплывчата, единственный вариант для разработчиков, которые хотят реализовать функциональность библиотек ffmpeg (libav) в своем коде, - это прочитать исходный код интерфейса командной строки .

Но читать исходный код ffmpeg-cli очень сложно, потому что он предназначен не для использования в качестве учебного материала для понимания того, как использовать libav, а как оптимизированный мультимедийный инструмент. Следовательно, я попытался упорядочить его исходный код до простой функции псевдокода, выделяющей, когда и где вызывать важные (почти все) функции libav, для более широкой картины рабочего процесса ffmpeg. Для получения информации о том, как вызвать вызов функции libav, можно обратиться к документации doxygen и файлам ffmpeg-cli-source.

Другие вопросы по тегам