1

私は最近、FLV を iOS デバイスに直接ストリーミングすることに依存するプロジェクトを開始しました。最も有名なように、私は ffmpeg (および iOS ラッパー - kxmovie ) を使用しました。驚いたことに、iPhone 4 では SD の低ビットレート FLV ビデオでさえも再生できません。私が使用している現在の実装は、dispatch_async while ループでビデオ/オーディオ/サブ フレームをデコードし、YUV フレーム データをオブジェクトにコピーします。オブジェクトは 3 つのテクスチャに解析されます - Y/U/V (RGB カラーの場合)スペース - データを解析するだけ)、画面にレンダリングされます。多くの試行錯誤の末、レンダリング パイプライン全体を停止し、avcodec_decode_video2関数のみを実行することにしました。驚いたことに、FPS は向上せず、ビデオはまだ再生できません。

私の質問は: avcodec_decode_video2のパフォーマンスを向上させるために何ができますか?

注: いくつかの商用アプリを試してみましたが、50 ~ 60% の CPU 使用率で同じファイルを完全に再生できます。

ライブラリは 1.2 ブランチに基づいており、これはビルド引数です。

'--arch=arm',
'--cpu=cortex-a8',
'--enable-pic',
"--extra-cflags='-arch armv7'",
"--extra-ldflags='-arch armv7'",
"--extra-cflags='-mfpu=neon -mfloat-abi=softfp -mvectorize-with-neon-quad'",
'--enable-neon',
'--enable-optimizations',
'--disable-debug',
'--disable-armv5te',
'--disable-armv6',
'--disable-armv6t2',
'--enable-small',
'--disable-ffmpeg',
'--disable-ffplay',
'--disable-ffserver',
'--disable-ffprobe',
'--disable-doc',
'--disable-bzlib',
'--target-os=darwin',
'--enable-cross-compile',
#'--enable-nonfree',
'--enable-gpl',
'--enable-version3',

また、Instruments によると、次の関数はそれぞれ約 30% の CPU 使用率を占めています。

Running Time    Self        Symbol Name
37023.9ms   32.3%   13874,8                   ff_h264_decode_mb_cabac
34626.2ms   30.2%   9194,7                    loop_filter
29430.0ms   25.6%   173,8                     ff_h264_hl_decode_mb
4

3 に答える 3

0

楽しみのために、これからどのようなパフォーマンスが得られるかを確認してください。flvのクイックを再生するようですが、iPhone 4ではテストしていません

https://github.com/mooncatventures-group/WebStreamX_flv_demo

于 2013-07-09T15:07:09.487 に答える