2016-11-15 3 views
2

Я следовал this, чтобы кодировать изображения последовательностей в видео h.264.Посылать кодированный поток H.264 через RTMP с использованием FFmpeg

Здесь выводя часть моего кода:

int srcstride = outwidth*4; 
sws_scale(convertCtx, src_data, &srcstride, 0, outheight, pic_in.img.plane, pic_in.img.i_stride); 
x264_nal_t* nals; 
int i_nals; 
int frame_size = x264_encoder_encode(encoder, &nals, &i_nals, &pic_in, &pic_out); 
if (frame_size) { 
    fwrite(nals[0].p_payload, frame_size, 1, fp); 
} 

Это в цикле для обработки кадров и записи их в файл.

Теперь я пытаюсь передать эти закодированные кадры через RTMP. Как я знаю, контейнером для RTMP является FLV. Таким образом, я использовал командную строку в качестве пробной версии:

ffmpeg -i test.h264 -vcodec copy -f flv rtmp://localhost:1935/hls/test 

Это хорошо работает как потоковое видео в формате h.264.

Но как я могу реализовать его как код на C++ и передавать потоки в одно и то же время, когда они сгенерированы, так же, как то, что я сделал, чтобы передать мою камеру Facetime.

ffmpeg -f avfoundation -pix_fmt uyvy422 -video_size 1280x720 -framerate 30 -i "1:0" -pix_fmt yuv420p -vcodec libx264 -preset veryfast -acodec libvo_aacenc -f flv -framerate 30 rtmp://localhost:1935/hls/test 

Это может быть общая и практическая тема. Но я застрял здесь целыми днями, действительно нуждаюсь в каком-то соответствующем опыте. Спасибо!

+0

Вы когда-нибудь разбирали это? –

ответ

0

Ищите учебники по libavformat (например, dranger, google it) или проще, напишите свой поток h.264 в stdio, а затем передайте его в ffmpeg.

Смежные вопросы