2

我正在开发一个使用 Exoplayer 库(认为它是视频流的最佳可用库)流式传输 MPEG-2 TS 视频的应用程序。

当我尝试在具有 android 版本 5.1 的设备中播放视频时,它工作得非常好,但 4.2.2 不会发生同样的情况

我不知道这是否是 exoplayer 的问题,或者我错过了一些使 exoplayer 与旧版本一起工作的东西。

我只发布我的一些课程以供参考。

package hci.com.iptv.Activity;

import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.res.Resources;
import android.net.Uri;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.Surface;
import android.view.View;

import com.google.android.exoplayer2.C;
import com.google.android.exoplayer2.DefaultLoadControl;
import com.google.android.exoplayer2.DefaultRenderersFactory;
import com.google.android.exoplayer2.ExoPlayerFactory;
import com.google.android.exoplayer2.Format;
import com.google.android.exoplayer2.LoadControl;
import com.google.android.exoplayer2.SimpleExoPlayer;
import com.google.android.exoplayer2.audio.AudioRendererEventListener;
import com.google.android.exoplayer2.decoder.DecoderCounters;
import com.google.android.exoplayer2.extractor.DefaultExtractorsFactory;
import com.google.android.exoplayer2.extractor.ExtractorsFactory;
import com.google.android.exoplayer2.source.ExtractorMediaSource;
import com.google.android.exoplayer2.source.MediaSource;
import com.google.android.exoplayer2.trackselection.DefaultTrackSelector;
import com.google.android.exoplayer2.ui.AspectRatioFrameLayout;
import com.google.android.exoplayer2.ui.PlaybackControlView;
import com.google.android.exoplayer2.ui.SimpleExoPlayerView;
import com.google.android.exoplayer2.upstream.DefaultAllocator;
import com.google.android.exoplayer2.upstream.DefaultBandwidthMeter;
import com.google.android.exoplayer2.util.Util;
import com.google.android.exoplayer2.video.VideoRendererEventListener;

import hci.com.iptv.Player.EncryptedTsUdpDataSourceFactory;
import hci.com.iptv.R;
import hci.com.iptv.Utils.PreferenceManager;


import static hci.com.iptv.Activity.ConfigScreenActivity.IP_ADDRESS;
import static hci.com.iptv.Activity.ConfigScreenActivity.PORT_NUMBER;

public class StreamReaderActivity extends Activity {

    private static final String TAG = "HCI.MainActivity";

    SimpleExoPlayerView playerView;
    SimpleExoPlayer player;

    Resources resources;

    String savedIpAddress;
    int savedPortNumber;

    Object lock = new Object();
    /**
     * Main point of entry
     * Get IP address details
     * Launch the IPTV stream service. When binding is complete it will complete on the
     * mConnection object.
     *
     * @param savedInstanceState - saved Instance State
     */
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Log.d(TAG, "In onCreate");
        Log.i(TAG, "Starting IPTV Player: " + getString(R.string.build));
        setContentView(R.layout.activity_stream_reader);
        resources = getResources();

