5

単純なトランスコードを実行している IMediaWriter を閉じると、例外が発生し続けます。例外は「java.lang.RuntimeException: エラー操作が許可されていません。test.mp3 へのトレーラーの書き込みに失敗しました」です。IMediaWriter.close() を呼び出すたびにこれを取得します。単純なトランスコーディングでこれを取得する理由はありますか? サンプルコードは次のとおりです。

IMediaReader reader = null; 
    IMediaWriter writer = null; 
    try { 
        reader = ToolFactory.makeReader("test.wav"); 
        writer = ToolFactory.makeWriter("test.mp3", reader); 
        reader.addListener(writer); 
        while (reader.readPacket() == null) ; 
        reader.close(); 
        writer.close(); 
    } catch (Exception ex) { 
        ex.printStackTrace(); 
    } 
4

1 に答える 1

2

私は同じ問題に直面していたので、これは確実に機能します。ありがとうございました。さらに明確にしたい場合は、質問してください...

IMediaReader reader = null; 
    IMediaWriter writer = null; 
    try { 
        reader = ToolFactory.makeReader("sijo.mp4"); 
        writer = ToolFactory.makeWriter("Thomas.flv", reader); 
        reader.addListener(writer); 
        while (reader.readPacket() == null) ; 
        //Should IMediaReader automatically call close(), only if ERROR_EOF (End of File) is returned from readPacket().
        reader.setCloseOnEofOnly(false); 
        //If false the media data will be left in the order in which it is presented to the IMediaWriter.
        //If true IMediaWriter will buffer media data in time stamp order, and only write out data when it has at least one same time or later packet from all streams.
        writer.setForceInterleave(false);
        System.out.println("closed...");
    } catch (Exception ex) { 
        ex.printStackTrace(); 
    }
于 2014-02-12T13:41:21.350 に答える