Где я могу найти обширное руководство по C/C++ FFmpeg?
Я хочу использовать ffmpeg (в форме библиотеки c), чтобы разбить видео на несколько частей, перекомпоновать их и закодировать конечный результат. Нечто основное. Но очень трудно найти документацию или подсказки по этому поводу. Куда мне обратиться / спросить совета?
4 ответа
Вы можете многому научиться у источника утилит командной строки, поддерживаемых проектом FFmpeg.
В ffplay.cmain() покажет вам, как инициализировать библиотеку. stream_component_open () демонстрирует соответствие кодеков потокам в мультимедиа, а get_video_frame() показывает, как декодировать пакет и получить его PTS (метка времени представления). Это понадобится вам, чтобы правильно распределить время.
Это должно помочь вам начать со стороны декодирования. Со стороны кодирования посмотрите на ffmpeg.c. Он крупнее и сложнее, чем ffplay, но процесс кодирования кадра практически отражает процесс его декодирования, поэтому, как только вы приступите к декодированию, это должно иметь больше смысла.
Я искал учебник по FFmpeg и php, но я обнаружил, что следующие места - это лучшее место для изучения на любом языке книги. Я думаю, что это единственная книга об FFmpeg Основы 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.