MediaMuxer error “Failed to stop the muxer”

前端 未结 3 1700
猫巷女王i
猫巷女王i 2020-12-06 17:08

I\'m encoding Camera preview data using MediaCodec with mime-type \"video/avc\" and passing the encoded data (video-only, no audio) to MediaM

相关标签:
3条回答
  • 2020-12-06 17:43

    There are 2 Problems with Android 5.0.2 Devices Moto E 1) The Width & height if not supplied multiples of 16 its crashing 2) The mediaBuffer to be set after the First Frame is Encoded

    0 讨论(0)
  • 2020-12-06 17:49

    I had the same issue .While closing the Muxer it was throwing "Failed to stop" error.When I checked my saved file in an ISO viewer I couldn't find the Track in it . I solved issue by creating the track only after getting the first output from the video encoder.Here is how I add my track

     m_VideoTrackIndex = muxer.addTrack(mediaCodec.getOutputFormat());
    

    The media format for the track is obtained from mediaCodec.getOutputFormat() which in turn will get initialized only after encoding the first frame.I changed my code to add the track after getting first encoded data (And of course only once).It is working fine .

    0 讨论(0)
  • 2020-12-06 17:53
    E/MPEG4Writer(2166): Missing codec specific data
    

    Sounds like you didn't call MediaMuxer#addTrack() with a MediaFormat that included the CSD. See the EncodeAndMuxTest.java code for an example of how to do this.

    Looking at the MPEG4Writer implementation used by MediaMuxer, there's an isTrackMalformed() check on line 2360; it sets ERROR_MALFORMED if the CSD data isn't present, but doesn't return immediately. Nothing clears the error, so it'll do a bunch of work and then fail, which seems to match what you're seeing.

    0 讨论(0)
提交回复
热议问题