2017-02-03 11 views
1

私はリモートデスクトップアプリケーションで作業していますが、符号化にffmpegを使用してTCPを介して符号化されたH264パケットを送信したいと思います。しかし、私はただ1つのフレームをエンコードする特定のケース(すでにYUV444上にある)に有用な情報を見つけられず、パケットを取得できませんでした。ffmpeg H264ネットワークストリーミングのために一度にフレームを符号化する

私が最初にということでしたいくつかの問題、持っている:

avcodec_encode_video2 

がブロックしなかったが、私はこれが本当であるので、ほとんどの時間は、あなたが、しかし、最後にフレームを「遅延」を受けることを発見しソリューションをストリーミング時間がされた:

av_opt_set(mCodecContext->priv_data, "tune", "zerolatency", 0); 

は、今私がフレームを得たが、いくつかの問題、それはしばらく時間がかかりますし、さらに悪いことに、私は、結果としてゴミピクセルビデオとグレーを得ました。コーデックコンテキストのための私の設定:

m_pCodecCtx->bit_rate=8000000; 
m_pCodecCtx->codec_id=AV_CODEC_ID_H264; 
m_pCodecCtx->codec_type = AVMEDIA_TYPE_VIDEO; 
m_pCodecCtx->width=1920; 
m_pCodecCtx->height=1080; 
m_pCodecCtx->pix_fmt=AV_PIX_FMT_YUV444P; 
m_pCodecCtx->time_base.num = 1; 
m_pCodecCtx->time_base.den = 25; 
m_pCodecCtx->gop_size = 1; 
m_pCodecCtx->keyint_min = 1; 
m_pCodecCtx->i_quant_factor = float(0.71); 
m_pCodecCtx->b_frame_strategy = 20; 
m_pCodecCtx->qcompress = (float)0.6; 
m_pCodecCtx->qmax = 51; 
m_pCodecCtx->qmin = 20; 
m_pCodecCtx->max_qdiff = 4; 
m_pCodecCtx->refs = 4; 
m_pCodecCtx->max_b_frames = 1; 
m_pCodecCtx->thread_count = 1; 
私はこれを行うことができる方法を知っていただきたいと思い

、私は「Iフレーム」を設定するのですか?そして、それは "一度に1つの"エンコーディングに最適でしょうか?また、私は今品質について懸念していません、ちょうど(16ミリ秒未満)十分に速くする必要があります。符号化部については

:私は、コンテナ、単なる生のファイルを使用していない

nres = avcodec_encode_video2(m_pCodecCtx,&packet,m_pFrame,&framefinished); 

if(nres<0){ 
    qDebug() << "error encoding: " << nres << endl; 
} 

if(framefinished){ 
    m_pFrame->pts++; 
    ofstream vidout("video.h264",ios::app); 
    if(vidout.good()){ 
     vidout.write((const char*)&packet.data[0],packet.size); 
    } 
    vidout.close(); 

    av_packet_unref(&packet); 

} 

、パケットが正しい場合はRAWファイルを再現し、それは私の主な問題ですffplay。私はtcpでパケットを送信し、クライアントでデコードする予定です。どんな助けでも大歓迎です。

+0

使用することを、私は、テキスト、バイナリファイルとして書いていた、私は非常にシンプルだが重要なミスを犯し、私はそれが初めから取り組んだ判明し、そう...直接x264(それはffmpegがとにかく使いたいと思う)。 'nalu_process'コールバックを使い、' intra refresh 'を使います。 – szatmary

答えて

0

webrtcのソースコードをご覧ください。 openh264とffmpegを使用して作業を行います。

私はしばらく研究していました。しかし、現在の最新のソースコードは入手できません。

これが見つかりました: source code

希望します。

-1

フィードバックのおかげで、あなたの助け

関連する問題