openh264-bEnableFrameSkip = 0、ビットレートを制御できません

プラカシュM

opencv + H.264に関して多くの質問がありますが、詳細な説明はありませんでした。

VisualStudioでopenh264(openh264-1.4.0-win32msvc.dll)とopencv 3.1(ffmpegを有効にしたcmakeを使用したカスタムビルド)を使用していますが、WebサイトからのビデオをH.264圧縮のmp4形式で保存したいと思いました。

VideoWriter write = VideoWriter( "D:/movie.mp4"、CV_FOURCC( 'H'、 '2'、 '6'、 '4')、10.0、cv :: Size(192、144)、true);

openh264を使用する前に、コンソールウィンドウに「openh264ライブラリの読み込みに失敗しました:openh264-1.4.0-win32msvc.dll環境を確認するか、https//github.com/cisco/からダウンロードしてください」という警告メッセージが表示されていました。openh264 / releases "(ビデオも保存されませんでした)

そのため、dllをダウンロードして、プログラムファイル(exe)と一緒にフォルダーに保存しました。プログラムを実行すると、別のエラーが表示されます。 "[OpenH264] this = 0x0DE312C0、warning:bEnabledFrameSkip = 0、bitrate ca n't controlスキップフレームを有効にしないRC_QUALITY_MODEおよびRC_TIMESTAMP_MODEの場合」(ビデオは保存されますが、サイズが非常に大きくなります。ビットレートは約1200 Kbpsです)

私にとって、h264を使用する唯一の目的は、ファイルサイズを小さくすることです。このエラーを削除するために、いくつかの変更を加えてopenh264を自分でビルドする必要があると思います。または、コードを使用してビットレートを下げる方法があるかどうか教えてください。

PS:CV_FOURCC()の代わりに-1を指定しようとすると、システムに「インストールされたコーデック」ウィンドウが表示されました。ここからさまざまなコーデックパックとh264をインストールしたにもかかわらず、h264、x264、またはh264vfwが見つかりませんでした。

ありがとうございます。それでは、お元気で

RajibTheKing

ビットレートを制御したい場合は、両方を使用する必要があります

encoderParemeters.iRCMode = RC_OFF_MODE;
encoderParemeters.bEnableFrameSkip = true; 


ここでは、例としてすべてのOpenh264エンコーディングパラメータを示しています。

long nReturnedValueFromEncoder = WelsCreateSVCEncoder(&m_pSVCVideoEncoder);


    m_nVideoWidth = 352;
    m_nVideoHeight = 288;

    SEncParamExt encoderParemeters;

    memset(&encoderParemeters, 0, sizeof(SEncParamExt));

    m_pSVCVideoEncoder->GetDefaultParams(&encoderParemeters);

    encoderParemeters.iUsageType = CAMERA_VIDEO_REAL_TIME;
    encoderParemeters.iTemporalLayerNum = 0;
    encoderParemeters.uiIntraPeriod = 15;
    encoderParemeters.eSpsPpsIdStrategy = INCREASING_ID;
    encoderParemeters.bEnableSSEI = false;
    encoderParemeters.bEnableFrameCroppingFlag = true;
    encoderParemeters.iLoopFilterDisableIdc = 0;
    encoderParemeters.iLoopFilterAlphaC0Offset = 0;
    encoderParemeters.iLoopFilterBetaOffset = 0;
    encoderParemeters.iMultipleThreadIdc = 0;

    encoderParemeters.iRCMode = RC_BITRATE_MODE;
    encoderParemeters.iMinQp = 0;
    encoderParemeters.iMaxQp = 52;



    encoderParemeters.bEnableDenoise = false;
    encoderParemeters.bEnableSceneChangeDetect = false;
    encoderParemeters.bEnableBackgroundDetection = true;
    encoderParemeters.bEnableAdaptiveQuant = false;
    encoderParemeters.bEnableFrameSkip = true;
    encoderParemeters.bEnableLongTermReference = true;
    encoderParemeters.iLtrMarkPeriod = 20;
    encoderParemeters.bPrefixNalAddingCtrl = false;
    encoderParemeters.iSpatialLayerNum = 1;


    SSpatialLayerConfig *spartialLayerConfiguration = &encoderParemeters.sSpatialLayers[0];

    spartialLayerConfiguration->uiProfileIdc = PRO_BASELINE;//;

    encoderParemeters.iPicWidth = spartialLayerConfiguration->iVideoWidth = m_nVideoWidth;
    encoderParemeters.iPicHeight = spartialLayerConfiguration->iVideoHeight = m_nVideoHeight;
    encoderParemeters.fMaxFrameRate = spartialLayerConfiguration->fFrameRate = (float)30;

    encoderParemeters.iTargetBitrate = spartialLayerConfiguration->iSpatialBitrate = 500000;
    encoderParemeters.iTargetBitrate = spartialLayerConfiguration->iMaxSpatialBitrate = 500000;


    spartialLayerConfiguration->iDLayerQp = 24;
    //spartialLayerConfiguration->sSliceCfg.uiSliceMode = SM_SINGLE_SLICE;
    spartialLayerConfiguration->sSliceArgument.uiSliceMode = SM_SINGLE_SLICE;


    nReturnedValueFromEncoder = m_pSVCVideoEncoder->InitializeExt(&encoderParemeters);

