В моем приложении я хочу иметь возможность воспроизводить потоковое видео (по протоколу RTSP).
Я нашел открытый поток RTSP: rtsp://red7blue.de/Primetime
и попытался воспроизвести его. Но мое приложение прерывается сигналом SIGILL при попытке воспроизвести видео. Я использую libffmpeg.so и причина сигнала SIGILL находится в коде этой библиотеки.
Посмотри что я получил в логах:
D/dalvikvm( 217): Trying to load lib /data/data/my.apps.package/lib/libffmpeg.so 0x43757d68
D/dalvikvm( 217): Added shared lib /data/data/my.apps.package/lib/libffmpeg.so 0x43757d68
D/dalvikvm( 217): No JNI_OnLoad found in /data/data/my.apps.package/lib/libffmpeg.so 0x43757d68
D/dalvikvm( 217): Trying to load lib /data/data/my.apps.package/lib/libplayer-4.so 0x43757d68
D/dalvikvm( 217): Added shared lib /data/data/my.apps.package/lib/libplayer-4.so 0x43757d68
D/PlayerActivity( 217): FILE TO OPEN: rtsp://red7blue.de/Primetime
D/dalvikvm( 217): +++ not scanning '/system/lib/libwebcore.so' for 'open' (wrong CL)
D/dalvikvm( 217): +++ not scanning '/system/lib/libexif.so' for 'open' (wrong CL)
D/dalvikvm( 217): +++ not scanning '/system/lib/libFFTEm.so' for 'open' (wrong CL)
I/DEBUG ( 27): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
I/DEBUG ( 27): Build fingerprint: 'generic/sdk/generic/:1.6/Donut/20842:eng/test-keys'
I/DEBUG ( 27): pid: 217, tid: 217 >>> my.apps.package <<<
I/DEBUG ( 27): signal 4 (SIGILL), fault addr 81337fb0
I/DEBUG ( 27): r0 00000000 r1 00000000 r2 00000001 r3 00000001
I/DEBUG ( 27): r4 00000001 r5 00000000 r6 00000000 r7 00000000
I/DEBUG ( 27): r8 7fffffff r9 00000000 10 00000000 fp 20000000
I/DEBUG ( 27): ip 00000000 sp bee438a0 lr 81337f68 pc 81337fb0 cpsr 80000010
I/DEBUG ( 27): #00 pc 00337fb0 /data/data/my.apps.package/lib/libffmpeg.so
I/DEBUG ( 27): #01 pc 00338564 /data/data/my.apps.package/lib/libffmpeg.so
I/DEBUG ( 27): #02 pc 003368b8 /data/data/my.apps.package/lib/libffmpeg.so
I/DEBUG ( 27): #03 pc 00079f74 /data/data/my.apps.package/lib/libffmpeg.so
I/DEBUG ( 27): #04 pc 0007a040 /data/data/my.apps.package/lib/libffmpeg.so
I/DEBUG ( 27): #05 pc 002c5780 /data/data/my.apps.package/lib/libffmpeg.so
I/DEBUG ( 27): #06 pc 002d6bc4 /data/data/my.apps.package/lib/libffmpeg.so
I/DEBUG ( 27): #07 pc 002c67d0 /data/data/my.apps.package/lib/libffmpeg.so
I/DEBUG ( 27): #08 pc 003110a0 /data/data/my.apps.package/lib/libffmpeg.so
I/DEBUG ( 27): #09 pc 00317ac4 /data/data/my.apps.package/lib/libffmpeg.so
I/DEBUG ( 27): #10 pc 003197bc /data/data/my.apps.package/lib/libffmpeg.so
I/DEBUG ( 27): #11 pc 00316d04 /data/data/my.apps.package/lib/libffmpeg.so
I/DEBUG ( 27): #12 pc 00319448 /data/data/my.apps.package/lib/libffmpeg.so
I/DEBUG ( 27): #13 pc 002c67d0 /data/data/my.apps.package/lib/libffmpeg.so
I/DEBUG ( 27): #14 pc 002c6fe0 /data/data/my.apps.package/lib/libffmpeg.so
I/DEBUG ( 27): #15 pc 00004a28 /data/data/my.apps.package/lib/libplayer-4.so
I/DEBUG ( 27): #16 pc 00007d08 /data/data/my.apps.package/lib/libplayer-4.so
I/DEBUG ( 27): #17 pc 0000e434 /system/lib/libdvm.so
I/DEBUG ( 27): #18 pc 00040b0e /system/lib/libdvm.so
I/DEBUG ( 27): #19 pc 000432b6 /system/lib/libdvm.so
I/DEBUG ( 27): #20 pc 00013198 /system/lib/libdvm.so
I/DEBUG ( 27): #21 pc 00017be4 /system/lib/libdvm.so
I/DEBUG ( 27): #22 pc 0001762c /system/lib/libdvm.so
I/DEBUG ( 27): #23 pc 000529a8 /system/lib/libdvm.so
I/DEBUG ( 27): #24 pc 00059eda /system/lib/libdvm.so
I/DEBUG ( 27): #25 pc 00013198 /system/lib/libdvm.so
I/DEBUG ( 27): #26 pc 00017be4 /system/lib/libdvm.so
I/DEBUG ( 27): #27 pc 0001762c /system/lib/libdvm.so
I/DEBUG ( 27): #28 pc 0005282c /system/lib/libdvm.so
I/DEBUG ( 27): #29 pc 0003f790 /system/lib/libdvm.so
I/DEBUG ( 27): #30 pc 00031caa /system/lib/libdvm.so
I/DEBUG ( 27): #31 pc 0002a804 /system/lib/libandroid_runtime.so
I/DEBUG ( 27): stack:
I/DEBUG ( 27): bee43860 00000000
I/DEBUG ( 27): bee43864 00000000
I/DEBUG ( 27): bee43868 20000000
I/DEBUG ( 27): bee4386c 8135cb94 /data/data/my.apps.package/lib/libffmpeg.so
I/DEBUG ( 27): bee43870 20000000
I/DEBUG ( 27): bee43874 00000000
I/DEBUG ( 27): bee43878 00000000
I/DEBUG ( 27): bee4387c 20000000
I/DEBUG ( 27): bee43880 00000000
I/DEBUG ( 27): bee43884 00000000
I/DEBUG ( 27): bee43888 00000000
I/DEBUG ( 27): bee4388c 8135ca5c /data/data/my.apps.package/lib/libffmpeg.so
I/DEBUG ( 27): bee43890 bee43898 [stack]
I/DEBUG ( 27): bee43894 81337f68 /data/data/my.apps.package/lib/libffmpeg.so
I/DEBUG ( 27): bee43898 df002777
I/DEBUG ( 27): bee4389c e3a070ad
I/DEBUG ( 27): #00 bee438a0 00000000
I/DEBUG ( 27): bee438a4 00000000
I/DEBUG ( 27): bee438a8 00000000
I/DEBUG ( 27): bee438ac 00000000
I/DEBUG ( 27): bee438b0 3ff00000
I/DEBUG ( 27): bee438b4 afc1d8f4 /system/lib/libm.so
I/DEBUG ( 27): bee438b8 afc1d868 /system/lib/libm.so
I/DEBUG ( 27): bee438bc 001f750c [heap]
I/DEBUG ( 27): bee438c0 8146ab20 /data/data/my.apps.package/lib/libffmpeg.so
I/DEBUG ( 27): bee438c4 0000001c
I/DEBUG ( 27): bee438c8 8b9e9309
I/DEBUG ( 27): bee438cc 8b9e9309
I/DEBUG ( 27): bee438d0 3fa56e5f
I/DEBUG ( 27): bee438d4 afc0e3bc /system/lib/libm.so
I/DEBUG ( 27): bee438d8 2d87a4ea
I/DEBUG ( 27): bee438dc 00000000
I/DEBUG ( 27): bee438e0 00000000
I/DEBUG ( 27): bee438e4 bee43928 [stack]
I/DEBUG ( 27): bee438e8 bee4392c [stack]
I/DEBUG ( 27): bee438ec ffffffbe
I/DEBUG ( 27): bee438f0 00000000
I/DEBUG ( 27): bee438f4 bee43928 [stack]
I/DEBUG ( 27): bee438f8 bee4392c [stack]
I/DEBUG ( 27): bee438fc bee43968 [stack]
I/DEBUG ( 27): bee43900 00000000
I/DEBUG ( 27): bee43904 7fffffff
I/DEBUG ( 27): bee43908 00000000
I/DEBUG ( 27): bee4390c 00000000
I/DEBUG ( 27): bee43910 20000000
I/DEBUG ( 27): bee43914 81338568 /data/data/my.apps.package/lib/libffmpeg.so
I/DEBUG ( 27): #01 bee43918 00000001
I/DEBUG ( 27): bee4391c 00000000
I/DEBUG ( 27): bee43920 7fffffff
I/DEBUG ( 27): bee43924 00000000
I/DEBUG ( 27): bee43928 8145fe10 /data/data/my.apps.package/lib/libffmpeg.so
I/DEBUG ( 27): bee4392c 81336698 /data/data/my.apps.package/lib/libffmpeg.so
I/DEBUG ( 27): bee43930 00000001
I/DEBUG ( 27): bee43934 8146ab50 /data/data/my.apps.package/lib/libffmpeg.so
I/DEBUG ( 27): bee43938 001f74f0 [heap]
I/DEBUG ( 27): bee4393c 00000000
I/DEBUG ( 27): bee43940 00000000
I/DEBUG ( 27): bee43944 bee43968 [stack]
I/DEBUG ( 27): bee43948 7fffffff
I/DEBUG ( 27): bee4394c 8145fe34 /data/data/my.apps.package/lib/libffmpeg.so
I/DEBUG ( 27): bee43950 8145fe10 /data/data/my.apps.package/lib/libffmpeg.so
I/DEBUG ( 27): bee43954 813368bc /data/data/my.apps.package/lib/libffmpeg.so
D/Zygote ( 29): Process 217 terminated by signal (4)
I/ActivityManager( 65): Process my.apps.package (pid 217) has died.
I/WindowManager( 65): WIN DEATH: Window{43846460 my.apps.package/my.apps.package.MainActivity paused=false}
Как я полагаю, одной из причин сигнала SIGILL может быть попытка выполнить привилегированную инструкцию. RTSP - это сетевой протокол. Это означает, что ffmpeg.so пытается получить доступ к медиа-потоку по сети. Может быть, для этого должны быть указаны специальные разрешения? В моем приложении у меня есть только одно явное разрешение - android.permission.INTERNET
Должен ли я указать что-то еще?