2015-11-26 37 views
7

私はipカメラからのビデオフレームをデコードしていますが、にあるbad_accessを生成するアプリがあります。FFMpegを使用してカメラストリームビデオフレームをデコードする際にエラーが発生しました。iOS

このアプリは古いライブラリFFMpegでは正常に動作していましたが、Appleのポリシーでは、arm64をサポートするアプリを公開するため、arm64をサポートするライブラリを更新した後、この問題が発生しました。 bad_accessアプリは、次のログを生成している間にここで

スクリーンショット

enter image description here

です:

[h264 @ 0x1071400] sps_id 12 out of range 
[h264 @ 0x1071400] pps_id 417 out of range 
[h264 @ 0x1071400] sps_id 3 out of range 
[h264 @ 0x1071400] sps_id 32 out of range 
[h264 @ 0x1071400] sps_id 6 out of range 
[h264 @ 0x1071400] sps_id 0 out of range 
[h264 @ 0x1071400] sps_id 32 out of range 
[h264 @ 0x1071400] sps_id 1 out of range 
[h264 @ 0x1071400] sps_id 3 out of range 
[h264 @ 0x1071400] sps_id 0 out of range 
[h264 @ 0x1071400] sps_id 32 out of range 
[h264 @ 0x1071400] sps_id 0 out of range 
[h264 @ 0x1071400] sps_id 1 out of range 
[h264 @ 0x1071400] sps_id 1 out of range 
[h264 @ 0x1071400] sps_id 1 out of range 
[h264 @ 0x1071400] sps_id 1 out of range 
[h264 @ 0x1071400] sps_id 1 out of range 
[h264 @ 0x1071400] sps_id 1 out of range 
[h264 @ 0x1071400] sps_id 1 out of range 
[h264 @ 0x1071400] sps_id 2 out of range 
[h264 @ 0x1071400] sps_id 2 out of range 
[h264 @ 0x1071400] sps_id 2 out of range 
[h264 @ 0x1071400] sps_id 2 out of range 
[h264 @ 0x1071400] sps_id 2 out of range 
[h264 @ 0x1071400] sps_id 0 out of range 
[h264 @ 0x1071400] sps_id 32 out of range 
[h264 @ 0x1071400] sps_id 3 out of range 
[h264 @ 0x1071400] sps_id 0 out of range 
[h264 @ 0x1071400] sps_id 1 out of range 
[h264 @ 0x1071400] sps_id 1 out of range 
[h264 @ 0x1071400] sps_id 1 out of range 
[h264 @ 0x1071400] sps_id 1 out of range 
[h264 @ 0x1071400] sps_id 1 out of range 
[h264 @ 0x1071400] sps_id 1 out of range 
[h264 @ 0x1071400] sps_id 1 out of range 
[h264 @ 0x1071400] sps_id 2 out of range 
[h264 @ 0x1071400] sps_id 2 out of range 
[h264 @ 0x1071400] sps_id 2 out of range 
[h264 @ 0x1071400] sps_id 2 out of range 
[h264 @ 0x1071400] sps_id 2 out of range 
[h264 @ 0x1071400] pps_id 418 out of range 
[h264 @ 0x1071400] Partitioned H.264 support is incomplete 
[h264 @ 0x1071400] sps_id 6 out of range 
[h264 @ 0x1071400] sps_id 0 out of range 
[h264 @ 0x1071400] sps_id 0 out of range 
[h264 @ 0x1071400] sps_id 0 out of range 
[h264 @ 0x1071400] sps_id 0 out of range 
[h264 @ 0x1071400] sps_id 0 out of range 
[h264 @ 0x1071400] sps_id 0 out of range 
[h264 @ 0x1071400] sps_id 0 out of range 
[h264 @ 0x1071400] sps_id 1 out of range 
[h264 @ 0x1071400] non-existing PPS 3 referenced 
[h264 @ 0x1071400] decode_slice_header error 
[h264 @ 0x1071400] sps_id 0 out of range 
[h264 @ 0x1071400] slice type 10 too large at 0 0 
[h264 @ 0x1071400] decode_slice_header error 
[h264 @ 0x1071400] sps_id 0 out of range 
[h264 @ 0x1071400] sps_id 0 out of range 
[h264 @ 0x1071400] sps_id 0 out of range 
[h264 @ 0x1071400] sps_id 0 out of range 
[h264 @ 0x1071400] non-existing PPS 2 referenced 
[h264 @ 0x1071400] decode_slice_header error 
[h264 @ 0x1071400] sps_id 0 out of range 
[h264 @ 0x1071400] sps_id 0 out of range 
[h264 @ 0x1071400] sps_id 0 out of range 
[h264 @ 0x1071400] sps_id 0 out of range 
[h264 @ 0x1071400] slice type 29 too large at 0 0 
[h264 @ 0x1071400] decode_slice_header error 
[h264 @ 0x1071400] sps_id 2 out of range 
[h264 @ 0x1071400] sps_id 0 out of range 
[h264 @ 0x1071400] sps_id 0 out of range 
[h264 @ 0x1071400] sps_id 0 out of range 
[h264 @ 0x1071400] sps_id 0 out of range 
[h264 @ 0x1071400] sps_id 0 out of range 
[h264 @ 0x1071400] slice type 32 too large at 0 0 
[h264 @ 0x1071400] decode_slice_header error 
[h264 @ 0x1071400] slice type 32 too large at 0 0 
[h264 @ 0x1071400] decode_slice_header error 
[h264 @ 0x1071400] slice type 32 too large at 0 0 
[h264 @ 0x1071400] decode_slice_header error 
[h264 @ 0x1071400] slice type 32 too large at 0 0 

完全なエラーログ:https://drive.google.com/file/d/0B-Nh7ci6wLX0OVlxaXV4aGpJems/view?usp=sharing

クラッシュログ:http://crashes.to/s/6765d63b540

注:あなたが他の任意のものが必要な場合は、コメントしてください。

+0

そのスクリーンショットはクラッシュログと一致するようには見えません。クラッシュログはNULLを逆参照する問題のように見えます。また、パラメータ値を知ることも有益です。 – trojanfoe

+0

表示するパラメータ。あなたが必要とするものを教えてください。 –

+0

そのメソッドに渡されたパラメータ – trojanfoe

答えて

3

私の問題が解決しました。問題は、償却されたメソッドavcodec_alloc_frame()で解決されました。

私はその後、私は最終的にはその後、私はそう、私はav_frame_alloc()にそれをする方法avcodec_alloc_frame()の減価償却に関する警告を更新してしまったし、それが完璧に働いていた、私のヘッダファイルを更新し、コンストラクタ

m_pCodecCtx = avcodec_alloc_context3(m_pCodec); 
    if(m_pCodecCtx == NULL) 
    { 
     NSLog(@"if(pCodecCtx == NULL)\n"); 
     return ; 
    } 
    [g_Lock lock]; 
    //¥Úø™codec°£»Áπ˚¥Úø™≥…𶵃ª∞£¨∑÷≈‰AVFrame£  
    if(avcodec_open2(m_pCodecCtx, m_pCodec, NULL) >= 0)  
    {  
     m_pFrame = avcodec_alloc_frame(); /* Allocate video frame */ 

    } 
    [g_Lock unlock]; 

に次のコードを使用していました!

関連する問題