        // Video View Setup
        playerView = (SimpleExoPlayerView) findViewById(R.id.surface);
        PreferenceManager.setApplicationContext(getApplicationContext());
        savedIpAddress = PreferenceManager.getStringPreference(IP_ADDRESS);
        savedPortNumber = PreferenceManager.getIntPreference(PORT_NUMBER);
    }

    public void initializePlayer(){
        hideSystemUi();
        DefaultAllocator da = new DefaultAllocator(true, 500*188);
        LoadControl loadControl = new DefaultLoadControl(da);
        DefaultRenderersFactory rf = new DefaultRenderersFactory(this.getApplicationContext(), null, DefaultRenderersFactory.EXTENSION_RENDERER_MODE_ON);
        player = ExoPlayerFactory.newSimpleInstance(
                rf,
                new DefaultTrackSelector(),
                new DefaultLoadControl()
        );
        playerView.setResizeMode(AspectRatioFrameLayout.RESIZE_MODE_FILL);

        playerView.setPlayer(player);
        player.setPlayWhenReady(true);

        player.setVideoDebugListener(new VideoRendererEventListener() {
            @Override
            public void onVideoEnabled(DecoderCounters counters) {
                Log.i(TAG, "Video Enabled: " + counters.toString());
            }

            @Override
            public void onVideoDecoderInitialized(String decoderName, long initializedTimestampMs, long initializationDurationMs) {
                Log.i(TAG, "Video Decoder Initialized: " + decoderName);
            }

            @Override
            public void onVideoInputFormatChanged(Format format) {
                Log.i(TAG, "Video Input Format: " + format.sampleMimeType);
            }

            @Override
            public void onDroppedFrames(int count, long elapsedMs) {
                Log.i(TAG, "Dropped Frames: "+ count + "--"+ elapsedMs);
                player.seekTo(0);
                //player.prepare(buildTcpMediaSource("tcp://"+savedIpAddress+":"+savedPortNumber), true, true);
            }

            @Override
            public void onVideoSizeChanged(int width, int height, int unappliedRotationDegrees, float pixelWidthHeightRatio) {
                Log.i(TAG, "Video Size Changed: wxh " + width + "x" + height);
            }

            @Override
            public void onRenderedFirstFrame(Surface surface) {

            }

            @Override
            public void onVideoDisabled(DecoderCounters counters) {
                Log.i(TAG, "Video Disabled");
            }
        });

        player.setAudioDebugListener(new AudioRendererEventListener() {
            @Override
            public void onAudioEnabled(DecoderCounters counters) {
                Log.i(TAG, "Audio Enabled: "+counters.toString());
            }

            @Override
            public void onAudioSessionId(int audioSessionId) {
                Log.i(TAG, "New Audio Session: "+ audioSessionId);
            }

            @Override
            public void onAudioDecoderInitialized(String decoderName, long initializedTimestampMs, long initializationDurationMs) {
                Log.i(TAG, "Audio Decoder Initializied: "+ decoderName);
            }

            @Override
            public void onAudioInputFormatChanged(Format format) {
                Log.i(TAG, "Audio Input Format Changed: " + format.containerMimeType );
            }

            @Override
            public void onAudioTrackUnderrun(int bufferSize, long bufferSizeMs, long elapsedSinceLastFeedMs) {
                Log.i(TAG, "Audio Track Underrun: " + bufferSize + " -- "+ bufferSizeMs +"/"+elapsedSinceLastFeedMs);
                player.seekTo(0);
            }

            @Override
            public void onAudioDisabled(DecoderCounters counters) {
                Log.i(TAG, "Audio Disabled: " + counters.toString());
            }
        });

        player.prepare(buildTcpMediaSource("tcp://"+savedIpAddress+":"+savedPortNumber), true, false);
    }

    @Override
    public void onStart(){
        super.onStart();
        if(Util.SDK_INT > 23){
            initializePlayer();
        }
    }

    @Override
    public void onResume(){
        super.onResume();
        hideSystemUi();
        if((Util.SDK_INT <= 23 || player == null)){
            initializePlayer();
        }
    }

    private void releasePlayer() {
        if (player != null) {
            player.release();
            player = null;
        }
    }

    @Override
    public void onPause() {
        super.onPause();
        if (Util.SDK_INT <= 23){
            releasePlayer();
        }
    }

    private MediaSource buildTcpMediaSource(String sUri){
        Uri uri = Uri.parse(sUri);
        DefaultBandwidthMeter bandwidthMeter = new DefaultBandwidthMeter();
        EncryptedTsUdpDataSourceFactory factory = new EncryptedTsUdpDataSourceFactory(bandwidthMeter);
        ExtractorsFactory extractorsFactory = new DefaultExtractorsFactory();
        return new ExtractorMediaSource(uri, factory, extractorsFactory, null, null);
    }

    @SuppressLint("InlinedApi")
    private void hideSystemUi() {
        playerView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE
                | View.SYSTEM_UI_FLAG_FULLSCREEN
                | View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
                | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
    }
}

这是布局文件

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="hci.com.iptv.Activity.StreamReaderActivity">

        <TextView
            android:id="@+id/buildnumber"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="@string/build"/>
        <com.google.android.exoplayer2.ui.SimpleExoPlayerView
            android:id="@+id/surface"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_below="@+id/buildnumber"/>

</RelativeLayout>

