avioについてalloc_contextのコールバック関数の注意事項
プロジェクトシーン:
最近ffmpegを用いて、ローカルエリアネットワーク内で生中継、録画、録画指定ウィンドウのソフトウェアを開発し、録画端末と表示端末を含み、両者の間でTCPを使用してデータ伝送を行う.開発中に出会った問題を簡単に説明します.間違ったところがあったら、指摘してください.
問題の説明:
1、av_read_frameエラー.データの読み込みエラー.
2、win 7および一部の低バージョンwin 10では、指定されたosgを使用したプログラムウィンドウ画面を録画できません.
2、OpenGLの指定ウィンドウを録画する場合は、高バージョンwin 10で録画する必要があります.画面を録画するだけであれば、OSバージョンを選択する必要はありません.
私のパソコンのバージョンは10.0.18363.1016で、録画できます.もう1台のパソコンバージョンは10.0.14393で、録画できません.win 7のどのバージョンも録画できません.
最近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のどのバージョンも録画できません.