its_a_sunshine 2024-01-03 18:08 采纳率: 28.6%
浏览 11

ffmpeg使用yuv推流

使用ffmpeg将内存中的yuv图片数据用h264编码,然后以rtsp流推送出去,应该怎么设置编码后的dts,pts,time_base等这些参数呢。yuv图片数据自带显示时间戳单位ms。

  • 写回答

1条回答 默认 最新

  • 关注

    使用ffmpeg推送YUV流媒体数据,首先需要创建一个SwsContext,然后使用该上下文转换图像格式,最后将转换后的图像数据发送到流媒体服务器。

    具体步骤如下:

    创建SwsContext。

    structSwsContext*swsctx=sws_getContext(width,height,fmt,width,height,AV_PIX_FMT_YUV420P,SWS_BICUBIC,NULL,NULL,NULL);
    
    

    将解码后的图像数据转换为YUV格式。

    video_input.img_convert_ctx=swsctx;
    
    

    将解码后的数据包保存到video_input结构体中。

    
    video_input.in_packet=packet;
    
    
    ```将解码器信息保存到video_input结构体中。
    
    ```c
    video_input.pcodecCtx=context;
    video_input.pCodec=video_avcodec;
    
    

    将输入流读取头部信息保存到video_input结构体中。

    
    video_input.v_ifmtCtx=ps;
    
    将视频流信息保存到video_input结构体中。
    
    ```c
    video_input.videoindex=videostream;
    
    

    将解码后的视频帧保存到video_input结构体中。

    video_input.pFrame=frame;
    
    
    评论

报告相同问题?

问题事件

  • 创建了问题 1月3日