@@ -61,7 +61,7 @@ public AssembledIMPResult assembleIMFFromFiles(SimpleTimeline simpleTimeline, Fi
61
61
Map <UUID , List <Long >> sampleRateMap = new HashMap <>();
62
62
Map <UUID , BigInteger > sampleCountMap = new HashMap <>();
63
63
Map <UUID , byte []> hashMap = new HashMap <>();
64
- long videoIntrinsicDuration = 0 ;
64
+ long videoTotalSourceDuration = 0 ;
65
65
66
66
67
67
for (Track track : simpleTimeline .getEssenceTracks ()) {
@@ -159,7 +159,7 @@ public AssembledIMPResult assembleIMFFromFiles(SimpleTimeline simpleTimeline, Fi
159
159
logger .info ("Adding file to resources: {}.." , essenceTrackEntry .getFile ().getName ());
160
160
161
161
if (track .getSequenceTypeEnum ().equals (Composition .SequenceTypeEnum .MainImageSequence )) {
162
- videoIntrinsicDuration += sampleCount .longValue ();
162
+ videoTotalSourceDuration += ( essenceTrackEntry . getDuration () == null ? sampleCount : essenceTrackEntry . getDuration ()) .longValue ();
163
163
}
164
164
165
165
trackFileResources .add (
@@ -209,9 +209,9 @@ public AssembledIMPResult assembleIMFFromFiles(SimpleTimeline simpleTimeline, Fi
209
209
markerResources .add (new IMFMarkerResourceType (
210
210
UUIDHelper .fromUUID (IMFUUIDGenerator .getInstance ().generateUUID ()),
211
211
editRate ,
212
- BigInteger .valueOf (videoIntrinsicDuration ),
212
+ BigInteger .valueOf (videoTotalSourceDuration ),
213
213
BigInteger .ZERO ,
214
- BigInteger .valueOf (videoIntrinsicDuration ), // source duration may not be necessary
214
+ BigInteger .valueOf (videoTotalSourceDuration ), // source duration may not be necessary
215
215
BigInteger .ONE ,
216
216
markerList ));
217
217
0 commit comments