Какой минимальный объем метаданных необходим для потоковой передачи только видео с использованием libx264 для кодирования на сервере и libffmpeg для декодирования на клиенте?

Я хочу потоковое видео (без звука) с сервера на клиент. Я закодирую видео с помощью libx264 и расшифрую его с помощью ffmpeg. Я планирую использовать фиксированные настройки (по крайней мере, они будут известны заранее как клиенту, так и серверу). Мне было интересно, смогу ли я обернуть сжатое видео в контейнерный формат (например, mp4 или mkv).

Прямо сейчас я могу кодировать свои кадры, используя x264_encoder_encode. Я получаю сжатый кадр обратно, и я могу сделать это для каждого кадра. Какую дополнительную информацию (если вообще что-нибудь) мне нужно отправить клиенту, чтобы ffmpeg мог декодировать сжатые кадры, и, что более важно, как я могу получить ее с помощью libx264. Я предполагаю, что мне может понадобиться сгенерировать информацию NAL (x264_nal_encode?). Было бы очень полезно иметь представление о том, какой минимум необходим для передачи видео и как их собрать.

1 ответ

Решение

Я обнаружил, что минимальный объем информации - это единицы NAL из каждого кадра, это даст мне необработанный поток h264. Если бы я записал это в файл, я мог бы наблюдать за ним с помощью VLC, если при добавлении.h264 я также могу открыть такой файл с помощью ffmpeg, но если я хочу передать его в потоковом режиме, тогда имеет больше смысла использовать RTSP, и хороший Библиотека с открытым исходным кодом для этого Live555: http://www.live555.com/liveMedia/

В своих часто задаваемых вопросах они упоминают, как отправить вывод с вашего кодера на live555, и есть источник для клиента и сервера. Я еще не закончил кодировать это, но кажется разумным решением

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