それがあなたを助けることを願っています。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

OpenH264のデコーダーを高速化する方法

分類Dev

openh264と組み合わせたFFmpegautogen

分類Dev

アームアンドロイドのOpenh264がビルドできません

分類Dev

iOS用のopenH264ビデオコーデックをビルドしてインストールできません

分類Dev

Anacondaがopenh264ライブラリを見つけることができません

分類Dev

libmp4v2とOpenH264を使用してh264をmp4にミックスする

分類Dev

障害の原因となるネットワーク遅延を伴うOpenH264デコード

分類Dev

Openh264関数を動的に呼び出すと、アプリがクラッシュします

分類Dev

Anaconda cannot find openh264 library

分類Dev

アンドロイド用のffmpeg、openh264で回転mp4ファイルをデコードする際にメモリ不足

分類Dev

Using OpenH264 DLL in C# Project

分類Dev

x264は時間ベースのレート制御制約をサポートしていますか?

分類Dev

32ビットがサポートされているため、Androidアプリにlibopenh264-2.0.0-android.soを使用できません

分類Dev

ビデオストリーミング-制御フレームレートx264

分類Dev

TeamViewer。リモートUbuntu18を制御できません

分類Dev

ChromiumでのH.264ビデオのサポート、コーデックがありませんか?

分類Dev

高ビットレートでのx264とx265

分類Dev

レイアウトウィジェットエラー:「ドキュメントを制御できませんでした」

分類Dev

Visual Studio 2015をアンインストールできません(ストレージ制御ブロックが破壊されました)

分類Dev

AVAudioRecorderでOpusビットレートを制御する方法

分類Dev

RGB ストリップの色は制御できません

分類Dev

16.04のアップグレード後、ラップトップはファンの速度を制御できません

分類Dev

ゲーム内のオブジェクトを制御できません

分類Dev

SonyVaioノートパソコンのファンを制御できません

分類Dev

バックライトを制御できません。奇妙なセグメンテーション違反

分類Dev

vlcでAndroidh264でエンコードされたビデオを再生できません

分類Dev

VLC imemを使用してメモリからh264ビデオファイルを再生しますが、「メインストリームエラー:バッファを事前に入力できません」というエラーを受け取ります

分類Dev

TwilioビデオコーデックはサポートされていませんH264

分類Dev

ViewControllerでテーブルビューとセグメント化された制御の制約を追加できません

Related 関連記事

  1. 1

    OpenH264のデコーダーを高速化する方法

  2. 2

    openh264と組み合わせたFFmpegautogen

  3. 3

    アームアンドロイドのOpenh264がビルドできません

  4. 4

    iOS用のopenH264ビデオコーデックをビルドしてインストールできません

  5. 5

    Anacondaがopenh264ライブラリを見つけることができません

  6. 6

    libmp4v2とOpenH264を使用してh264をmp4にミックスする

  7. 7

    障害の原因となるネットワーク遅延を伴うOpenH264デコード

  8. 8

    Openh264関数を動的に呼び出すと、アプリがクラッシュします

  9. 9

    Anaconda cannot find openh264 library

  10. 10

    アンドロイド用のffmpeg、openh264で回転mp4ファイルをデコードする際にメモリ不足

  11. 11

    Using OpenH264 DLL in C# Project

  12. 12

    x264は時間ベースのレート制御制約をサポートしていますか?

  13. 13

    32ビットがサポートされているため、Androidアプリにlibopenh264-2.0.0-android.soを使用できません

  14. 14

    ビデオストリーミング-制御フレームレートx264

  15. 15

    TeamViewer。リモートUbuntu18を制御できません

  16. 16

    ChromiumでのH.264ビデオのサポート、コーデックがありませんか?

  17. 17

    高ビットレートでのx264とx265

  18. 18

    レイアウトウィジェットエラー:「ドキュメントを制御できませんでした」

  19. 19

    Visual Studio 2015をアンインストールできません(ストレージ制御ブロックが破壊されました)

  20. 20

    AVAudioRecorderでOpusビットレートを制御する方法

  21. 21

    RGB ストリップの色は制御できません

  22. 22

    16.04のアップグレード後、ラップトップはファンの速度を制御できません

  23. 23

    ゲーム内のオブジェクトを制御できません

  24. 24

    SonyVaioノートパソコンのファンを制御できません

  25. 25

    バックライトを制御できません。奇妙なセグメンテーション違反

  26. 26

    vlcでAndroidh264でエンコードされたビデオを再生できません

  27. 27

    VLC imemを使用してメモリからh264ビデオファイルを再生しますが、「メインストリームエラー:バッファを事前に入力できません」というエラーを受け取ります

  28. 28

    TwilioビデオコーデックはサポートされていませんH264

  29. 29

    ViewControllerでテーブルビューとセグメント化された制御の制約を追加できません

ホットタグ

アーカイブ