2012-03-14 4 views
0

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

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

ответ

0

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

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