비디오를 코드 변환하기 위해 ExtractDecodeEditEncodeMuxTest.java 코드를 내 앱에 복사했습니다. 가장 중요한 변경 사항은 클래스를 으로 변경하고 extends AndroidTestCase
을 제거하는 것이므로 모든 활동에서 분리됩니다. 내가 별도의 스레드 등을 모두 작성해야 this 또는 that 같은 답변에 따르면왜 난독 화와 인코딩이 켜져 "표면 프레임이 초과되었습니다 대기"는 무엇입니까?
E/d: com.testapp.a.g.a.b.b(OutputSurface.java:270)
E/d: com.testapp.a.g.a.d.a(VideoTranscoder.java:944)
E/d: com.testapp.a.g.a.d.a(VideoTranscoder.java:6353)
E/d: com.testapp.a.g.a.f.run(VideoTranscoder.java:162)
E/d: java.lang.Thread.run(Thread.java:818)
E/d: TestWrapper
E/MediaCodecController: com.testapp.a.g.a.b.b(OutputSurface.java:270)
E/MediaCodecController: com.testapp.a.g.a.d.a(VideoTranscoder.java:944)
E/MediaCodecController: com.testapp.a.g.a.d.a(VideoTranscoder.java:6353)
E/MediaCodecController: com.testapp.a.g.a.f.run(VideoTranscoder.java:162)
E/MediaCodecController: java.lang.Thread.run(Thread.java:818)
W/System.err: java.lang.RuntimeException: Surface frame wait timed out
W/System.err: at com.testapp.a.g.a.b.b(OutputSurface.java:270)
W/System.err: at com.testapp.a.g.a.d.a(VideoTranscoder.java:944)
W/System.err: at com.testapp.a.g.a.d.a(VideoTranscoder.java:6353)
W/System.err: at com.testapp.a.g.a.f.run(VideoTranscoder.java:162)
W/System.err: at java.lang.Thread.run(Thread.java:818)
E/CompressionController: Compressor reported error, not hashing!
하지만 실제로 원본을 사용하고 있습니다 : 내가 난독 화와 릴리스 빌드를 컴파일 할 때까지 모든 것이 잘 작동, 그것은과 런타임에 실패 코드가 이미 해당 스레드를 작성하고 있습니다. 내가 난독 화를 해제하기 위해 minifyEnabled false
에 Gradle을 해제 설정을 변경하면 모든 것이 다시 작동합니다.
그래서 난독 화는 엉망 인코더/디코더를 스레드에 무엇을하고 있는가? 또는 MediaCodec
에 의해 간접적으로 사용되는 클래스를 제거하고 있습니까? 그것을 작동시키기 위해 프로 가드 설정에 추가해야 할 것이 있습니까? 난독 화 파일 모두에 -dontoptimize
을 추가 한 후