avioについてalloc_contextのコールバック関数の注意事項

1123 ワード

プロジェクトシーン:
最近ffmpegを用いて、ローカルエリアネットワーク内で生中継、録画、録画指定ウィンドウのソフトウェアを開発し、録画端末と表示端末を含み、両者の間でTCPを使用してデータ伝送を行う.開発中に出会った問題を簡単に説明します.間違ったところがあったら、指摘してください.
問題の説明:
1、av_read_frameエラー.データの読み込みエラー.
2、win 7および一部の低バージョンwin 10では、指定されたosgを使用したプログラムウィンドウ画面を録画できません.
avio_alloc_context(iobuffer, bufferSize, 0, this, RecvFFmpeg::Fill_IOBuffer, NULL, NULL);//FFMPEG         ,    

原因分析:

1、RecvFFmpeg::Fill_IOBuffer 。

2、 GDIGRAD , Gdi , OpenGL 。


解决方案:

1、RecvFFmpeg::Fill_IOBuffer , BUF ,BUFSIZE 。

int RecvFFmpeg::Fill_IOBuffer(void * ptr, uint8_t *buf, int bufsize)
{
    ...
    
    ///    
    buf = 0;
    bufsize = 0;
    return AVERROR_STREAM_NOT_FOUND;  /**/
}

2、OpenGLの指定ウィンドウを録画する場合は、高バージョンwin 10で録画する必要があります.画面を録画するだけであれば、OSバージョンを選択する必要はありません.
私のパソコンのバージョンは10.0.18363.1016で、録画できます.もう1台のパソコンバージョンは10.0.14393で、録画できません.win 7のどのバージョンも録画できません.