和清单文件

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="hci.com.iptv">

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <uses-permission android:name="android.permission.RECORD_AUDIO" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.WRITE_OWNER_DATA" />

    <!-- To auto-complete the email text field in the login form with the user's emails -->
    <uses-permission android:name="android.permission.GET_ACCOUNTS" />
    <uses-permission android:name="android.permission.READ_PROFILE" />
    <uses-permission android:name="android.permission.READ_CONTACTS" />

    <application
        android:allowBackup="false"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppFullScreenTheme"
        android:hardwareAccelerated="true">

        <!--<service
            android:name=".Amlogic.VideoService">
            <intent-filter>
                <action android:name="amlogic.action.media.video.service"/>
            </intent-filter>
        </service>-->
        <activity
            android:name=".Activity.StreamReaderActivity"
            android:screenOrientation="landscape" />
        <activity
            android:name=".Activity.SplashActivity"
            android:screenOrientation="landscape">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name=".Activity.ConfigScreenActivity"
            android:screenOrientation="landscape" />
    </application>

</manifest>

我需要对视频进行加密,但那是一个单独的加密代码。我认为这不会有任何区别,因为视频在 5.1 版的设备中可以正常播放

这些是我运行任何视频时的日志。

10-30 05:54:14.614 14669-14669/hci.com.iptv D/dalvikvm: DexOpt: unable to opt direct call 0x5230 at 0x16 in Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;.clearRenderedFirstFrame
10-30 05:54:14.624 14669-14669/hci.com.iptv I/dalvikvm: Failed resolving Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer$OnFrameRenderedListenerV23; interface 154 'Landroid/media/MediaCodec$OnFrameRenderedListener;'
10-30 05:54:14.624 14669-14669/hci.com.iptv W/dalvikvm: Link of class 'Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer$OnFrameRenderedListenerV23;' failed
10-30 05:54:14.624 14669-14669/hci.com.iptv D/dalvikvm: DexOpt: unable to opt direct call 0x5230 at 0x44 in Lcom/google/android/exoplayer2/video/MediaCodecVideoRenderer;.configureCodec
10-30 05:54:14.644 14669-14669/hci.com.iptv E/dalvikvm: Could not find class 'android.media.AudioAttributes$Builder', referenced from method com.google.android.exoplayer2.audio.AudioTrack.createAudioTrackV21
10-30 05:54:14.644 14669-14669/hci.com.iptv W/dalvikvm: VFY: unable to resolve new-instance 140 (Landroid/media/AudioAttributes$Builder;) in Lcom/google/android/exoplayer2/audio/AudioTrack;
10-30 05:54:14.644 14669-14669/hci.com.iptv D/dalvikvm: VFY: replacing opcode 0x22 at 0x0005
10-30 05:54:14.644 14669-14669/hci.com.iptv W/dalvikvm: VFY: unable to find class referenced in signature (Landroid/media/AudioAttributes;)
10-30 05:54:14.644 14669-14669/hci.com.iptv E/dalvikvm: Could not find class 'android.media.AudioFormat$Builder', referenced from method com.google.android.exoplayer2.audio.AudioTrack.createAudioTrackV21
10-30 05:54:14.644 14669-14669/hci.com.iptv W/dalvikvm: VFY: unable to resolve new-instance 142 (Landroid/media/AudioFormat$Builder;) in Lcom/google/android/exoplayer2/audio/AudioTrack;
10-30 05:54:14.644 14669-14669/hci.com.iptv D/dalvikvm: VFY: replacing opcode 0x22 at 0x001d
10-30 05:54:14.654 14669-14669/hci.com.iptv I/dalvikvm: Could not find method android.media.AudioTrack.setVolume, referenced from method com.google.android.exoplayer2.audio.AudioTrack.setVolumeInternalV21
10-30 05:54:14.654 14669-14669/hci.com.iptv W/dalvikvm: VFY: unable to resolve virtual method 787: Landroid/media/AudioTrack;.setVolume (F)I
10-30 05:54:14.654 14669-14669/hci.com.iptv D/dalvikvm: VFY: replacing opcode 0x6e at 0x0000
10-30 05:54:14.654 14669-14669/hci.com.iptv I/dalvikvm: Could not find method android.media.AudioTrack.write, referenced from method com.google.android.exoplayer2.audio.AudioTrack.writeNonBlockingV21
10-30 05:54:14.654 14669-14669/hci.com.iptv W/dalvikvm: VFY: unable to resolve virtual method 789: Landroid/media/AudioTrack;.write (Ljava/nio/ByteBuffer;II)I
10-30 05:54:14.654 14669-14669/hci.com.iptv D/dalvikvm: VFY: replacing opcode 0x6e at 0x0001
10-30 05:54:14.654 14669-14669/hci.com.iptv I/dalvikvm: Could not find method android.media.AudioTrack.write, referenced from method com.google.android.exoplayer2.audio.AudioTrack.writeNonBlockingWithAvSyncV21
10-30 05:54:14.654 14669-14669/hci.com.iptv W/dalvikvm: VFY: unable to resolve virtual method 789: Landroid/media/AudioTrack;.write (Ljava/nio/ByteBuffer;II)I
10-30 05:54:14.654 14669-14669/hci.com.iptv D/dalvikvm: VFY: replacing opcode 0x6e at 0x0042
10-30 05:54:14.674 14669-14669/hci.com.iptv D/dalvikvm: DexOpt: unable to opt direct call 0x02e8 at 0x07 in Lcom/google/android/exoplayer2/audio/AudioTrack;.createAudioTrackV21
10-30 05:54:14.674 14669-14669/hci.com.iptv D/dalvikvm: DexOpt: unable to opt direct call 0x02f0 at 0x1f in Lcom/google/android/exoplayer2/audio/AudioTrack;.createAudioTrackV21
10-30 05:54:14.674 14669-14669/hci.com.iptv D/dalvikvm: DexOpt: unable to opt direct call 0x0306 at 0x42 in Lcom/google/android/exoplayer2/audio/AudioTrack;.createAudioTrackV21
10-30 05:54:14.674 14669-14669/hci.com.iptv E/dalvikvm: Could not find class 'android.media.AudioAttributes$Builder', referenced from method com.google.android.exoplayer2.audio.AudioAttributes.getAudioAttributesV21
10-30 05:54:14.674 14669-14669/hci.com.iptv W/dalvikvm: VFY: unable to resolve new-instance 140 (Landroid/media/AudioAttributes$Builder;) in Lcom/google/android/exoplayer2/audio/AudioAttributes;
10-30 05:54:14.674 14669-14669/hci.com.iptv D/dalvikvm: VFY: replacing opcode 0x22 at 0x0004
10-30 05:54:14.674 14669-14669/hci.com.iptv W/dalvikvm: VFY: unable to find class referenced in signature (Landroid/media/AudioAttributes;)
10-30 05:54:14.674 14669-14669/hci.com.iptv D/dalvikvm: DexOpt: unable to opt direct call 0x02e8 at 0x06 in Lcom/google/android/exoplayer2/audio/AudioAttributes;.getAudioAttributesV21
10-30 05:54:14.684 14669-14669/hci.com.iptv I/DefaultRenderersFactory: Loaded FfmpegAudioRenderer.
10-30 05:54:14.694 14669-14669/hci.com.iptv I/ExoPlayerImpl: Init ExoPlayerLib/2.4.3 [h27ref, HCIGEN4, TV, 17]
10-30 05:54:14.754 14669-15366/hci.com.iptv I/dalvikvm: Could not find method android.os.Trace.beginSection, referenced from method com.google.android.exoplayer2.util.TraceUtil.beginSectionV18
10-30 05:54:14.754 14669-15366/hci.com.iptv W/dalvikvm: VFY: unable to resolve static method 1258: Landroid/os/Trace;.beginSection (Ljava/lang/String;)V
10-30 05:54:14.754 14669-15366/hci.com.iptv D/dalvikvm: VFY: replacing opcode 0x71 at 0x0000
10-30 05:54:14.754 14669-15366/hci.com.iptv I/dalvikvm: Could not find method android.os.Trace.endSection, referenced from method com.google.android.exoplayer2.util.TraceUtil.endSectionV18
10-30 05:54:14.754 14669-15366/hci.com.iptv W/dalvikvm: VFY: unable to resolve static method 1259: Landroid/os/Trace;.endSection ()V
10-30 05:54:14.754 14669-15366/hci.com.iptv D/dalvikvm: VFY: replacing opcode 0x71 at 0x0000
10-30 05:54:14.774 14669-15366/hci.com.iptv I/DataSource: Creating Multicast Connection
10-30 05:54:15.094 14669-14669/hci.com.iptv I/dalvikvm: Could not find method android.media.AudioManager.generateAudioSessionId, referenced from method com.google.android.exoplayer2.C.generateAudioSessionIdV21
10-30 05:54:15.094 14669-14669/hci.com.iptv W/dalvikvm: VFY: unable to resolve virtual method 759: Landroid/media/AudioManager;.generateAudioSessionId ()I
10-30 05:54:15.094 14669-14669/hci.com.iptv D/dalvikvm: VFY: replacing opcode 0x6e at 0x0008
10-30 05:54:24.794 14669-15366/hci.com.iptv I/DataSource: Creating Multicast Connection
10-30 05:54:35.794 14669-15366/hci.com.iptv I/DataSource: Creating Multicast Connection
10-30 05:54:39.264 14669-14676/hci.com.iptv I/dalvikvm: Total arena pages for JIT: 11
10-30 05:54:39.264 14669-14676/hci.com.iptv I/dalvikvm: Total arena pages for JIT: 12
10-30 05:54:39.264 14669-14676/hci.com.iptv I/dalvikvm: Total arena pages for JIT: 13
10-30 05:54:39.264 14669-14676/hci.com.iptv I/dalvikvm: Total arena pages for JIT: 14
10-30 05:54:39.264 14669-14676/hci.com.iptv I/dalvikvm: Total arena pages for JIT: 15
10-30 05:54:39.264 14669-14676/hci.com.iptv I/dalvikvm: Total arena pages for JIT: 16
10-30 05:54:39.264 14669-14676/hci.com.iptv I/dalvikvm: Total arena pages for JIT: 17
10-30 05:54:39.484 14669-15365/hci.com.iptv I/dalvikvm: Could not find method android.media.MediaCodecInfo$VideoCapabilities.isSizeSupported, referenced from method com.google.android.exoplayer2.mediacodec.MediaCodecInfo.areSizeAndRateSupportedV21
10-30 05:54:39.484 14669-15365/hci.com.iptv W/dalvikvm: VFY: unable to resolve virtual method 823: Landroid/media/MediaCodecInfo$VideoCapabilities;.isSizeSupported (II)Z
10-30 05:54:39.484 14669-15365/hci.com.iptv D/dalvikvm: VFY: replacing opcode 0x6e at 0x000c
10-30 05:54:39.484 14669-15365/hci.com.iptv I/dalvikvm: Could not find method android.media.MediaCodecInfo$VideoCapabilities.areSizeAndRateSupported, referenced from method com.google.android.exoplayer2.mediacodec.MediaCodecInfo.areSizeAndRateSupportedV21
10-30 05:54:39.484 14669-15365/hci.com.iptv W/dalvikvm: VFY: unable to resolve virtual method 820: Landroid/media/MediaCodecInfo$VideoCapabilities;.areSizeAndRateSupported (IID)Z
10-30 05:54:39.484 14669-15365/hci.com.iptv D/dalvikvm: VFY: replacing opcode 0x6e at 0x0011
10-30 05:54:39.484 14669-15365/hci.com.iptv I/dalvikvm: Could not find method android.media.MediaCodecInfo$CodecCapabilities.isFeatureSupported, referenced from method com.google.android.exoplayer2.mediacodec.MediaCodecInfo.isAdaptiveV19
10-30 05:54:39.484 14669-15365/hci.com.iptv W/dalvikvm: VFY: unable to resolve virtual method 819: Landroid/media/MediaCodecInfo$CodecCapabilities;.isFeatureSupported (Ljava/lang/String;)Z
10-30 05:54:39.484 14669-15365/hci.com.iptv D/dalvikvm: VFY: replacing opcode 0x6e at 0x0002
10-30 05:54:39.484 14669-15365/hci.com.iptv I/dalvikvm: Could not find method android.media.MediaCodecInfo$CodecCapabilities.isFeatureSupported, referenced from method com.google.android.exoplayer2.mediacodec.MediaCodecInfo.isSecureV21
10-30 05:54:39.484 14669-15365/hci.com.iptv W/dalvikvm: VFY: unable to resolve virtual method 819: Landroid/media/MediaCodecInfo$CodecCapabilities;.isFeatureSupported (Ljava/lang/String;)Z
10-30 05:54:39.484 14669-15365/hci.com.iptv D/dalvikvm: VFY: replacing opcode 0x6e at 0x0002
10-30 05:54:39.484 14669-15365/hci.com.iptv I/dalvikvm: Could not find method android.media.MediaCodecInfo$CodecCapabilities.isFeatureSupported, referenced from method com.google.android.exoplayer2.mediacodec.MediaCodecInfo.isTunnelingV21
10-30 05:54:39.484 14669-15365/hci.com.iptv W/dalvikvm: VFY: unable to resolve virtual method 819: Landroid/media/MediaCodecInfo$CodecCapabilities;.isFeatureSupported (Ljava/lang/String;)Z
10-30 05:54:39.484 14669-15365/hci.com.iptv D/dalvikvm: VFY: replacing opcode 0x6e at 0x0002
10-30 05:54:39.484 14669-15365/hci.com.iptv I/dalvikvm: Could not find method android.media.MediaCodecInfo$CodecCapabilities.getVideoCapabilities, referenced from method com.google.android.exoplayer2.mediacodec.MediaCodecInfo.alignVideoSizeV21
10-30 05:54:39.484 14669-15365/hci.com.iptv W/dalvikvm: VFY: unable to resolve virtual method 818: Landroid/media/MediaCodecInfo$CodecCapabilities;.getVideoCapabilities ()Landroid/media/MediaCodecInfo$VideoCapabilities;
10-30 05:54:39.484 14669-15365/hci.com.iptv D/dalvikvm: VFY: replacing opcode 0x6e at 0x000d
10-30 05:54:39.484 14669-15365/hci.com.iptv I/dalvikvm: Could not find method android.media.MediaCodecInfo$CodecCapabilities.getAudioCapabilities, referenced from method com.google.android.exoplayer2.mediacodec.MediaCodecInfo.isAudioChannelCountSupportedV21
10-30 05:54:39.484 14669-15365/hci.com.iptv W/dalvikvm: VFY: unable to resolve virtual method 817: Landroid/media/MediaCodecInfo$CodecCapabilities;.getAudioCapabilities ()Landroid/media/MediaCodecInfo$AudioCapabilities;
10-30 05:54:39.484 14669-15365/hci.com.iptv D/dalvikvm: VFY: replacing opcode 0x6e at 0x000d
10-30 05:54:39.484 14669-15365/hci.com.iptv I/dalvikvm: Could not find method android.media.MediaCodecInfo$CodecCapabilities.getAudioCapabilities, referenced from method com.google.android.exoplayer2.mediacodec.MediaCodecInfo.isAudioSampleRateSupportedV21
10-30 05:54:39.484 14669-15365/hci.com.iptv W/dalvikvm: VFY: unable to resolve virtual method 817: Landroid/media/MediaCodecInfo$CodecCapabilities;.getAudioCapabilities ()Landroid/media/MediaCodecInfo$AudioCapabilities;
10-30 05:54:39.484 14669-15365/hci.com.iptv D/dalvikvm: VFY: replacing opcode 0x6e at 0x000d
10-30 05:54:39.484 14669-15365/hci.com.iptv I/dalvikvm: Could not find method android.media.MediaCodecInfo$CodecCapabilities.getVideoCapabilities, referenced from method com.google.android.exoplayer2.mediacodec.MediaCodecInfo.isVideoSizeAndRateSupportedV21
10-30 05:54:39.484 14669-15365/hci.com.iptv W/dalvikvm: VFY: unable to resolve virtual method 818: Landroid/media/MediaCodecInfo$CodecCapabilities;.getVideoCapabilities ()Landroid/media/MediaCodecInfo$VideoCapabilities;
10-30 05:54:39.484 14669-15365/hci.com.iptv D/dalvikvm: VFY: replacing opcode 0x6e at 0x000d

非常感谢任何输入。

4

0 回答 0