mirror of
https://github.com/androidx/media.git
synced 2025-04-30 06:46:50 +08:00
Adding API and internal export support for audio gaps in sequences.
PiperOrigin-RevId: 678235289
This commit is contained in:
parent
43765b7567
commit
076eea283e
@ -49,6 +49,7 @@
|
|||||||
allow invoking events of subclass listeners
|
allow invoking events of subclass listeners
|
||||||
([1736](https://github.com/androidx/media/pull/1736)).
|
([1736](https://github.com/androidx/media/pull/1736)).
|
||||||
* Transformer:
|
* Transformer:
|
||||||
|
* Add export support for gaps in sequences of audio EditedMediaItems.
|
||||||
* Track Selection:
|
* Track Selection:
|
||||||
* Extractors:
|
* Extractors:
|
||||||
* Fix preroll sample handling for non-keyframe media start positions when
|
* Fix preroll sample handling for non-keyframe media start positions when
|
||||||
|
@ -0,0 +1,227 @@
|
|||||||
|
format audio:
|
||||||
|
averageBitrate = 131072
|
||||||
|
sampleMimeType = audio/mp4a-latm
|
||||||
|
channelCount = 2
|
||||||
|
sampleRate = 44100
|
||||||
|
pcmEncoding = 2
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -2078200747
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -1746076349
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -1572855937
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 701978997
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -1243111139
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -1322796125
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 183250677
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1653767665
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1354849623
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -394780569
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1818125983
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -2040268451
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1205101453
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1680621511
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1417062205
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 391927517
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -1602519453
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -889560817
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -1844125309
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -1254048247
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 862533775
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1056907509
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 614586437
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1422444303
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -1521025139
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -645048879
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -1964215627
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 794382801
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -1742698007
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1820518143
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1778289323
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1268893547
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1838744749
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -1671917515
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1340018589
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1917601633
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -265336963
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -784922721
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1193402155
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1103096997
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1473134533
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -1817808281
|
||||||
|
size = 272
|
||||||
|
isKeyFrame = true
|
||||||
|
released = true
|
@ -0,0 +1,227 @@
|
|||||||
|
format audio:
|
||||||
|
averageBitrate = 131072
|
||||||
|
sampleMimeType = audio/mp4a-latm
|
||||||
|
channelCount = 2
|
||||||
|
sampleRate = 44100
|
||||||
|
pcmEncoding = 2
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -2078200747
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -1746076349
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -1572855937
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 701978997
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 459593640
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 177383240
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 565637567
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1269391254
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -1473724630
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1365108398
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 15208603
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -149452152
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 568136563
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1569944195
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1581189639
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 344240733
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -1247810281
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 723599439
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -1844125309
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -1254048247
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 862533775
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1056907509
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 614586437
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1422444303
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -1521025139
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -645048879
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -1964215627
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 794382801
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -1742698007
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1820518143
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1778289323
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1268893547
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1838744749
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -1671917515
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1340018589
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1917601633
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -265336963
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -784922721
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1193402155
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1103096997
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1473134533
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -1817808281
|
||||||
|
size = 272
|
||||||
|
isKeyFrame = true
|
||||||
|
released = true
|
@ -0,0 +1,117 @@
|
|||||||
|
format audio:
|
||||||
|
averageBitrate = 131072
|
||||||
|
sampleMimeType = audio/mp4a-latm
|
||||||
|
channelCount = 1
|
||||||
|
sampleRate = 44100
|
||||||
|
pcmEncoding = 2
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -477126770
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 779113371
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 45842530
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 2001000243
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -187462316
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -309708822
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1030869338
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -1134039798
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -2131288947
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1159697593
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -889164698
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1380568930
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1722863050
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -1365744081
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -81471997
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -6915052
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1634845963
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -1252305359
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 2127515647
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 2077308846
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1055925064
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1128351030
|
||||||
|
size = 2184
|
||||||
|
isKeyFrame = true
|
||||||
|
released = true
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,117 @@
|
|||||||
|
format audio:
|
||||||
|
averageBitrate = 131072
|
||||||
|
sampleMimeType = audio/mp4a-latm
|
||||||
|
channelCount = 2
|
||||||
|
sampleRate = 44100
|
||||||
|
pcmEncoding = 2
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1728208641
|
||||||
|
size = 2184
|
||||||
|
isKeyFrame = true
|
||||||
|
released = true
|
@ -0,0 +1,377 @@
|
|||||||
|
format audio:
|
||||||
|
averageBitrate = 131072
|
||||||
|
sampleMimeType = audio/mp4a-latm
|
||||||
|
channelCount = 2
|
||||||
|
sampleRate = 44100
|
||||||
|
pcmEncoding = 2
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -1549267417
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 189152495
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -1814391561
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -422124093
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -155446957
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -1488079801
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1669809701
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -894031225
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 40356789
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 971335451
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1732134737
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -446879687
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 868401927
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -1206562483
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1400548769
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1068263999
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -2145054801
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1570577127
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 10822971
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 688645803
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -2108835899
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -722381595
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -1250628323
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 244326497
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -698620401
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 271098305
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -1004000469
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1556734443
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -903836437
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -177535827
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -595024459
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -2131779733
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -1910157521
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 131901723
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 583017977
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 163786317
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 387678787
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -884773583
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -1782565003
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -270552755
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -371096827
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -1960606887
|
||||||
|
size = 872
|
||||||
|
isKeyFrame = true
|
||||||
|
released = true
|
@ -0,0 +1,592 @@
|
|||||||
|
format audio:
|
||||||
|
averageBitrate = 131072
|
||||||
|
sampleMimeType = audio/mp4a-latm
|
||||||
|
channelCount = 2
|
||||||
|
sampleRate = 44100
|
||||||
|
pcmEncoding = 2
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -1039756463
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 532104865
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -2624455
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 861767379
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 374370895
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -101038951
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1221457977
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 668147831
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -912268579
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1066036765
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -1280807051
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -331910423
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -601176327
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -1258553699
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1298154949
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1230948091
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -1309853349
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -1932471341
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1319660815
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 203254827
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -38648823
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 41026117
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 665344669
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -1362552447
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -811356717
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1083196893
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 481568515
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -1740292951
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 176097221
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1538356855
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -1523294877
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1035272899
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 2006397059
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1229497131
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 575153873
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -180951997
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -155506985
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 771687811
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1771428289
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 415627769
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1851518133
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1491589801
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1451338191
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -2030338071
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -2140922517
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1748392625
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1287891629
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1923200619
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -1521215509
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -1640206823
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 210873943
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -1744451301
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 2000153215
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1039735551
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -109960687
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -370495703
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1284650595
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1361253863
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -857651477
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1997614047
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1362337995
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1629579951
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1326900633
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -1032738365
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 415627231
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 57107875
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -1660454425
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 285979697
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1504030063
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1211281407
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 820691967
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 319369447
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -245890127
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 151928257
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 2008077475
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1938059573
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1983275801
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -1943585545
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1433346369
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -1711471215
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1312724333
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -675636013
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -12375949
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -180443079
|
||||||
|
size = 1144
|
||||||
|
isKeyFrame = true
|
||||||
|
released = true
|
@ -0,0 +1,302 @@
|
|||||||
|
format audio:
|
||||||
|
averageBitrate = 131072
|
||||||
|
sampleMimeType = audio/mp4a-latm
|
||||||
|
channelCount = 1
|
||||||
|
sampleRate = 44100
|
||||||
|
pcmEncoding = 2
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -77784020
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1487579866
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -955640128
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -1797926221
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1304162335
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 87515422
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -1134039798
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -2131288947
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1159697593
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -889164698
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1380568930
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1722863050
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -1365744081
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -81471997
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -6915052
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1634845963
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -1252305359
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 2127515647
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 2077308846
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1055925064
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1806711606
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1326368952
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -161801624
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 2080056822
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -716932048
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -1439402914
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -793688784
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 34855870
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1205979058
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -690080937
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -542923942
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -1305696330
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 785152593
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -1048551992
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 522695938
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 575615445
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 372293125
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -547323125
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 119556475
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1819928231
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -2147026131
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -293825684
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -742988832
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -1521393535
|
||||||
|
size = 572
|
||||||
|
isKeyFrame = true
|
||||||
|
released = true
|
@ -0,0 +1,192 @@
|
|||||||
|
format audio:
|
||||||
|
averageBitrate = 131072
|
||||||
|
sampleMimeType = audio/mp4a-latm
|
||||||
|
channelCount = 1
|
||||||
|
sampleRate = 44100
|
||||||
|
pcmEncoding = 2
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -77784020
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1487579866
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -955640128
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -1797926221
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1304162335
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 87515422
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -1134039798
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -2131288947
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1159697593
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -889164698
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1380568930
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1722863050
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -1365744081
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -81471997
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -6915052
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1634845963
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -1252305359
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 2127515647
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 2077308846
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1055925064
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1806711606
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1999233
|
||||||
|
size = 2484
|
||||||
|
isKeyFrame = true
|
||||||
|
released = true
|
@ -0,0 +1,302 @@
|
|||||||
|
format audio:
|
||||||
|
averageBitrate = 131072
|
||||||
|
sampleMimeType = audio/mp4a-latm
|
||||||
|
channelCount = 1
|
||||||
|
sampleRate = 44100
|
||||||
|
pcmEncoding = 2
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -77784020
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1487579866
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -955640128
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -1797926221
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1304162335
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 87515422
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -1134039798
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -2131288947
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1159697593
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -889164698
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1380568930
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1722863050
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -1365744081
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -81471997
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -6915052
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1634845963
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -1252305359
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 2127515647
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 2077308846
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1055925064
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1806711606
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1742602241
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -635847032
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1881983178
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -728439441
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 515653227
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -391208104
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 166656461
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 330396328
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -116386074
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 569267689
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -1316476459
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -223671612
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -1465862447
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 2040352837
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -1371156112
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -1657641665
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -1745756564
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 2067094482
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 2009678119
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -1673523012
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1191811455
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = -120295709
|
||||||
|
size = 4096
|
||||||
|
isKeyFrame = true
|
||||||
|
sample:
|
||||||
|
trackType = audio
|
||||||
|
dataHashCode = 1474861853
|
||||||
|
size = 572
|
||||||
|
isKeyFrame = true
|
||||||
|
released = true
|
@ -327,6 +327,9 @@ public class TransformerAndroidTestRunner {
|
|||||||
}
|
}
|
||||||
for (EditedMediaItemSequence sequence : composition.sequences) {
|
for (EditedMediaItemSequence sequence : composition.sequences) {
|
||||||
for (EditedMediaItem editedMediaItem : sequence.editedMediaItems) {
|
for (EditedMediaItem editedMediaItem : sequence.editedMediaItems) {
|
||||||
|
if (editedMediaItem.isGap()) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
Uri mediaItemUri = checkNotNull(editedMediaItem.mediaItem.localConfiguration).uri;
|
Uri mediaItemUri = checkNotNull(editedMediaItem.mediaItem.localConfiguration).uri;
|
||||||
String scheme = mediaItemUri.getScheme();
|
String scheme = mediaItemUri.getScheme();
|
||||||
if (scheme != null && (scheme.equals("http") || scheme.equals("https"))) {
|
if (scheme != null && (scheme.equals("http") || scheme.equals("https"))) {
|
||||||
|
@ -1610,6 +1610,74 @@ public class TransformerEndToEndTest {
|
|||||||
assertThat(new File(result.filePath).length()).isGreaterThan(0);
|
assertThat(new File(result.filePath).length()).isGreaterThan(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void start_audioCompositionWithFirstSequenceOffsetGap_isCorrect() throws Exception {
|
||||||
|
assumeFormatsSupported(
|
||||||
|
context,
|
||||||
|
testId,
|
||||||
|
/* inputFormat= */ MP4_ASSET.videoFormat,
|
||||||
|
/* outputFormat= */ MP4_ASSET.videoFormat);
|
||||||
|
EditedMediaItem editedMediaItem =
|
||||||
|
new EditedMediaItem.Builder(MediaItem.fromUri(Uri.parse(MP4_ASSET.uri)))
|
||||||
|
.setRemoveVideo(true)
|
||||||
|
.build();
|
||||||
|
Composition composition =
|
||||||
|
new Composition.Builder(
|
||||||
|
new EditedMediaItemSequence.Builder()
|
||||||
|
.addGap(100_000)
|
||||||
|
.addItem(editedMediaItem)
|
||||||
|
.build(),
|
||||||
|
new EditedMediaItemSequence.Builder(editedMediaItem).build())
|
||||||
|
.build();
|
||||||
|
|
||||||
|
ExportTestResult result =
|
||||||
|
new TransformerAndroidTestRunner.Builder(context, new Transformer.Builder(context).build())
|
||||||
|
.build()
|
||||||
|
.run(testId, composition);
|
||||||
|
|
||||||
|
assertThat(new File(result.filePath).length()).isGreaterThan(0);
|
||||||
|
assertThat(result.exportResult.processedInputs).hasSize(3);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void start_audioVideoCompositionWithSecondSequenceIntervalGap_isCorrect()
|
||||||
|
throws Exception {
|
||||||
|
assumeFormatsSupported(
|
||||||
|
context,
|
||||||
|
testId,
|
||||||
|
/* inputFormat= */ MP4_ASSET.videoFormat,
|
||||||
|
/* outputFormat= */ MP4_ASSET.videoFormat);
|
||||||
|
|
||||||
|
EditedMediaItem videoItem =
|
||||||
|
new EditedMediaItem.Builder(MediaItem.fromUri(Uri.parse(MP4_ASSET.uri))).build();
|
||||||
|
EditedMediaItem editedMediaItem =
|
||||||
|
new EditedMediaItem.Builder(
|
||||||
|
new MediaItem.Builder()
|
||||||
|
.setUri(MP4_ASSET.uri)
|
||||||
|
.setClippingConfiguration(
|
||||||
|
new MediaItem.ClippingConfiguration.Builder().setEndPositionMs(300).build())
|
||||||
|
.build())
|
||||||
|
.setRemoveVideo(true)
|
||||||
|
.build();
|
||||||
|
Composition composition =
|
||||||
|
new Composition.Builder(
|
||||||
|
new EditedMediaItemSequence.Builder(videoItem).build(),
|
||||||
|
new EditedMediaItemSequence.Builder()
|
||||||
|
.addItem(editedMediaItem)
|
||||||
|
.addGap(200_000)
|
||||||
|
.addItem(editedMediaItem)
|
||||||
|
.build())
|
||||||
|
.build();
|
||||||
|
|
||||||
|
ExportTestResult result =
|
||||||
|
new TransformerAndroidTestRunner.Builder(context, new Transformer.Builder(context).build())
|
||||||
|
.build()
|
||||||
|
.run(testId, composition);
|
||||||
|
|
||||||
|
assertThat(new File(result.filePath).length()).isGreaterThan(0);
|
||||||
|
assertThat(result.exportResult.processedInputs).hasSize(4);
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void analyzeAudio_completesSuccessfully() throws Exception {
|
public void analyzeAudio_completesSuccessfully() throws Exception {
|
||||||
assumeFormatsSupported(
|
assumeFormatsSupported(
|
||||||
|
@ -440,4 +440,17 @@ public final class Composition {
|
|||||||
this.hdrMode = hdrMode;
|
this.hdrMode = hdrMode;
|
||||||
this.retainHdrFromUltraHdrImage = retainHdrFromUltraHdrImage;
|
this.retainHdrFromUltraHdrImage = retainHdrFromUltraHdrImage;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return whether any {@linkplain EditedMediaItemSequence sequences} contain a {@linkplain
|
||||||
|
* EditedMediaItemSequence.Builder#addGap(long) gap}.
|
||||||
|
*/
|
||||||
|
/* package */ boolean hasGaps() {
|
||||||
|
for (int i = 0; i < sequences.size(); i++) {
|
||||||
|
if (sequences.get(i).hasGaps()) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -29,10 +29,12 @@ import androidx.media3.common.util.Util;
|
|||||||
import androidx.media3.exoplayer.source.MediaSource;
|
import androidx.media3.exoplayer.source.MediaSource;
|
||||||
import androidx.media3.extractor.mp4.Mp4Extractor;
|
import androidx.media3.extractor.mp4.Mp4Extractor;
|
||||||
import com.google.errorprone.annotations.CanIgnoreReturnValue;
|
import com.google.errorprone.annotations.CanIgnoreReturnValue;
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
/** A {@link MediaItem} with the transformations to apply to it. */
|
/** A {@link MediaItem} with the transformations to apply to it. */
|
||||||
@UnstableApi
|
@UnstableApi
|
||||||
public final class EditedMediaItem {
|
public final class EditedMediaItem {
|
||||||
|
/* package */ static final String GAP_MEDIA_ID = "androidx-media3-GapMediaItem";
|
||||||
|
|
||||||
/** A builder for {@link EditedMediaItem} instances. */
|
/** A builder for {@link EditedMediaItem} instances. */
|
||||||
public static final class Builder {
|
public static final class Builder {
|
||||||
@ -341,4 +343,12 @@ public final class EditedMediaItem {
|
|||||||
}
|
}
|
||||||
return max(audioDurationUs, videoDurationUs);
|
return max(audioDurationUs, videoDurationUs);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns whether this {@code EditedMediaItem} is a {@linkplain
|
||||||
|
* EditedMediaItemSequence.Builder#addGap(long) gap}.
|
||||||
|
*/
|
||||||
|
/* package */ boolean isGap() {
|
||||||
|
return Objects.equals(mediaItem.mediaId, GAP_MEDIA_ID);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -17,6 +17,7 @@ package androidx.media3.transformer;
|
|||||||
|
|
||||||
import static androidx.media3.common.util.Assertions.checkArgument;
|
import static androidx.media3.common.util.Assertions.checkArgument;
|
||||||
|
|
||||||
|
import androidx.media3.common.MediaItem;
|
||||||
import androidx.media3.common.util.UnstableApi;
|
import androidx.media3.common.util.UnstableApi;
|
||||||
import com.google.common.collect.ImmutableList;
|
import com.google.common.collect.ImmutableList;
|
||||||
import com.google.errorprone.annotations.CanIgnoreReturnValue;
|
import com.google.errorprone.annotations.CanIgnoreReturnValue;
|
||||||
@ -81,6 +82,26 @@ public final class EditedMediaItemSequence {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Adds a gap to the sequence.
|
||||||
|
*
|
||||||
|
* <p>A gap is a period of time with no media.
|
||||||
|
*
|
||||||
|
* <p>Gaps are only supported in sequences of audio.
|
||||||
|
*
|
||||||
|
* @param durationUs The duration of the gap, in milliseconds.
|
||||||
|
* @return This builder, for convenience.
|
||||||
|
*/
|
||||||
|
@CanIgnoreReturnValue
|
||||||
|
public Builder addGap(long durationUs) {
|
||||||
|
items.add(
|
||||||
|
new EditedMediaItem.Builder(
|
||||||
|
new MediaItem.Builder().setMediaId(EditedMediaItem.GAP_MEDIA_ID).build())
|
||||||
|
.setDurationUs(durationUs)
|
||||||
|
.build());
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* See {@link EditedMediaItemSequence#isLooping}.
|
* See {@link EditedMediaItemSequence#isLooping}.
|
||||||
*
|
*
|
||||||
@ -157,4 +178,14 @@ public final class EditedMediaItemSequence {
|
|||||||
!editedMediaItems.isEmpty(), "The sequence must contain at least one EditedMediaItem.");
|
!editedMediaItems.isEmpty(), "The sequence must contain at least one EditedMediaItem.");
|
||||||
this.isLooping = builder.isLooping;
|
this.isLooping = builder.isLooping;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Return whether any items are a {@linkplain Builder#addGap(long) gap}. */
|
||||||
|
/* package */ boolean hasGaps() {
|
||||||
|
for (int i = 0; i < editedMediaItems.size(); i++) {
|
||||||
|
if (editedMediaItems.get(i).isGap()) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -64,7 +64,7 @@ import java.util.concurrent.atomic.AtomicInteger;
|
|||||||
private final List<EditedMediaItem> editedMediaItems;
|
private final List<EditedMediaItem> editedMediaItems;
|
||||||
private final boolean isLooping;
|
private final boolean isLooping;
|
||||||
private final boolean forceAudioTrack;
|
private final boolean forceAudioTrack;
|
||||||
private final AssetLoader.Factory assetLoaderFactory;
|
private final Factory assetLoaderFactory;
|
||||||
private final CompositionSettings compositionSettings;
|
private final CompositionSettings compositionSettings;
|
||||||
private final Listener sequenceAssetLoaderListener;
|
private final Listener sequenceAssetLoaderListener;
|
||||||
private final HandlerWrapper handler;
|
private final HandlerWrapper handler;
|
||||||
@ -109,7 +109,7 @@ import java.util.concurrent.atomic.AtomicInteger;
|
|||||||
public SequenceAssetLoader(
|
public SequenceAssetLoader(
|
||||||
EditedMediaItemSequence sequence,
|
EditedMediaItemSequence sequence,
|
||||||
boolean forceAudioTrack,
|
boolean forceAudioTrack,
|
||||||
AssetLoader.Factory assetLoaderFactory,
|
Factory assetLoaderFactory,
|
||||||
CompositionSettings compositionSettings,
|
CompositionSettings compositionSettings,
|
||||||
Listener listener,
|
Listener listener,
|
||||||
Clock clock,
|
Clock clock,
|
||||||
@ -117,7 +117,7 @@ import java.util.concurrent.atomic.AtomicInteger;
|
|||||||
editedMediaItems = sequence.editedMediaItems;
|
editedMediaItems = sequence.editedMediaItems;
|
||||||
isLooping = sequence.isLooping;
|
isLooping = sequence.isLooping;
|
||||||
this.forceAudioTrack = forceAudioTrack;
|
this.forceAudioTrack = forceAudioTrack;
|
||||||
this.assetLoaderFactory = assetLoaderFactory;
|
this.assetLoaderFactory = new GapInterceptingAssetLoaderFactory(assetLoaderFactory);
|
||||||
this.compositionSettings = compositionSettings;
|
this.compositionSettings = compositionSettings;
|
||||||
sequenceAssetLoaderListener = listener;
|
sequenceAssetLoaderListener = listener;
|
||||||
handler = clock.createHandler(looper, /* callback= */ null);
|
handler = clock.createHandler(looper, /* callback= */ null);
|
||||||
@ -131,7 +131,7 @@ import java.util.concurrent.atomic.AtomicInteger;
|
|||||||
// constructor.
|
// constructor.
|
||||||
@SuppressWarnings("nullness:argument.type.incompatible")
|
@SuppressWarnings("nullness:argument.type.incompatible")
|
||||||
AssetLoader currentAssetLoader =
|
AssetLoader currentAssetLoader =
|
||||||
assetLoaderFactory.createAssetLoader(
|
this.assetLoaderFactory.createAssetLoader(
|
||||||
editedMediaItems.get(0), looper, /* listener= */ this, compositionSettings);
|
editedMediaItems.get(0), looper, /* listener= */ this, compositionSettings);
|
||||||
this.currentAssetLoader = currentAssetLoader;
|
this.currentAssetLoader = currentAssetLoader;
|
||||||
}
|
}
|
||||||
@ -340,12 +340,14 @@ import java.util.concurrent.atomic.AtomicInteger;
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
EditedMediaItem editedMediaItem = editedMediaItems.get(currentMediaItemIndex);
|
||||||
|
|
||||||
onMediaItemChangedListener.onMediaItemChanged(
|
onMediaItemChangedListener.onMediaItemChanged(
|
||||||
editedMediaItems.get(currentMediaItemIndex),
|
editedMediaItem,
|
||||||
/* durationUs= */ (trackType == C.TRACK_TYPE_AUDIO && isLooping && decodeAudio)
|
/* durationUs= */ (trackType == C.TRACK_TYPE_AUDIO && isLooping && decodeAudio)
|
||||||
? C.TIME_UNSET
|
? C.TIME_UNSET
|
||||||
: currentAssetDurationUs,
|
: currentAssetDurationUs,
|
||||||
/* decodedFormat= */ outputFormat,
|
/* decodedFormat= */ editedMediaItem.isGap() ? null : outputFormat,
|
||||||
/* isLast= */ currentMediaItemIndex == editedMediaItems.size() - 1);
|
/* isLast= */ currentMediaItemIndex == editedMediaItems.size() - 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -544,6 +546,13 @@ import java.util.concurrent.atomic.AtomicInteger;
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void onGapSignalled() {
|
||||||
|
nonEndedTrackCount.decrementAndGet();
|
||||||
|
if (currentMediaItemIndex < editedMediaItems.size() - 1) {
|
||||||
|
switchAssetLoader();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void switchAssetLoader() {
|
private void switchAssetLoader() {
|
||||||
handler.post(
|
handler.post(
|
||||||
() -> {
|
() -> {
|
||||||
@ -611,4 +620,106 @@ import java.util.concurrent.atomic.AtomicInteger;
|
|||||||
return new ClippingIterator(iterator.copyOf(), clippingValue);
|
return new ClippingIterator(iterator.copyOf(), clippingValue);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Internally signals that the current asset is a {@linkplain
|
||||||
|
* EditedMediaItemSequence.Builder#addGap(long) gap}, but does no loading or processing of media.
|
||||||
|
*
|
||||||
|
* <p>This component requires downstream components to handle generation of the gap media.
|
||||||
|
*/
|
||||||
|
private final class GapSignalingAssetLoader implements AssetLoader {
|
||||||
|
|
||||||
|
private static final int OUTPUT_FORMAT_RETRY_DELAY_MS = 10;
|
||||||
|
|
||||||
|
private final long durationUs;
|
||||||
|
private final Format trackFormat;
|
||||||
|
private final Format decodedFormat;
|
||||||
|
|
||||||
|
private boolean outputtedFormat;
|
||||||
|
|
||||||
|
private GapSignalingAssetLoader(long durationUs) {
|
||||||
|
this.durationUs = durationUs;
|
||||||
|
this.trackFormat = new Format.Builder().setSampleMimeType(MimeTypes.AUDIO_RAW).build();
|
||||||
|
this.decodedFormat =
|
||||||
|
new Format.Builder()
|
||||||
|
.setSampleMimeType(MimeTypes.AUDIO_RAW)
|
||||||
|
.setSampleRate(44100)
|
||||||
|
.setChannelCount(2)
|
||||||
|
.setPcmEncoding(C.ENCODING_PCM_16BIT)
|
||||||
|
.build();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void start() {
|
||||||
|
onDurationUs(durationUs);
|
||||||
|
onTrackCount(1);
|
||||||
|
onTrackAdded(trackFormat, SUPPORTED_OUTPUT_TYPE_DECODED);
|
||||||
|
outputFormatToSequenceAssetLoader();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @Transformer.ProgressState int getProgress(ProgressHolder progressHolder) {
|
||||||
|
progressHolder.progress = outputtedFormat ? 99 : 0;
|
||||||
|
return PROGRESS_STATE_AVAILABLE;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ImmutableMap<Integer, String> getDecoderNames() {
|
||||||
|
return ImmutableMap.of();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void release() {}
|
||||||
|
|
||||||
|
/** Outputs the gap format, scheduling to try again if unsuccessful. */
|
||||||
|
private void outputFormatToSequenceAssetLoader() {
|
||||||
|
try {
|
||||||
|
if (outputtedFormat) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Nullable SampleConsumerWrapper sampleConsumerWrapper = onOutputFormat(decodedFormat);
|
||||||
|
if (sampleConsumerWrapper != null) {
|
||||||
|
outputtedFormat = true;
|
||||||
|
sampleConsumerWrapper.onGapSignalled();
|
||||||
|
} else {
|
||||||
|
handler.postDelayed(
|
||||||
|
this::outputFormatToSequenceAssetLoader, OUTPUT_FORMAT_RETRY_DELAY_MS);
|
||||||
|
}
|
||||||
|
|
||||||
|
} catch (ExportException e) {
|
||||||
|
onError(e);
|
||||||
|
} catch (RuntimeException e) {
|
||||||
|
onError(ExportException.createForAssetLoader(e, ExportException.ERROR_CODE_UNSPECIFIED));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Intercepts {@link AssetLoader.Factory} calls, when {@linkplain
|
||||||
|
* EditedMediaItemSequence.Builder#addGap(long) a gap} is detected, otherwise forwards them to the
|
||||||
|
* provided {@link AssetLoader.Factory}.
|
||||||
|
*
|
||||||
|
* <p>In the case that a gap is detected, a {@link GapSignalingAssetLoader} is returned.
|
||||||
|
*/
|
||||||
|
private final class GapInterceptingAssetLoaderFactory implements AssetLoader.Factory {
|
||||||
|
|
||||||
|
private final AssetLoader.Factory factory;
|
||||||
|
|
||||||
|
public GapInterceptingAssetLoaderFactory(AssetLoader.Factory factory) {
|
||||||
|
this.factory = factory;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public AssetLoader createAssetLoader(
|
||||||
|
EditedMediaItem editedMediaItem,
|
||||||
|
Looper looper,
|
||||||
|
Listener listener,
|
||||||
|
CompositionSettings compositionSettings) {
|
||||||
|
if (editedMediaItem.isGap()) {
|
||||||
|
return new GapSignalingAssetLoader(editedMediaItem.durationUs);
|
||||||
|
}
|
||||||
|
return factory.createAssetLoader(editedMediaItem, looper, listener, compositionSettings);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -83,6 +83,9 @@ public final class TransformerUtil {
|
|||||||
|| composition.sequences.get(sequenceIndex).editedMediaItems.size() > 1) {
|
|| composition.sequences.get(sequenceIndex).editedMediaItems.size() > 1) {
|
||||||
return !composition.transmuxAudio;
|
return !composition.transmuxAudio;
|
||||||
}
|
}
|
||||||
|
if (composition.hasGaps()) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
if (encoderFactory.audioNeedsEncoding()) {
|
if (encoderFactory.audioNeedsEncoding()) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -447,6 +447,278 @@ public class CompositionExportTest {
|
|||||||
getCompositionDumpFilePath("seq-sample.wav+seq-sample.wav_clipped_100ms_to_400ms"));
|
getCompositionDumpFilePath("seq-sample.wav+seq-sample.wav_clipped_100ms_to_400ms"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void start_audioCompositionWithFirstSequenceAsGap_isCorrect() throws Exception {
|
||||||
|
CapturingMuxer.Factory muxerFactory = new CapturingMuxer.Factory(/* handleAudioAsPcm= */ true);
|
||||||
|
Transformer transformer =
|
||||||
|
createTransformerBuilder(muxerFactory, /* enableFallback= */ false).build();
|
||||||
|
EditedMediaItem audioItem1000ms =
|
||||||
|
new EditedMediaItem.Builder(MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_RAW)).build();
|
||||||
|
Composition composition =
|
||||||
|
new Composition.Builder(
|
||||||
|
new EditedMediaItemSequence.Builder().addGap(1_000_000).build(),
|
||||||
|
new EditedMediaItemSequence.Builder(audioItem1000ms).build())
|
||||||
|
.build();
|
||||||
|
|
||||||
|
transformer.start(composition, outputDir.newFile().getPath());
|
||||||
|
TransformerTestRunner.runLooper(transformer);
|
||||||
|
|
||||||
|
// Gaps are 44.1kHz, stereo by default. Sample.wav is 44.1kHz mono, so this test needs its own
|
||||||
|
// dump file.
|
||||||
|
DumpFileAsserts.assertOutput(
|
||||||
|
context,
|
||||||
|
muxerFactory.getCreatedMuxer(),
|
||||||
|
getCompositionDumpFilePath("seq-" + "gap_1000ms" + "+seq-" + getFileName(FILE_AUDIO_RAW)));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void start_audioCompositionWithFirstSequenceOffsetGap_isCorrect() throws Exception {
|
||||||
|
CapturingMuxer.Factory muxerFactory = new CapturingMuxer.Factory(/* handleAudioAsPcm= */ true);
|
||||||
|
Transformer transformer =
|
||||||
|
createTransformerBuilder(muxerFactory, /* enableFallback= */ false).build();
|
||||||
|
EditedMediaItem audioEditedMediaItem =
|
||||||
|
new EditedMediaItem.Builder(
|
||||||
|
MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_RAW_STEREO_48000KHZ))
|
||||||
|
.build();
|
||||||
|
EditedMediaItem otherAudioEditedMediaItem =
|
||||||
|
new EditedMediaItem.Builder(MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_RAW)).build();
|
||||||
|
Composition composition =
|
||||||
|
new Composition.Builder(
|
||||||
|
new EditedMediaItemSequence.Builder()
|
||||||
|
.addGap(100_000)
|
||||||
|
.addItem(audioEditedMediaItem)
|
||||||
|
.build(),
|
||||||
|
new EditedMediaItemSequence.Builder(otherAudioEditedMediaItem).build())
|
||||||
|
.build();
|
||||||
|
|
||||||
|
transformer.start(composition, outputDir.newFile().getPath());
|
||||||
|
ExportResult exportResult = TransformerTestRunner.runLooper(transformer);
|
||||||
|
|
||||||
|
assertThat(exportResult.processedInputs).hasSize(3);
|
||||||
|
DumpFileAsserts.assertOutput(
|
||||||
|
context,
|
||||||
|
muxerFactory.getCreatedMuxer(),
|
||||||
|
getCompositionDumpFilePath(
|
||||||
|
"seq-"
|
||||||
|
+ "gap_100ms-"
|
||||||
|
+ getFileName(FILE_AUDIO_RAW_STEREO_48000KHZ)
|
||||||
|
+ "+seq-"
|
||||||
|
+ getFileName(FILE_AUDIO_RAW)));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void start_audioCompositionWithFirstSequencePaddingGap_isCorrect() throws Exception {
|
||||||
|
CapturingMuxer.Factory muxerFactory = new CapturingMuxer.Factory(/* handleAudioAsPcm= */ true);
|
||||||
|
Transformer transformer =
|
||||||
|
createTransformerBuilder(muxerFactory, /* enableFallback= */ false).build();
|
||||||
|
EditedMediaItem audioItem300ms =
|
||||||
|
new EditedMediaItem.Builder(
|
||||||
|
MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_RAW)
|
||||||
|
.buildUpon()
|
||||||
|
.setClippingConfiguration(
|
||||||
|
new MediaItem.ClippingConfiguration.Builder()
|
||||||
|
.setStartPositionMs(100)
|
||||||
|
.setEndPositionMs(400)
|
||||||
|
.build())
|
||||||
|
.build())
|
||||||
|
.build();
|
||||||
|
EditedMediaItem audioItem1000ms =
|
||||||
|
new EditedMediaItem.Builder(MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_RAW)).build();
|
||||||
|
Composition composition =
|
||||||
|
new Composition.Builder(
|
||||||
|
new EditedMediaItemSequence.Builder()
|
||||||
|
.addItem(audioItem300ms)
|
||||||
|
.addGap(700_000)
|
||||||
|
.build(),
|
||||||
|
new EditedMediaItemSequence.Builder(audioItem1000ms).build())
|
||||||
|
.build();
|
||||||
|
|
||||||
|
transformer.start(composition, outputDir.newFile().getPath());
|
||||||
|
TransformerTestRunner.runLooper(transformer);
|
||||||
|
|
||||||
|
DumpFileAsserts.assertOutput(
|
||||||
|
context,
|
||||||
|
muxerFactory.getCreatedMuxer(),
|
||||||
|
getCompositionDumpFilePath(
|
||||||
|
"seq-"
|
||||||
|
+ getFileName(FILE_AUDIO_RAW)
|
||||||
|
+ "+seq-"
|
||||||
|
+ getFileName(FILE_AUDIO_RAW)
|
||||||
|
+ "_clipped100msTo400ms-gap_700ms"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void start_audioVideoCompositionWithSecondSequenceOffsetGap_isCorrect() throws Exception {
|
||||||
|
CapturingMuxer.Factory muxerFactory = new CapturingMuxer.Factory(/* handleAudioAsPcm= */ true);
|
||||||
|
Transformer transformer =
|
||||||
|
createTransformerBuilder(muxerFactory, /* enableFallback= */ false).build();
|
||||||
|
EditedMediaItem audioVideoEditedMediaItem =
|
||||||
|
new EditedMediaItem.Builder(MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_RAW_VIDEO))
|
||||||
|
.build();
|
||||||
|
EditedMediaItem audioEditedMediaItem =
|
||||||
|
new EditedMediaItem.Builder(
|
||||||
|
MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_RAW_STEREO_48000KHZ))
|
||||||
|
.setRemoveVideo(true)
|
||||||
|
.build();
|
||||||
|
Composition composition =
|
||||||
|
new Composition.Builder(
|
||||||
|
new EditedMediaItemSequence.Builder(audioVideoEditedMediaItem).build(),
|
||||||
|
new EditedMediaItemSequence.Builder()
|
||||||
|
.addGap(200_000)
|
||||||
|
.addItem(audioEditedMediaItem)
|
||||||
|
.build())
|
||||||
|
.setTransmuxVideo(true)
|
||||||
|
.build();
|
||||||
|
|
||||||
|
transformer.start(composition, outputDir.newFile().getPath());
|
||||||
|
ExportResult exportResult = TransformerTestRunner.runLooper(transformer);
|
||||||
|
|
||||||
|
assertThat(exportResult.processedInputs).hasSize(3);
|
||||||
|
DumpFileAsserts.assertOutput(
|
||||||
|
context,
|
||||||
|
muxerFactory.getCreatedMuxer(),
|
||||||
|
getCompositionDumpFilePath(
|
||||||
|
"seq-"
|
||||||
|
+ getFileName(FILE_AUDIO_RAW_VIDEO)
|
||||||
|
+ "+seq-gap_200ms-"
|
||||||
|
+ getFileName(FILE_AUDIO_RAW_STEREO_48000KHZ)));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void start_audioVideoCompositionWithSecondSequenceIntervalGap_isCorrect()
|
||||||
|
throws Exception {
|
||||||
|
CapturingMuxer.Factory muxerFactory = new CapturingMuxer.Factory(/* handleAudioAsPcm= */ true);
|
||||||
|
Transformer transformer =
|
||||||
|
createTransformerBuilder(muxerFactory, /* enableFallback= */ false).build();
|
||||||
|
EditedMediaItem audioVideoEditedMediaItem =
|
||||||
|
new EditedMediaItem.Builder(MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_RAW_VIDEO))
|
||||||
|
.build();
|
||||||
|
EditedMediaItem audio300msEditedMediaItem =
|
||||||
|
new EditedMediaItem.Builder(
|
||||||
|
new MediaItem.Builder()
|
||||||
|
.setUri(ASSET_URI_PREFIX + FILE_AUDIO_RAW_STEREO_48000KHZ)
|
||||||
|
.setClippingConfiguration(
|
||||||
|
new MediaItem.ClippingConfiguration.Builder().setEndPositionMs(300).build())
|
||||||
|
.build())
|
||||||
|
.setRemoveVideo(true)
|
||||||
|
.build();
|
||||||
|
EditedMediaItem audio500msEditedMediaItem =
|
||||||
|
new EditedMediaItem.Builder(
|
||||||
|
new MediaItem.Builder()
|
||||||
|
.setUri(ASSET_URI_PREFIX + FILE_AUDIO_RAW_STEREO_48000KHZ)
|
||||||
|
.setClippingConfiguration(
|
||||||
|
new MediaItem.ClippingConfiguration.Builder()
|
||||||
|
.setStartPositionMs(300)
|
||||||
|
.setEndPositionMs(800)
|
||||||
|
.build())
|
||||||
|
.build())
|
||||||
|
.setRemoveVideo(true)
|
||||||
|
.build();
|
||||||
|
Composition composition =
|
||||||
|
new Composition.Builder(
|
||||||
|
new EditedMediaItemSequence.Builder(audioVideoEditedMediaItem).build(),
|
||||||
|
new EditedMediaItemSequence.Builder()
|
||||||
|
.addItem(audio300msEditedMediaItem)
|
||||||
|
.addGap(200_000)
|
||||||
|
.addItem(audio500msEditedMediaItem)
|
||||||
|
.build())
|
||||||
|
.setTransmuxVideo(true)
|
||||||
|
.build();
|
||||||
|
|
||||||
|
transformer.start(composition, outputDir.newFile().getPath());
|
||||||
|
ExportResult exportResult = TransformerTestRunner.runLooper(transformer);
|
||||||
|
|
||||||
|
assertThat(exportResult.processedInputs).hasSize(4);
|
||||||
|
DumpFileAsserts.assertOutput(
|
||||||
|
context,
|
||||||
|
muxerFactory.getCreatedMuxer(),
|
||||||
|
getCompositionDumpFilePath(
|
||||||
|
"seq-"
|
||||||
|
+ getFileName(FILE_AUDIO_RAW_VIDEO)
|
||||||
|
+ "+seq-"
|
||||||
|
+ getFileName(FILE_AUDIO_RAW_STEREO_48000KHZ)
|
||||||
|
+ "_clipped0msTo300ms-"
|
||||||
|
+ "gap_200ms-"
|
||||||
|
+ getFileName(FILE_AUDIO_RAW_STEREO_48000KHZ)
|
||||||
|
+ "_clipped300msTo800ms"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void start_audioVideoCompositionWithSecondSequencePaddingGap_isCorrect() throws Exception {
|
||||||
|
CapturingMuxer.Factory muxerFactory = new CapturingMuxer.Factory(/* handleAudioAsPcm= */ true);
|
||||||
|
Transformer transformer =
|
||||||
|
createTransformerBuilder(muxerFactory, /* enableFallback= */ false).build();
|
||||||
|
EditedMediaItem audioVideoEditedMediaItem =
|
||||||
|
new EditedMediaItem.Builder(MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_RAW_VIDEO))
|
||||||
|
.build();
|
||||||
|
EditedMediaItem audioEditedMediaItem =
|
||||||
|
new EditedMediaItem.Builder(
|
||||||
|
MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_RAW_STEREO_48000KHZ))
|
||||||
|
.setRemoveVideo(true)
|
||||||
|
.build();
|
||||||
|
Composition composition =
|
||||||
|
new Composition.Builder(
|
||||||
|
new EditedMediaItemSequence.Builder(audioVideoEditedMediaItem).build(),
|
||||||
|
new EditedMediaItemSequence.Builder()
|
||||||
|
.addItem(audioEditedMediaItem)
|
||||||
|
.addGap(100_000)
|
||||||
|
.build())
|
||||||
|
.setTransmuxVideo(true)
|
||||||
|
.build();
|
||||||
|
|
||||||
|
transformer.start(composition, outputDir.newFile().getPath());
|
||||||
|
ExportResult exportResult = TransformerTestRunner.runLooper(transformer);
|
||||||
|
|
||||||
|
assertThat(exportResult.processedInputs).hasSize(3);
|
||||||
|
DumpFileAsserts.assertOutput(
|
||||||
|
context,
|
||||||
|
muxerFactory.getCreatedMuxer(),
|
||||||
|
getCompositionDumpFilePath(
|
||||||
|
"seq-"
|
||||||
|
+ getFileName(FILE_AUDIO_RAW_VIDEO)
|
||||||
|
+ "+seq-"
|
||||||
|
+ getFileName(FILE_AUDIO_RAW_STEREO_48000KHZ)
|
||||||
|
+ "-gap_100ms"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void start_audioCompositionWithSecondSequenceAsGap_isCorrect() throws Exception {
|
||||||
|
CapturingMuxer.Factory muxerFactory = new CapturingMuxer.Factory(/* handleAudioAsPcm= */ true);
|
||||||
|
Transformer transformer =
|
||||||
|
createTransformerBuilder(muxerFactory, /* enableFallback= */ false).build();
|
||||||
|
EditedMediaItem audioItem1000ms =
|
||||||
|
new EditedMediaItem.Builder(MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_RAW)).build();
|
||||||
|
Composition composition =
|
||||||
|
new Composition.Builder(
|
||||||
|
new EditedMediaItemSequence.Builder(audioItem1000ms).build(),
|
||||||
|
new EditedMediaItemSequence.Builder().addGap(1_000_000).build())
|
||||||
|
.build();
|
||||||
|
|
||||||
|
transformer.start(composition, outputDir.newFile().getPath());
|
||||||
|
TransformerTestRunner.runLooper(transformer);
|
||||||
|
|
||||||
|
DumpFileAsserts.assertOutput(
|
||||||
|
context, muxerFactory.getCreatedMuxer(), getDumpFileName(FILE_AUDIO_RAW));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void start_audioCompositionWithBothSequencesAsGaps_isCorrect() throws Exception {
|
||||||
|
CapturingMuxer.Factory muxerFactory = new CapturingMuxer.Factory(/* handleAudioAsPcm= */ true);
|
||||||
|
Transformer transformer =
|
||||||
|
createTransformerBuilder(muxerFactory, /* enableFallback= */ false).build();
|
||||||
|
Composition composition =
|
||||||
|
new Composition.Builder(
|
||||||
|
new EditedMediaItemSequence.Builder().addGap(500_000).build(),
|
||||||
|
new EditedMediaItemSequence.Builder().addGap(500_000).build())
|
||||||
|
.build();
|
||||||
|
|
||||||
|
transformer.start(composition, outputDir.newFile().getPath());
|
||||||
|
TransformerTestRunner.runLooper(transformer);
|
||||||
|
|
||||||
|
DumpFileAsserts.assertOutput(
|
||||||
|
context, muxerFactory.getCreatedMuxer(), getDumpFileName("gap", "500ms"));
|
||||||
|
}
|
||||||
|
|
||||||
private static String getFileName(String filePath) {
|
private static String getFileName(String filePath) {
|
||||||
int lastSeparator = filePath.lastIndexOf("/");
|
int lastSeparator = filePath.lastIndexOf("/");
|
||||||
return filePath.substring(lastSeparator + 1);
|
return filePath.substring(lastSeparator + 1);
|
||||||
|
@ -141,6 +141,26 @@ public final class MediaItemExportTest {
|
|||||||
removeEncodersAndDecoders();
|
removeEncodersAndDecoders();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void start_gapOnlyExport_outputsSilence() throws Exception {
|
||||||
|
CapturingMuxer.Factory muxerFactory = new CapturingMuxer.Factory(/* handleAudioAsPcm= */ true);
|
||||||
|
Transformer transformer =
|
||||||
|
createTransformerBuilder(muxerFactory, /* enableFallback= */ false).build();
|
||||||
|
|
||||||
|
EditedMediaItemSequence gapSequence =
|
||||||
|
new EditedMediaItemSequence.Builder().addGap(500_000).build();
|
||||||
|
|
||||||
|
transformer.start(new Composition.Builder(gapSequence).build(), outputDir.newFile().getPath());
|
||||||
|
ExportResult result = TransformerTestRunner.runLooper(transformer);
|
||||||
|
|
||||||
|
// TODO(b/355201372) - Assert 500ms duration.
|
||||||
|
assertThat(result.durationMs).isAtLeast(487);
|
||||||
|
assertThat(result.durationMs).isAtMost(500);
|
||||||
|
|
||||||
|
DumpFileAsserts.assertOutput(
|
||||||
|
context, muxerFactory.getCreatedMuxer(), getDumpFileName("gap", "500ms"));
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void start_audioAndVideoPassthrough_withClippingStartAtKeyFrame_completesSuccessfully()
|
public void start_audioAndVideoPassthrough_withClippingStartAtKeyFrame_completesSuccessfully()
|
||||||
throws Exception {
|
throws Exception {
|
||||||
|
@ -29,6 +29,7 @@ import static androidx.media3.transformer.TestUtil.createChannelCountChangingAud
|
|||||||
import static androidx.media3.transformer.TestUtil.createPitchChangingAudioProcessor;
|
import static androidx.media3.transformer.TestUtil.createPitchChangingAudioProcessor;
|
||||||
import static androidx.media3.transformer.TestUtil.createTransformerBuilder;
|
import static androidx.media3.transformer.TestUtil.createTransformerBuilder;
|
||||||
import static androidx.media3.transformer.TestUtil.getDumpFileName;
|
import static androidx.media3.transformer.TestUtil.getDumpFileName;
|
||||||
|
import static androidx.media3.transformer.TestUtil.getSequenceDumpFilePath;
|
||||||
import static androidx.media3.transformer.TestUtil.removeEncodersAndDecoders;
|
import static androidx.media3.transformer.TestUtil.removeEncodersAndDecoders;
|
||||||
import static com.google.common.truth.Truth.assertThat;
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
|
|
||||||
@ -498,6 +499,171 @@ public final class SequenceExportTest {
|
|||||||
"silenceHighPitch"));
|
"silenceHighPitch"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void start_gapGap_completesSuccessfully() throws Exception {
|
||||||
|
CapturingMuxer.Factory muxerFactory = new CapturingMuxer.Factory(/* handleAudioAsPcm= */ true);
|
||||||
|
Transformer transformer =
|
||||||
|
createTransformerBuilder(muxerFactory, /* enableFallback= */ false).build();
|
||||||
|
EditedMediaItemSequence sequence =
|
||||||
|
new EditedMediaItemSequence.Builder().addGap(300_000).addGap(200_000).build();
|
||||||
|
Composition composition = new Composition.Builder(sequence).build();
|
||||||
|
|
||||||
|
transformer.start(composition, outputDir.newFile().getPath());
|
||||||
|
TransformerTestRunner.runLooper(transformer);
|
||||||
|
|
||||||
|
DumpFileAsserts.assertOutput(
|
||||||
|
context, muxerFactory.getCreatedMuxer(), getDumpFileName("gap", "500ms"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void start_itemGapGap_completesSuccessfully() throws Exception {
|
||||||
|
CapturingMuxer.Factory muxerFactory = new CapturingMuxer.Factory(/* handleAudioAsPcm= */ true);
|
||||||
|
Transformer transformer =
|
||||||
|
createTransformerBuilder(muxerFactory, /* enableFallback= */ false).build();
|
||||||
|
EditedMediaItem firstAudioItem =
|
||||||
|
new EditedMediaItem.Builder(MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_RAW)).build();
|
||||||
|
EditedMediaItemSequence sequence =
|
||||||
|
new EditedMediaItemSequence.Builder()
|
||||||
|
.addItem(firstAudioItem)
|
||||||
|
.addGap(500_000)
|
||||||
|
.addGap(200_000)
|
||||||
|
.build();
|
||||||
|
Composition composition = new Composition.Builder(sequence).build();
|
||||||
|
|
||||||
|
transformer.start(composition, outputDir.newFile().getPath());
|
||||||
|
TransformerTestRunner.runLooper(transformer);
|
||||||
|
|
||||||
|
DumpFileAsserts.assertOutput(
|
||||||
|
context,
|
||||||
|
muxerFactory.getCreatedMuxer(),
|
||||||
|
getSequenceDumpFilePath(
|
||||||
|
ImmutableList.of(FILE_AUDIO_RAW.replace("wav/", ""), "gap_500ms", "gap_200ms")));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void start_gapGapItem_completesSuccessfully() throws Exception {
|
||||||
|
CapturingMuxer.Factory muxerFactory = new CapturingMuxer.Factory(/* handleAudioAsPcm= */ true);
|
||||||
|
Transformer transformer =
|
||||||
|
createTransformerBuilder(muxerFactory, /* enableFallback= */ false).build();
|
||||||
|
EditedMediaItem audioItem =
|
||||||
|
new EditedMediaItem.Builder(MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_RAW)).build();
|
||||||
|
EditedMediaItemSequence sequence =
|
||||||
|
new EditedMediaItemSequence.Builder()
|
||||||
|
.addGap(200_000)
|
||||||
|
.addGap(500_000)
|
||||||
|
.addItem(audioItem)
|
||||||
|
.build();
|
||||||
|
Composition composition = new Composition.Builder(sequence).build();
|
||||||
|
|
||||||
|
transformer.start(composition, outputDir.newFile().getPath());
|
||||||
|
TransformerTestRunner.runLooper(transformer);
|
||||||
|
|
||||||
|
DumpFileAsserts.assertOutput(
|
||||||
|
context,
|
||||||
|
muxerFactory.getCreatedMuxer(),
|
||||||
|
getSequenceDumpFilePath(
|
||||||
|
ImmutableList.of("gap_200ms", "gap_500ms", FILE_AUDIO_RAW.replace("wav/", ""))));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void start_itemGapGapItem_completesSuccessfully() throws Exception {
|
||||||
|
CapturingMuxer.Factory muxerFactory = new CapturingMuxer.Factory(/* handleAudioAsPcm= */ true);
|
||||||
|
Transformer transformer =
|
||||||
|
createTransformerBuilder(muxerFactory, /* enableFallback= */ false).build();
|
||||||
|
EditedMediaItem firstAudioItem =
|
||||||
|
new EditedMediaItem.Builder(MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_RAW)).build();
|
||||||
|
EditedMediaItem secondAudioItem =
|
||||||
|
new EditedMediaItem.Builder(MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_RAW)).build();
|
||||||
|
|
||||||
|
EditedMediaItemSequence sequence =
|
||||||
|
new EditedMediaItemSequence.Builder()
|
||||||
|
.addItem(firstAudioItem)
|
||||||
|
.addGap(500_000)
|
||||||
|
.addGap(200_000)
|
||||||
|
.addItem(secondAudioItem)
|
||||||
|
.build();
|
||||||
|
Composition composition = new Composition.Builder(sequence).build();
|
||||||
|
|
||||||
|
transformer.start(composition, outputDir.newFile().getPath());
|
||||||
|
TransformerTestRunner.runLooper(transformer);
|
||||||
|
|
||||||
|
DumpFileAsserts.assertOutput(
|
||||||
|
context,
|
||||||
|
muxerFactory.getCreatedMuxer(),
|
||||||
|
getSequenceDumpFilePath(
|
||||||
|
ImmutableList.of(
|
||||||
|
FILE_AUDIO_RAW.replace("wav/", ""),
|
||||||
|
"gap_500ms",
|
||||||
|
"gap_200ms",
|
||||||
|
FILE_AUDIO_RAW.replace("wav/", ""))));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void start_itemGapItemGap_completesSuccessfully() throws Exception {
|
||||||
|
CapturingMuxer.Factory muxerFactory = new CapturingMuxer.Factory(/* handleAudioAsPcm= */ true);
|
||||||
|
Transformer transformer =
|
||||||
|
createTransformerBuilder(muxerFactory, /* enableFallback= */ false).build();
|
||||||
|
EditedMediaItem firstAudioItem =
|
||||||
|
new EditedMediaItem.Builder(MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_RAW)).build();
|
||||||
|
EditedMediaItem secondAudioItem =
|
||||||
|
new EditedMediaItem.Builder(MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_RAW)).build();
|
||||||
|
|
||||||
|
EditedMediaItemSequence sequence =
|
||||||
|
new EditedMediaItemSequence.Builder()
|
||||||
|
.addItem(firstAudioItem)
|
||||||
|
.addGap(200_000)
|
||||||
|
.addItem(secondAudioItem)
|
||||||
|
.addGap(500_000)
|
||||||
|
.build();
|
||||||
|
Composition composition = new Composition.Builder(sequence).build();
|
||||||
|
|
||||||
|
transformer.start(composition, outputDir.newFile().getPath());
|
||||||
|
TransformerTestRunner.runLooper(transformer);
|
||||||
|
|
||||||
|
DumpFileAsserts.assertOutput(
|
||||||
|
context,
|
||||||
|
muxerFactory.getCreatedMuxer(),
|
||||||
|
getSequenceDumpFilePath(
|
||||||
|
ImmutableList.of(
|
||||||
|
FILE_AUDIO_RAW.replace("wav/", ""),
|
||||||
|
"gap_200ms",
|
||||||
|
FILE_AUDIO_RAW.replace("wav/", ""),
|
||||||
|
"gap_500ms")));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void start_gapItemGapItem_completesSuccessfully() throws Exception {
|
||||||
|
CapturingMuxer.Factory muxerFactory = new CapturingMuxer.Factory(/* handleAudioAsPcm= */ true);
|
||||||
|
Transformer transformer =
|
||||||
|
createTransformerBuilder(muxerFactory, /* enableFallback= */ false).build();
|
||||||
|
EditedMediaItem firstAudioItem =
|
||||||
|
new EditedMediaItem.Builder(MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_RAW)).build();
|
||||||
|
EditedMediaItem secondAudioItem =
|
||||||
|
new EditedMediaItem.Builder(MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_RAW)).build();
|
||||||
|
|
||||||
|
EditedMediaItemSequence sequence =
|
||||||
|
new EditedMediaItemSequence.Builder()
|
||||||
|
.addGap(500_000)
|
||||||
|
.addItem(firstAudioItem)
|
||||||
|
.addGap(200_000)
|
||||||
|
.addItem(secondAudioItem)
|
||||||
|
.build();
|
||||||
|
Composition composition = new Composition.Builder(sequence).build();
|
||||||
|
|
||||||
|
transformer.start(composition, outputDir.newFile().getPath());
|
||||||
|
TransformerTestRunner.runLooper(transformer);
|
||||||
|
|
||||||
|
DumpFileAsserts.assertOutput(
|
||||||
|
context,
|
||||||
|
muxerFactory.getCreatedMuxer(),
|
||||||
|
getSequenceDumpFilePath(
|
||||||
|
ImmutableList.of(
|
||||||
|
"gap_500ms",
|
||||||
|
FILE_AUDIO_RAW.replace("wav/", ""),
|
||||||
|
"gap_200ms",
|
||||||
|
FILE_AUDIO_RAW.replace("wav/", ""))));
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void concatenateTwoAudioItems_withSameFormat_completesSuccessfully() throws Exception {
|
public void concatenateTwoAudioItems_withSameFormat_completesSuccessfully() throws Exception {
|
||||||
CapturingMuxer.Factory muxerFactory = new CapturingMuxer.Factory(/* handleAudioAsPcm= */ true);
|
CapturingMuxer.Factory muxerFactory = new CapturingMuxer.Factory(/* handleAudioAsPcm= */ true);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user