Я хочу использовать ffmpeg (в форме библиотеки c), чтобы разделить видео на несколько частей, перекомпоновать их и закодировать окончательный результат. Что-то основное. Но очень сложно найти документацию или подсказки по этому поводу. Где посмотреть/посоветоваться?
Где я могу найти подробное руководство по C/C++ FFmpeg?
Ответы (4)
Вы можете многое узнать из исходников утилит командной строки, поддерживаемых проектом FFmpeg.
В ffplay.c функция main() покажет вам, как инициализировать библиотеку. stream_component_open() демонстрирует сопоставление кодеков с потоками в мультимедиа, а get_video_frame() показывает, как декодировать пакет и получить его PTS (отметку времени представления). Это понадобится вам, чтобы правильно рассчитать время разделения.
Это должно помочь вам начать декодирование. Что касается кодирования, посмотрите ffmpeg.c. Это больше и сложнее, чем ffplay, но процесс кодирования кадра почти отражает процесс его декодирования, поэтому, как только вы заработали декодирование, оно должно иметь больше смысла.
я искал учебник по FFmpeg и php, но я нашел следующие лучшие места для изучения этого на любом языке книга, я думаю, что это единственная книга о FFmpeg Основы FFmpeg: обработка мультимедиа с быстрым кодировщиком аудио и видео
https://rads.stackoverflow.com/amzn/click/com/1479327832
и второе место — http://ffmpeg.org/documentation.html.
Я также некоторое время искал хороший учебник по c/c++ FFmpeg, и этот c/c++ ffmpeg-libav-tutorial определенно лучшее из того, что я нашел. В нем объясняется, как использовать FFmpeg в качестве библиотеки, а перед этим дается четкий обзор ключевых слов видео (таких как кодирование, декодирование, транскодирование, мультиплексирование и т. д.), что очень полезно для людей, которые не очень хорошо знакомы с видео.
Кроме того, этот учебник отлично подходит для понимания концепции видео, поэтому для тех, кто недостаточно знаком с миром видео, предлагаю начать с этого, а уже потом продолжать с c/c++ ffmpeg-libav-tutorial.
TLDR;
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.