tree: d80075cd7065bcad67ab5fb71f1a1c83ff099644 [path history] [tgz]
  1. eme_player_js/
  2. 440hz-10ms.m4a
  3. 48_aac_infinite_loop.m4a
  4. 4ch.wav
  5. 90rotation.mp4
  6. 9ch.ogg
  7. 9ch.wav
  8. aac-44100-packet-0
  9. aac-44100-packet-1
  10. aac-44100-packet-2
  11. aac-44100-packet-3
  12. audio-start-time-only.webm
  13. av1-I-frame-1280x720
  14. av1-I-frame-320x240
  15. av1-monochrome-I-frame-320x240-10bpp
  16. av1-monochrome-I-frame-320x240-12bpp
  17. av1-monochrome-I-frame-320x240-8bpp
  18. av1-show_existing_frame.ivf
  19. av1-svc-L2T2.ivf
  20. bali_640x360_P420.yuv
  21. bbb-320x240-2video-2audio.mp4
  22. bear-1280x720-a_frag-cenc-key_rotation.mp4
  23. bear-1280x720-a_frag-cenc.mp4
  24. bear-1280x720-a_frag-cenc_clear-all.mp4
  25. bear-1280x720-a_frag-cenc_missing-saiz-saio.mp4
  26. bear-1280x720-aac_he.ts
  27. bear-1280x720-av_frag-initsegment-mvhd_version_0-mvhd_duration_bits_all_set.mp4
  28. bear-1280x720-av_frag.mp4
  29. bear-1280x720-av_with-aud-nalus_frag.mp4
  30. bear-1280x720-avt_subt_frag.mp4
  31. bear-1280x720-hls-sample-aes.ts
  32. bear-1280x720-hls-with-CAT.bin
  33. bear-1280x720-hls.ts
  34. bear-1280x720-v_frag-avc3.mp4
  35. bear-1280x720-v_frag-cenc-key_rotation.mp4
  36. bear-1280x720-v_frag-cenc.mp4
  37. bear-1280x720-v_frag-cenc_clear-all.mp4
  38. bear-1280x720-zero-stsz-entry.mp4
  39. bear-1280x720.mp4
  40. bear-1280x720.ts
  41. bear-1280x720.webm
  42. bear-1280x720_ptswraparound.ts
  43. bear-320x180-hi10p-vp9.webm
  44. bear-320x180-hi10p.mp4
  45. bear-320x180-hi12p-vp9.webm
  46. bear-320x192-baseline-frame-0.h264
  47. bear-320x192-baseline-frame-1.h264
  48. bear-320x192-baseline-frame-2.h264
  49. bear-320x192-baseline-frame-3.h264
  50. bear-320x192-high-frame-0.h264
  51. bear-320x192-high-frame-1.h264
  52. bear-320x192-high-frame-2.h264
  53. bear-320x192-high-frame-3.h264
  54. bear-320x240-16x9-aspect-av_enc-av.webm
  55. bear-320x240-16x9-aspect.webm
  56. bear-320x240-altref.webm
  57. bear-320x240-audio-only-48khz.webm
  58. bear-320x240-audio-only.webm
  59. bear-320x240-av_enc-a.webm
  60. bear-320x240-av_enc-av.webm
  61. bear-320x240-av_enc-av_clear-1s.webm
  62. bear-320x240-av_enc-av_clear-all.webm
  63. bear-320x240-av_enc-v.webm
  64. bear-320x240-cues-in-front.webm
  65. bear-320x240-live.webm
  66. bear-320x240-manifest.js
  67. bear-320x240-multitrack.webm
  68. bear-320x240-opus-a_enc-a.webm
  69. bear-320x240-opus-av_enc-av.webm
  70. bear-320x240-opus-av_enc-v.webm
  71. bear-320x240-P444.webm
  72. bear-320x240-v-2frames-keyframe-is-non-sync-sample_frag-hevc.mp4
  73. bear-320x240-v-2frames-nonkeyframe-is-sync-sample_frag-hevc.mp4
  74. bear-320x240-v-2frames_frag-hevc.mp4
  75. bear-320x240-v-vp9_fullsample_enc-v.webm
  76. bear-320x240-v-vp9_profile2_subsample_cenc-v.mp4
  77. bear-320x240-v-vp9_profile2_subsample_cenc-v.webm
  78. bear-320x240-v-vp9_subsample_enc-v.webm
  79. bear-320x240-v_enc-v.webm
  80. bear-320x240-v_frag-hevc.mp4
  81. bear-320x240-v_frag-vp9-cenc.mp4
  82. bear-320x240-v_frag-vp9.mp4
  83. bear-320x240-video-only.webm
  84. bear-320x240-vp9_profile2.webm
  85. bear-320x240.webm
  86. bear-320x240_corrupted_after_init_segment.webm
  87. bear-640x360-a_frag-cbcs.mp4
  88. bear-640x360-a_frag-cenc-key_rotation.mp4
  89. bear-640x360-a_frag-cenc.mp4
  90. bear-640x360-a_frag.mp4
  91. bear-640x360-av_enc-av.webm
  92. bear-640x360-av_frag.mp4
  93. bear-640x360-manifest.js
  94. bear-640x360-non_square_pixel-with_pasp.mp4
  95. bear-640x360-non_square_pixel-without_pasp.mp4
  96. bear-640x360-v-2frames-keyframe-is-non-sync-sample_frag.mp4
  97. bear-640x360-v-2frames-nonkeyframe-is-sync-sample_frag.mp4
  98. bear-640x360-v-2frames_frag.mp4
  99. bear-640x360-v_frag-cbc1.mp4
  100. bear-640x360-v_frag-cbcs.mp4
  101. bear-640x360-v_frag-cenc-key_rotation.mp4
  102. bear-640x360-v_frag-cenc-mdat.mp4
  103. bear-640x360-v_frag-cenc-senc-no-saiz-saio.mp4
  104. bear-640x360-v_frag-cenc-senc.mp4
  105. bear-640x360-v_frag-cenc.mp4
  106. bear-640x360-v_frag-cens.mp4
  107. bear-640x360-v_frag.mp4
  108. bear-640x360.webm
  109. bear-a_enc-a.webm
  110. bear-ac3-only-frag.mp4
  111. bear-audio-10s-CBR-has-TOC.mp3
  112. bear-audio-10s-CBR-no-TOC.mp3
  113. bear-audio-10s-VBR-has-TOC.mp3
  114. bear-audio-10s-VBR-no-TOC.mp3
  115. bear-audio-implicit-he-aac-v1.aac
  116. bear-audio-implicit-he-aac-v2.aac
  117. bear-audio-lc-aac.aac
  118. bear-audio-main-aac.aac
  119. bear-audio-mp4a.69.ts
  120. bear-audio-mp4a.6B.ts
  121. bear-av1-320x180-10bit-cenc.mp4
  122. bear-av1-320x180-10bit-cenc.webm
  123. bear-av1-320x180-10bit.mp4
  124. bear-av1-320x180-10bit.webm
  125. bear-av1-480x360.webm
  126. bear-av1-640x480.webm
  127. bear-av1-cenc.mp4
  128. bear-av1-cenc.webm
  129. bear-av1-opus.mp4
  130. bear-av1.mp4
  131. bear-av1.webm
  132. bear-eac3-only-frag.mp4
  133. bear-flac-192kHz.mp4
  134. bear-flac-192kHz_frag.mp4
  135. bear-flac-cenc.mp4
  136. bear-flac.mp4
  137. bear-flac.ogg
  138. bear-flac_frag.mp4
  139. bear-hevc-frag.mp4
  140. bear-mono-av1.mp4
  141. bear-mpeg2-aac-only_frag.mp4
  142. bear-opus-11ch-channelmapping2.ogg
  143. bear-opus-4ch-channelmapping2.ogg
  144. bear-opus-cenc.mp4
  145. bear-opus-end-trimming-11ch-channelmapping2.webm
  146. bear-opus-end-trimming-4ch-channelmapping2.webm
  147. bear-opus.mp4
  148. bear-opus.ogg
  149. bear-opus.webm
  150. bear-vp8-webvtt.webm
  151. bear-vp8a-odd-dimensions.webm
  152. bear-vp8a.webm
  153. bear-vp9-blockgroup.webm
  154. bear-vp9-bt709.webm
  155. bear-vp9-i422.webm
  156. bear-vp9-odd-dimensions.webm
  157. bear-vp9-opus.webm
  158. bear-vp9.ivf
  159. bear-vp9.ivf.context
  160. bear-vp9.webm
  161. bear-vp9a-odd-dimensions.webm
  162. bear-vp9a.webm
  163. bear.ac3
  164. bear.adts
  165. bear.aiff
  166. bear.amr
  167. bear.asf
  168. bear.avi
  169. bear.eac3
  170. bear.flac
  171. bear.flv
  172. bear.h261
  173. bear.h263
  174. bear.h264
  175. bear.hevc
  176. bear.m2ts
  177. bear.m3u8
  178. bear.mjpeg
  179. bear.mp4
  180. bear.mpeg
  181. bear.ogv
  182. bear.rm
  183. bear.swf
  184. bear.webm
  185. bear0.ts
  186. bear_192kHz.wav
  187. bear_192x320_270.nv12.yuv
  188. bear_192x320_270.nv12.yuv.json
  189. bear_192x320_90.nv12.yuv
  190. bear_192x320_90.nv12.yuv.json
  191. bear_320x192.bgra.json
  192. bear_320x192.i420.yuv
  193. bear_320x192.i420.yuv.json
  194. bear_320x192.i420.yuv.webm
  195. bear_320x192.nv12.yuv.json
  196. bear_320x192.rgba.json
  197. bear_320x192.yv12.yuv.json
  198. bear_320x192_180.nv12.yuv
  199. bear_320x192_180.nv12.yuv.json
  200. bear_320x192_40frames.yuv.webm
  201. bear_320x192_40frames.yuv.webm.json
  202. bear_3kHz.wav
  203. bear_640x384_40frames.yuv.webm
  204. bear_adts_in_private_stream_1.ts
  205. bear_alaw.wav
  206. bear_audio_longer_than_video.ogv
  207. bear_audio_shorter_than_video.ogv
  208. bear_divx_mp3.avi
  209. bear_gsm_ms.wav
  210. bear_h264_aac.3gp
  211. bear_mpeg4_amrnb.3gp
  212. bear_mpeg4_mp3.avi
  213. bear_mpeg4asp_mp3.avi
  214. bear_mulaw.wav
  215. bear_pcm.wav
  216. bear_pcm_s16be.mov
  217. bear_pcm_s24be.mov
  218. bear_rotate_0.mp4
  219. bear_rotate_180.mp4
  220. bear_rotate_270.mp4
  221. bear_rotate_90.mp4
  222. bear_silent.mp4
  223. bear_silent.ogv
  224. bear_silent.webm
  225. BlackAndWhite_criss-cross_pattern_2015x2015.webp
  226. blackwhite.html
  227. blackwhite.png
  228. blackwhite_yuv420p.avi
  229. blackwhite_yuv420p.mp4
  230. blackwhite_yuv420p.ogv
  231. blackwhite_yuv420p.webm
  232. blackwhite_yuv420p_hi10p.mp4
  233. blackwhite_yuv420p_rec709.mp4
  234. blackwhite_yuv422p.mp4
  235. blackwhite_yuv422p.ogv
  236. blackwhite_yuv444p.mp4
  237. blackwhite_yuv444p.ogv
  238. blackwhite_yuv444p.webm
  239. blackwhite_yuvj420p.mp4
  240. blank-1x1.jpg
  241. bouncy_ball.webp
  242. buck-1280x720-vp9.webm
  243. bunny-opus-intensity-stereo.webm
  244. butterfly-853x480.webm
  245. cleaner.html
  246. colour.webm
  247. colour_unspecified_range.webm
  248. COPYING
  249. corrupt.mp3
  250. crbug657437.mp4
  251. decode_capabilities_test.html
  252. double-bear.ogv
  253. double-sfx.ogg
  254. eme_and_get_display_media.html
  255. eme_load_session_after_close_test.html
  256. eme_player.html
  257. eme_remove_session_test.html
  258. encrypted_frame_size_change.html
  259. four-colors-aspect-4x3.mp4
  260. four-colors-incompatible-stride.y4m
  261. four-colors-rot-180.mp4
  262. four-colors-rot-270.mp4
  263. four-colors-rot-90.mp4
  264. four-colors-vp9-i420a.webm
  265. four-colors-vp9.webm
  266. four-colors.mp4
  267. frame_size_change-av_enc-v.webm
  268. green-a300hz.webm
  269. h264-320x180-frame-0
  270. h264-320x180-frame-1
  271. h264-320x180-frame-2
  272. h264-320x180-frame-3
  273. icy_sfx.mp3
  274. id3_png_test.mp3
  275. id3_test.mp3
  276. layout_change.wav
  277. load_many_videos.html
  278. media_source_player.html
  279. media_suspend_test.html
  280. midstream_config_change.mp3
  281. mse_config_change.html
  282. mse_different_containers.html
  283. mse_player.html
  284. multi_frame_mse_player.html
  285. multiple_cdm_types.html
  286. multitrack-3video-2audio.webm
  287. negative-audio-timestamps.avi
  288. negative_ts.flac
  289. no_audio_video.webm
  290. no_streams.webm
  291. noise-xhe-aac.mp4
  292. nonzero-start-time.webm
  293. npot-video.h264
  294. opus-trimming-test.mp4
  295. opus-trimming-test.ogg
  296. opus-trimming-test.webm
  297. opus-trimming-video-test.webm
  298. OWNERS
  299. peach_pi-1280x720.jpg
  300. pixel-1280x720-grayscale.jpg
  301. pixel-1280x720-trailing-zeros.jpg
  302. pixel-1280x720-yuv420.jpg
  303. pixel-1280x720-yuv444.jpg
  304. pixel-1280x720.jpg
  305. pixel-40x23-yuv420.jpg
  306. pixel-41x22-yuv420.jpg
  307. pixel-41x23-yuv420.jpg
  308. player.html
  309. puppets-1280x720.i420.yuv.webm
  310. puppets-1280x720.nv12.yuv.json
  311. puppets-320x180.nv12.yuv.json
  312. puppets-480x270.nv12.yuv.json
  313. puppets-640x360.nv12.yuv.json
  314. puppets-640x360_in_640x480.nv12.yuv.json
  315. rapid_video_change_test.html
  316. README.md
  317. red-a500hz.webm
  318. red-green.h264
  319. red_green_gradient_lossy.webp
  320. resolution_change_500frames-vp8.ivf
  321. resolution_change_500frames-vp8.ivf.json
  322. resolution_change_500frames-vp9.ivf
  323. resolution_change_500frames-vp9.ivf.json
  324. RGB_noise_2015x2015.webp
  325. RGB_noise_large_pixels_115x115.webp
  326. RGB_noise_large_pixels_2015x2015.webp
  327. RGB_noise_large_pixels_4000x4000.webp
  328. sfx-flac.mp4
  329. sfx-flac_frag.mp4
  330. sfx-opus-441.webm
  331. sfx-opus.ogg
  332. sfx-opus_frag.mp4
  333. sfx.adts
  334. sfx.flac
  335. sfx.m4a
  336. sfx.mp2
  337. sfx.mp3
  338. sfx.ogg
  339. sfx_f32le.wav
  340. sfx_s16le.wav
  341. sfx_s24le.wav
  342. sfx_s32le.wav
  343. sfx_u8.wav
  344. solid_green_2015x2015.webp
  345. speech_16b_stereo_48kHz.raw
  346. speex_audio_vorbis_video.ogv
  347. spherical.mp4
  348. switch_1080p_720p_240frames.h264
  349. switch_1080p_720p_240frames.h264.json
  350. sync2.ogv
  351. ten_byte_file
  352. test-25fps.av1.ivf
  353. test-25fps.av1.ivf.json
  354. test-25fps.h264
  355. test-25fps.h264.json
  356. test-25fps.vp8
  357. test-25fps.vp8.json
  358. test-25fps.vp9
  359. test-25fps.vp9.context
  360. test-25fps.vp9.json
  361. test-25fps.vp9_2
  362. test-25fps.vp9_2.json
  363. test_key_system_instantiation.html
  364. tos-h264-opus.mp4
  365. trailing-garbage.mp3
  366. tulip2.webm
  367. vorbis-extradata
  368. vorbis-packet-0
  369. vorbis-packet-1
  370. vorbis-packet-2
  371. vorbis-packet-3
  372. vorbis_audio_wmv_video.mkv
  373. vp8-corrupt-I-frame
  374. vp8-I-frame-160x240
  375. vp8-I-frame-320x120
  376. vp8-I-frame-320x240
  377. vp8-I-frame-320x480
  378. vp8-I-frame-640x240
  379. vp8-P-frame-320x240
  380. vp9-duplicate-frame.webm
  381. vp9-hdr-init-segment.mp4
  382. vp9-I-frame-1280x720
  383. vp9-I-frame-320x240
  384. vp90_2_10_show_existing_frame2.vp9.ivf
  385. webaudio_oscillator.html
  386. webm_content_encodings
  387. webm_ebml_element
  388. webm_info_element
  389. webm_vorbis_track_entry
  390. webm_vp8_track_entry
  391. yellow_pink_gradient_lossless.webp
media/test/data/README.md

Media Test Data

Instructions

To add, update or remove a test file, please update the list below.

Please provide full reference and steps to generate the test file so that any people can regenerate or update the file in the future.

List of Test Files

General Test Files

bear-320x240.webm

WebM encode of bear.1280x720.mp4 resized to 320x240.

bear-320x240-video-only.webm

The video track of bear-320x240.webm.

bear-320x240-audio-only.webm

The audio track of bear-320x240.webm.

bear-vp9.webm

VP9 video only WebM file.

bear-vp9-opus.webm

VP9 Video with Opus Audio.

bear-opus.webm

Opus Audio only WebM file.

bear-vp8-webvtt.webm

WebM VP8 video with WebVTT subtitle track.

bear-1280x720.mp4

AAC audio and H264 high profile video.

bear-1280x720-avt_subt_frag.mp4

Fragmented bear_1280x720.mp4 with text track containing srt from bear-vp8-webvtt.webm as a ‘subt’ handler type.

bear-1280x720-av_frag.mp4 - Fragmented bear_1280x720.mp4.

bear-1280x720-av_frag-initsegment-mvhd_version_0-mvhd_duration_bits_all_set.mp4:

Just the first initialization segment of bear-1280x720_av_frag.mp4, modified to have the mvhd version 0 32-bit duration field set to all 1's.

negative-audio-timestamps.avi

A truncated audio/video file with audio packet timestamps of -1. We need to ensure that these packets aren't dropped.

noise-xhe-aac.mp4

Fragmented mp4 of noise encoded with xHE-AAC, from xHE-AAC samples in Android CTS, using ffmpeg version 4.2.2 (where nofillin lets audio nonkeyframes in input be indicated the same in output, unlike more recent tip-of-tree ffmpeg's operation with this option) to remux, unfortunately with empty MOOV not giving real duration:

ffmpeg -fflags nofillin -i noise_2ch_48khz_aot42_19_lufs_mp4.m4a -acodec copy -t 1 -movflags frag_keyframe+empty_moov+default_base_moof noise-xhe-aac.mp4

FLAC

bear-flac.mp4

Unfragmented audio-only 44.1kHz FLAC in MP4 file, created using:

ffmpeg -i bear-1280x720.mp4 -map 0:0 -acodec flac -strict -2 bear-flac.mp4

Note: “-strict -2” was required because current ffmpeg libavformat version 57.75.100 indicates that flac in MP4 support is experimental.

bear-flac_frag.mp4

Fragmented audio-only 44.1kHz FLAC in MP4 file, created using:

ffmpeg -i bear-flac.mp4 -acodec copy -strict -2 -movflags frag_keyframe+empty_moov+default_base_moof bear-flac_frag.mp4

bear-flac-192kHz.mp4

Unfragmented audio-only high-sample-rate FLAC in MP4 file, created using:

ffmpeg -i bear-1280x720.mp4 -map 0:0 -acodec flac -strict -2 -ar 192000 bear-flac-192kHz.mp4

bear-flac-192kHz_frag.mp4

Fragmented audio-only high-sample-rate FLAC in MP4 file, created using:

ffmpeg -i bear-flac-192kHz.mp4 -acodec copy -strict -2 -movflags frag_keyframe+empty_moov+default_base_moof bear-flac-192kHz_frag.mp4

sfx-flac.mp4

Unfragmented audio-only 44.1kHz FLAC in MP4 file, created using:

ffmpeg -i sfx.flac -map 0:0 -acodec copy -strict -2 sfx-flac.mp4

sfx-flac_frag.mp4

Fragmented audio-only 44.1kHz FLAC in MP4 file, created using:

ffmpeg -i sfx.flac -map 0:0 -acodec copy -strict -2 -movflags frag_keyframe+empty_moov+default_base_moof sfx-flac_frag.mp4

AV1

Unless noted otherwise, the codec string is av01.0.04M.08 for 8-bit files, and av01.0.04M.10 for 10-bit files.

bear.y4m

Not an AV1 file, but all of the following commands rely on this file. It was created using vpxdec with the following command:

vpxdec path/to/chrome/src/media/test/data/bear-vp9.webm -o bear.y4m

bear-av1.mp4

Created using FFmpeg with the following commands:

ffmpeg -i bear.y4m -vcodec libaom-av1 -strict -2 -y -f mp4 -b:v 50k \
  bear-av1-slowstart.mp4
ffmpeg -i bear-av1-slowstart.mp4 -vcodec copy -strict -2 -y -f mp4 \
  -movflags frag_keyframe+empty_moov+default_base_moof+faststart bear-av1.mp4

bear-mono-av1.mp4

Similar to the above but using aomenc for encoding with the --monochrome option.

bear-av1.webm

Created using aomenc with the following command:

aomenc bear.y4m --lag-in-frames=0 --target-bitrate=50 --fps=30000/1001 \
  --cpu-used=8 --test-decode=fatal -o bear-av1.webm

bear-av1-480x360.webm

Created using FFmpeg and aomenc with the following commands:

ffmpeg -i bear.y4m -vf scale=-1:360 -f rawvideo bear_360P.yuv
aomenc bear_360P.yuv -w 480 -h 360 --fps=30000/1001 --cpu-used=8 \
  --lag-in-frames=0 --test-decode=fatal --target-bitrate=50 \
  -o bear-av1-480x360.webm

bear-av1-640x480.webm

Created using FFmpeg and aomenc with the following commands:

ffmpeg -i bear.y4m -vf scale=-1:480 -f rawvideo bear_480P.yuv
aomenc bear_480P.yuv -w 640 -h 480 --fps=30000/1001 --cpu-used=8 \
  --lag-in-frames=0 --test-decode=fatal --target-bitrate=50 \
  -o bear-av1-640x480.webm

bear-av1-320x180-10bit.mp4

Created using FFmpeg with the following command:

ffmpeg -i bear-av1-320x180-10bit.webm -vcodec copy -f mp4 \
  -movflags frag_keyframe+empty_moov+default_base_moof+faststart \
  bear-av1-320x180-10bit.mp4

bear-av1-320x180-10bit.webm

Created using vpxdec and aomenc with the following commands:

vpxdec bear-320x180-hi10p-vp9.webm -o bear-320x180-10bit.y4m
aomenc bear-320x180-10bit.y4m --lag-in-frames=0 --target-bitrate=50 \
  --fps=30000/1001 --cpu-used=8 --bit-depth=10 --test-decode=fatal \
  -o bear-av1-320x180-10bit.webm

bear-av1-opus.mp4

Created by combining bear-av1.mp4 and bear-opus.mp4.

ffmpeg -i bear-av1.mp4 -i bear-opus.mp4 -c copy -strict -2 \
  -movflags frag_keyframe+empty_moov+default_base_moof \
  bear-av1-opus.mp4

Note: “-strict -2” was required because the current ffmpeg version has support for OPUS in MP4 as experimental.

av1-svc-L2T2.ivf

AV1 data that has spatial and temporal layers. This is the same as av1-1-b8-22-svc-L2T2.ivf in [libaom test vectors]:https://aomedia.googlesource.com/aom/+/master/test/test_vectors.cc

av1-show_existing_frame.ivf

AV1 data that contains frames with show_existing_frame=1. This is the same as 00000592.ivf in https://people.xiph.org/~tterribe/av1/samples-all/

Alpha Channel

bear-vp8a.webm

WebM VP8 video with alpha channel.

bear-vp8a-odd-dimensions.webm

WebM VP8 video with alpha channel and odd dimensions.

VP8 Frame Data

vp8-I-frame-160x240

The first I frame of a 160x240 re-encode of bear-320x240.webm.

vp8-I-frame-320x120

The first I frame of a 320x120 re-encode of bear-320x240.webm.

vp8-I-frame-320x240

The first I frame of bear-320x240.webm.

vp8-P-frame-320x240

The second P frame of bear-320x240.webm.

vp8-I-frame-320x480

The first I frame of a 320x480 re-encode of bear-320x240.webm.

vp8-I-frame-640x240

The first I frame of a 640x240 re-encode of bear-320x240.webm.

vp8-corrupt-I-frame

A copy of vp8-I-frame-320x240 w/ all bytes XORed w/ 0xA5.

Corrupted Files

no_streams.webm

Header, Info, & Tracks element from bear-320x240.webm slightly corrupted so it looks like there are no tracks.

nonzero-start-time.webm

Has the same headers as bear-320x240.webm but the first cluster of this file is the second cluster of bear-320x240.webm. This creates the situation where the media data doesn't start at time 0.

bear-320x240_corrupted_after_init_segment.webm

bear-320x240.webm's initialization segment followed by “CORRUPTED\n”

Live

bear-320x240-live.webm

bear-320x240.webm remuxed w/o a duration and using clusters with unknown sizes.

ffmpeg -i bear-320x240.webm -acodec copy -vcodec copy -f webm pipe:1 > bear-320x240-live.webm

Color / High Bit Depth

colour.webm

a WebM file containing color metadata in MKV/WebM Colour element copied from libwebm/testing/testdata/colour.webm

four-colors.mp4

A 960x540 H.264 mp4 video with 4 color blocks (Y,R,G,B) in every frame. The video playback looks like a still image. An image of 4 color blocks (.png file) is first created by Windows Paint.exe. This image is then used as a basic video frame in making this 2-second video from Mac iStopMotion.

four-colors-aspect-4x3.mp4

Actual video frames are the same as four-colors.mp4, except it specifies an aspect of 4x3 in mp4 meta data.

four-colors-aspect-rot-90.mp4

Actual video frames are the same as four-colors.mp4, except it specifies a rotation of 90 degrees in mp4 meta data.

four-colors-aspect-rot-180.mp4

Actual video frames are the same as four-colors.mp4, except it specifies a rotation of 180 degrees in mp4 meta data.

four-colors-aspect-rot-270.mp4

Actual video frames are the same as four-colors.mp4, except it specifies a rotation of 270 degrees in mp4 meta data.

four-colors-incompatible-stride.y4m

A 962x540 raw YUV single frame video with 4 color blocks (Y,R,G,B) and a GL incompatible stride. Converted from four-colors.mp4 using ffmpeg:

ffmpeg -i four-colors.mp4 -vf "scale=w=962:h=540,format=yuv420p" -frames:v 1 four-colors-incompatible-stride.y4m

four-colors-vp9.webm

A 960x540 vp9 video with 4 color blocks (Y,R,G,B) in every frame. This is converted from four-colors.mp4 by ffmpeg.

four-colors-vp9-i420a.webm

A 960x540 yuva420p vp9 video with 4 color blocks (Y,R,G,B) in every frame. This is converted from four-colors.mp4 by adding an opacity of 0.5 using ffmpeg.

bear-320x180-hi10p.mp4

bear-320x240-vp9_profile2.webm

VP9 encoded video with profile 2 (10-bit, 4:2:0). Codec string: vp09.02.10.10.01.02.02.02.00.

vp9-hdr-init-segment.mp4

Init segment for a VP9.2 HDR in MP4 file; from https://crbug.com/1102200#c6

AAC test data from MPEG-DASH demoplayer (44100 Hz, stereo)

Duration of each packet is (1024/44100 Hz), approximately 23.22 ms.

  • aac-44100-packet-0 - timestamp: 0ms
  • aac-44100-packet-1 - timestamp: 23.22ms
  • aac-44100-packet-2 - timestamp: 46.44ms
  • aac-44100-packet-3 - timestamp: 69.66ms

Vorbis test data from bear.ogv (44100 Hz, 16 bits, stereo)

  • vorbis-extradata - Vorbis extradata section
  • vorbis-packet-0 - timestamp: 0ms, duration: 0ms
  • vorbis-packet-1 - timestamp: 0ms, duration: 0ms
  • vorbis-packet-2 - timestamp: 0ms, duration: 0ms
  • vorbis-packet-3 - timestamp: 2902ms, duration: 0ms

MSE MP4 keyframe-metadata versus encoded AVC keyframe-ness test media

bear-640x360-v-2frames_frag.mp4

Just first 2 video frames of bear-640x360-v_frag.mp4, created with:

ffmpeg -i bear-640x360-v_frag.mp4 -vcodec copy -movflags frag_keyframe+empty_moov+default_base_moof \
    -vframes 2 bear-640x360-v-2frames_frag.mp4

It‘s 1 keyframe + 1 non-keyframe, with container’s frame keyframe-ness correct.

bear-640x360-v-2frames-keyframe-is-non-sync-sample_frag.mp4

This is bear-640x360-v-2frames_frag.mp4, with manually updated trun.first_sample_flags: s/0x02000000/0x01010000 (first frame is non-sync-sample, depends on another frame, mismatches compressed h264 first frame's keyframe-ness).

bear-640x360-v-2frames-nonkeyframe-is-sync-sample_frag.mp4

This is bear-640x360-v-2frames_frag.mp4, with manually updated tfhd.default_sample_flags: s/0x01010000/0x02000000 (second frame is sync-sample, doesn‘t depend on other frames, mismatches compressed h264 second frame’s nonkeyframe-ness).

Encrypted Test Files

[1] Test key ID: 30313233343536373839303132333435

[2] Test key: ebdd62f16814d27b68ef122afce4ae3c

[3] KeyIds and Keys are created by left rotating key ID [1] and key [2] using std::rotate for every new crypto period. This is only for testing. The actual key rotation algorithm is often much more complicated.

General

bear-1280x720-a_frag-cenc.mp4

A fragmented MP4 version of the audio track of bear-1280x720.mp4 encrypted (ISO CENC) using key ID [1] and key [2].

bear-1280x720-a_frag-cenc-key_rotation.mp4

A fragmented MP4 version of the audio track of bear-1280x720.mp4 encrypted (ISO CENC) using key ID [1] and key [2] with key rotation [3].

bear-1280x720-a_frag-cenc_clear-all.mp4

Same as bear-1280x720-a_frag-cenc.mp4 but no fragments are encrypted.

bear-1280x720-v_frag-cenc.mp4

A fragmented MP4 version of the video track of bear-1280x720.mp4 encrypted (ISO CENC) using key ID [1] and key [2].

bear-1280x720-v_frag-cenc-key_rotation.mp4

A fragmented MP4 version of the video track of bear-1280x720.mp4 encrypted (ISO CENC) using key ID [1] and key [2] with key rotation [3].

bear-1280x720-v_frag-cenc_clear-all.mp4

Same as bear-1280x720-v_frag-cenc.mp4 but no fragments are encrypted.

bear-1280x720-a_frag-cenc_missing-saiz-saio.mp4

An invalid file similar to bear-1280x720-a_frag-cenc.mp4 but has no saiz and saio boxes. To save space, it has only one encrypted sample.

bear-320x240-v_frag-vp9.mp4

Bear video with VP9 codec in MP4 container. Generated with Shaka Packager at 1e2da22c8809c17cc4dfdb45924ec45e42058393:

packager in=bear-vp9.webm,stream=video,out=bear-320x240-v_frag-vp9.mp4

bear-320x240-v_frag-vp9-cenc.mp4

Same as above, with video encrypted using key ID [1] and key [2]. Generated with Shaka Packager at 1e2da22c8809c17cc4dfdb45924ec45e42058393:

packager in=bear-vp9.webm,stream=video,out=bear-320x240-v_frag-vp9-cenc.mp4
         --enable_fixed_key_encryption --key_id 30313233343536373839303132333435
         --key ebdd62f16814d27b68ef122afce4ae3c --clear_lead 0
         --pssh 0000003470737368010000001077EFECC0B24D02ACE33C1E52E2FB4B000000013031323334353637383930313233343500000000000000467073736800000000EDEF8BA979D64ACEA3C827DCD51D21ED000000261210303132333435363738393031323334351A00221030313233343536373839303132333435

bear-320x240-16x9-aspect-av_enc-av.webm

bear-320x240-16x9-aspect.webm with audio & video encrypted using key ID [1] and key [2]

bear-320x240-av_enc-av.webm

bear-320x240.webm with audio & video encrypted using key ID [1] and key [2].

bear-320x240-av_enc-av_clear-1s.webm

Same as bear-320x240-av_enc-av.webm but with no frames in the first second encrypted.

bear-320x240-av_enc-av_clear-all.webm

Same as bear-320x240-av_enc-av.webm but with no frames encrypted.

bear-320x240-v-vp9_profile2_subsample_cenc-v.webm

Encrypted Bear video with VP9 codec (profile 2) in WebM container, using key ID [1] and key [2]. Codec string: vp09.02.10.10.01.02.02.02.00. Generated with Shaka Packager at 4ba5bec66054cfd4af13c07ac62a97f1a1a2e5f9:

packager in=bear-320x240-vp9_profile2.webm,stream=video,out=bear-320x240-v-vp9_profile2_subsample_cenc-v.webm
         --enable_fixed_key_encryption --key_id 30313233343536373839303132333435
         --key ebdd62f16814d27b68ef122afce4ae3c --clear_lead 0
         --pssh 0000003470737368010000001077EFECC0B24D02ACE33C1E52E2FB4B000000013031323334353637383930313233343500000000000000467073736800000000EDEF8BA979D64ACEA3C827DCD51D21ED000000261210303132333435363738393031323334351A00221030313233343536373839303132333435

bear-320x240-v-vp9_profile2_subsample_cenc-v.mp4

Same as above, in MP4 container. Codec string: vp09.02.10.10.01.02.02.02.00. Generated with Shaka Packager at 4ba5bec66054cfd4af13c07ac62a97f1a1a2e5f9:

packager in=bear-320x240-vp9_profile2.webm,stream=video,out=bear-320x240-v-vp9_profile2_subsample_cenc-v.mp4
         --enable_fixed_key_encryption --key_id 30313233343536373839303132333435
         --key ebdd62f16814d27b68ef122afce4ae3c --clear_lead 0
         --pssh 0000003470737368010000001077EFECC0B24D02ACE33C1E52E2FB4B000000013031323334353637383930313233343500000000000000467073736800000000EDEF8BA979D64ACEA3C827DCD51D21ED000000261210303132333435363738393031323334351A00221030313233343536373839303132333435

bear-640x360-av_enc-av.webm

bear-640x360.webm with audio & video encrypted using key ID [1] and key [2].

bear-320x240-av_enc-v.webm

bear-320x240.webm with video track encrypted using key ID [1] and key [2].

bear-320x240-av_enc-a.webm

bear-320x240.webm with audio track encrypted using key ID [1] and key [2].

bear-320x240-v_enc-v.webm

bear-320x240-video-only.webm encrypted using key ID [1] and key [2].

bear-320x240-v-vp9_fullsample_enc-v.webm

bear-vp9.webm VP9 video only encrypted using key ID [1] and key [2] with full sample encryption.

bear-320x240-v-vp9_subsample_enc-v.webm

bear-vp9.webm VP9 video only encrypted using key ID [1] and key [2] with subsample encryption.

bear-320x240-opus-a_enc-a.webm

bear-opus.webm encrypted using key ID [1] and key [2].

bear-320x240-opus-av_enc-av.webm

bear-vp9-opus.webm with audio & video encrypted using key ID [1] and key [2].

bear-320x240-opus-av_enc-v.webm

bear-vp9-opus.webm with video track encrypted using key ID [1] and key [2].

bear-640x360-a_frag-cenc.mp4

A fragmented MP4 version of the audio track of bear-640x360.mp4 encrypted (ISO CENC) using key ID [1] and key [2].

Note: bear-640x360.mp4 file does not exist any more. Files encrypted from it has AAC audio and H264 high profile video (if applicable).

bear-640x360-a_frag-cenc-key_rotation.mp4

A fragmented MP4 version of the audio track of bear-640x360.mp4 encrypted (ISO CENC) using key ID [1] and key [2] with key rotation [3].

bear-640x360-v_frag-cenc-mdat.mp4

A fragmented MP4 version of the video track of bear-640x360.mp4 encrypted (ISO CENC) using key ID [1] and key [2] and with sample encryption auxiliary information in the beginning of mdat box.

bear-640x360-v_frag-cenc-senc.mp4

Same as above, but with sample encryption information stored in SampleEncryption (‘senc’) box.

bear-640x360-v_frag-cenc-senc-no-saiz-saio.mp4

Same as above, but without saiz and saio boxes.

bear-640x360-v_frag-cenc-key_rotation.mp4

A fragmented MP4 version of the video track of bear-640x360.mp4 encrypted (ISO CENC) using key ID [1] and key [2] with key rotation [3].

bear-640x360-a_frag-cbcs.mp4

  • Same as previous instructions, except source is bear-640x360-a_frag.mp4 and no clear lead (i.e. --clear_lead 0).

bear-flac-cenc.mp4

Encrypted version of bear-flac.mp4, encrypted by Shaka Packager v2.1.0 using key ID [1] and key [2]. Sample encryption information stored in SampleEncryption (‘senc’) box (in each encrypted fragment).

packager in=bear-flac.mp4,stream=audio,output=bear-flac-cenc.mp4
         --enable_raw_key_encryption
         --clear_lead 0.5
         --segment_duration 0.5
         --keys label=:key_id=30313233343536373839303132333435:key=ebdd62f16814d27b68ef122afce4ae3c
         --pssh 000000327073736800000000EDEF8BA979D64ACEA3C827DCD51D21ED000000121210303132333435363738393031323334350000003470737368010000001077EFECC0B24D02ACE33C1E52E2FB4B000000013031323334353637383930313233343500000000

bear-opus-cenc.mp4

Encrypted version of bear-opus.mp4, encrypted by Shaka Packager v2.3.0 using key ID [1] and key [2].

packager in=bear-opus.mp4,stream=audio,output=bear-opus-cenc.mp4
         --enable_raw_key_encryption
         --protection_scheme cenc
         --clear_lead 0
         --segment_duration 0.5
         --keys label=:key_id=30313233343536373839303132333435:key=ebdd62f16814d27b68ef122afce4ae3c
         --pssh 000000327073736800000000EDEF8BA979D64ACEA3C827DCD51D21ED000000121210303132333435363738393031323334350000003470737368010000001077EFECC0B24D02ACE33C1E52E2FB4B000000013031323334353637383930313233343500000000

bear-a_enc-a.webm

bear-320x240-audio-only.webm encrypted using key ID [1] and key [2].

frame_size_change-av_enc-v.webm

third_party/WebKit/LayoutTests/media/resources/frame_size_change.webm encrypted using key ID [1] and key [2].

AV1

Unless noted otherwise, the codec string is av01.0.04M.08 for 8-bit files, and av01.0.04M.10 for 10-bit files.

av1-I-frame-320x240

vpxdec media/test/data/bear-vp9.webm -o bear.y4m aomenc -o bear.ivf -p 2 --target-bitrate=150 bear.y4m --limit=1 --ivf tail -c +45 bear.ivf > av1-I-frame-320x240

av1-I-frame-1280x720

Same as av1-I-frame-320x240 but using bear-1280x720.webm as input.

av1-monochrome-I-frame-320x240-[8,10,12]bpp

Same as av1-I-frame-320x240 with --monochrome and -b=[8,10,12] aomenc options.

bear-av1-cenc.mp4

Encrypted version of bear-av1.mp4. Encrypted by Shaka Packager built locally at commit 53aa775ea488c0ffd3a2e1cb78ad000154e414e1 using key ID [1] and key [2].

packager in=bear-av1.mp4,stream=video,output=bear-av1-cenc.mp4
         --enable_raw_key_encryption --protection_scheme cenc --clear_lead 0
         --keys label=:key_id=30313233343536373839303132333435:key=ebdd62f16814d27b68ef122afce4ae3c
         --pssh 000000327073736800000000EDEF8BA979D64ACEA3C827DCD51D21ED000000121210303132333435363738393031323334350000003470737368010000001077EFECC0B24D02ACE33C1E52E2FB4B000000013031323334353637383930313233343500000000

bear-av1-cenc.webm

Same as bear-av1-cenc.mp4, except that the output name is bear-av1-cenc.webm.

bear-av1-320x180-10bit-cenc.mp4

Same as bear-av1-cenc.mp4, except that the input name is bear-av1-320x180-10bit.mp4, and the output name is bear-av1-320x180-10bit-cenc.mp4.

bear-av1-320x180-10bit-cenc.webm

Same as bear-av1-cenc.mp4, except that the input name is bear-av1-320x180-10bit.webm, and the output name is bear-av1-320x180-10bit-cenc.webm.

Encryption Scheme Test

  • bear-640x360-v_frag-cenc.mp4
  • bear-640x360-v_frag-cbc1.mp4
  • bear-640x360-v_frag-cbcs.mp4
  • bear-640x360-v_frag-cens.mp4

Encrypted versions of bear-640x360-v_frag.mp4, encrypted by Shaka Packager v2.0.0 using key ID [1] and key [2]. Sample encryption information stored in SampleEncryption (‘senc’) box (in each encrypted fragment).

Command: (replace both places of ‘cenc’ with desired scheme)

packager in=bear-640x360-v_frag.mp4,stream=video,output=bear-640x360-v-cenc.mp4
         --enable_raw_key_encryption
         --protection_scheme cenc
         --clear_lead 0.5
         --segment_duration 0.5
         --keys label=:key_id=30313233343536373839303132333435:key=ebdd62f16814d27b68ef122afce4ae3c
         --pssh 000000327073736800000000EDEF8BA979D64ACEA3C827DCD51D21ED000000121210303132333435363738393031323334350000003470737368010000001077EFECC0B24D02ACE33C1E52E2FB4B000000013031323334353637383930313233343500000000

The ‘pssh’ data includes entries for both Widevine and Common SystemID. It was generated from concatenating the output of:

shaka/packager/tools/pssh/pssh-box.py --widevine-system-id --key-id 30313233343536373839303132333435 --hex
shaka/packager/tools/pssh/pssh-box.py --common-system-id --key-id 30313233343536373839303132333435 --hex

HLS

bear-1280x720-hls.ts

Produced using Apple's mediafilesegmenter tool with bear-1280x720.ts as input, with no encryption.

mediafilesegmenter -t 10 -start-segments-with-iframe -f 'output_clear/' bear-1280x720.ts

bear-1280x720-hls-sample-aes.ts

Produced using Apple's mediafilesegmenter tool also with bear-1280x720.ts as input, but with SAMPLE_AES encryption. (Additional TS packets were constructed manually and prepended to convey the encryption metadata, notably key id and IV).

mediafilesegmenter -S -P -k 'key_iv.bin' -t 10 -start-segments-with-iframe -f 'output/' bear-1280x720.ts

bear-1280x720-hls-with-CAT.ts

Same as bear-1280x720-hls.ts but with an extra TS packet prepended. This is the same as the first of the metadata packets in bear-1280x720-hls-sample-aes.ts. Its presence indicates that SAMPLE_AES encryption may occur later in the stream, and causes the initial audio and video configs to have an encryption_scheme (of AES-CBC). The actual data is unencrypted, which is indicated by the lack of key ID and IV. This ends up very similar to how clear leader of an otherwise encrypted stream can occur in MP4.

Container Test Files

Additional containers derived from bear.ogv:

  • bear.ac3 -- created using avconv -i bear.ogv -f ac3 -b 192k bear.ac3.
  • bear.adts -- created using avconv -i bear.ogv -f adts -strict experimental bear.adts.
  • bear.aiff -- created using avconv -i bear.ogv -f aiff bear.aiff.
  • bear.asf -- created using avconv -i bear.ogv -f asf bear.asf.
  • bear.avi -- created using avconv -i bear.ogv -f avi -b 192k bear.avi.
  • bear.eac3 -- created using avconv -i bear.ogv -f eac3 bear.eac3.
  • bear.flac -- created using avconv -i bear.ogv -f flac bear.flac.
  • bear.flv -- created using avconv -i bear.ogv -f flv bear.flv.
  • bear.h261 -- created using avconv -i bear.ogv -f h261 -s:0 cif bear.h261.
  • bear.h263 -- created using avconv -i bear.ogv -f h263 -s:0 cif bear.h263.
  • bear.m2ts -- created using avconv -i bear.ogv -f mpegts bear.m2ts.
  • bear.mjpeg -- created using avconv -i bear.ogv -f mjpeg bear.mjpeg.
  • bear.mpeg -- created using avconv -i bear.ogv -f mpeg bear.mpeg.
  • bear.rm -- created using avconv -i bear.ogv -f rm -b 192k bear.rm.
  • bear.swf -- created using avconv -i bear.ogv -f swf -an bear.swf.

VDA Test Files:

test-25fps

test-25fps.h264

Using ffmpeg SVN-r0.5.9-4:0.5.9-0ubuntu0.10.04.1 @ WebKit r122718, generated with:

ffmpeg -i third_party/WebKit/LayoutTests/media/content/test-25fps.mp4 \
      -vcodec copy -vbsf h264_mp4toannexb -an test-25fps.h264

test-25fps.h264.json:

JSON file that contains all metadata related to test-25fps.h264, used by the video_decode_accelerator_tests. This includes the video codec, resolution and md5 checksums of individual video frames when converted to the I420 format.

test-25fps.vp8

ffmpeg git-2012-07-19-a8d8e86, libvpx ToT 7/19, chromium r147247, mkvextract v5.0.1

ffmpeg -i test-25fps.h264 -vcodec libvpx -an test-25fps.webm && \
    mkvextract tracks test-25fps.webm 1:test-25fps.vp8 && rm test-25fps.webm

test-25fps.vp8.json:

JSON file that contains all metadata related to test-25fps.vp8, used by the video_decode_accelerator_tests. This includes the video codec, resolution and md5 checksums of individual video frames when converted to the I420 format.

test-25fps.vp9

avconv 9.16-6:9.16-0ubuntu0.14.04.1, vpxenc v1.3.0

avconv -i test-25fps.h264 -c:v rawvideo -pix_fmt yuv420p test-25fps_i420.yuv
vpxenc test-25fps_i420.yuv -o test-25fps.vp9 --codec=vp9 -w 320 -h 240 --ivf \
    --profile=0 --kf-min-dist=0 --kf-max-dist=150 --lag-in-frames=24 \
    --drop-frame=0 --target-bitrate=140 --cq-level=23 --min-q=4 --max-q=56 \
    --static-thresh=1000 --arnr-maxframes=7 --arnr-strength=5 --arnr-type=3 \
    --cpu-used=1 --good --tile-columns=1 --passes=2 --threads=1 --fps=25/1 \
    --end-usage=cq --auto-alt-ref=1 --bias-pct=50 --minsection-pct=0 \
    --maxsection-pct=2000 --undershoot-pct=100

test-25fps.vp9.json:

JSON file that contains all metadata related to test-25fps.vp9, used by the video_decode_accelerator_tests. This includes the video codec, resolution and md5 checksums of individual video frames when converted to the I420 format.

test-25fps.vp9_2

Similar to test-25fps.vp9, substituting the option --profile=0 with --profile=2 --bit-depth=10 to vpxenc. (Note that vpxenc must have been configured with the option --enable-vp9-highbitdepth).

test-25fps.vp9_2.json:

JSON file that contains all metadata related to test-25fps.vp9_2, used by the video_decode_accelerator_tests. This includes the video codec, resolution and md5 checksums of individual video frames when converted to the I420 format.

test-25fps.av1.ivf:

The av1 video whose content is the same as test-25fps.h264.

ffmpeg -i test-25fps.h264 -vcodec libaom-av1 test-25fps.av1.ivf

test-25fps.av1.ivf.json:

JSON file that contains all metadata related to test-25fps.av1.ivf, used by the video_decode_accelerator_tests. This includes the video codec, resolution and md5 checksums of individual video frames when converted to the I420 format.

VP9 video with raw vp9 frames

buck-1280x720-vp9.webm

1280x720 version of Big Buck Bunny https://peach.blender.org/ muxed with raw vp9 frames (versus superframes).

VP9 video with show_existing_frame flag

vp90_2_10_show_existing_frame2.vp9.ivf

VP9 video with show_existing_frame flag. The original test stream comes from Android CTS.

ffmpeg -i vp90_2_17_show_existing_frame.vp9 -vcodec copy -an -f ivf \
    vp90_2_17_show_existing_frame.vp9.ivf

bear

bear.h264

Using ffmpeg version 0.8.6-4:0.8.6-0ubuntu0.12.04.1, generated with bear.mp4 (https://chromiumcodereview.appspot.com/10805089):

ffmpeg -i bear.mp4 -vcodec copy -vbsf h264_mp4toannexb -an bear.h264

npot-video

npot-video.h264

Using ffmpeg version 0.8.6-4:0.8.6-0ubuntu0.12.04.1, generated with npot-video.mp4 (https://codereview.chromium.org/8342021):

ffmpeg -i npot-video.mp4 -vcodec copy -vbsf h264_mp4toannexb -an npot-video.h264

red-green

red-green.h264

Using ffmpeg version 0.8.6-4:0.8.6-0ubuntu0.12.04.1, generated with red-green.mp4 (https://codereview.chromium.org/8342021):

ffmpeg -i red-green.mp4 -vcodec copy -vbsf h264_mp4toannexb -an red-green.h264

Misc Test Files

resolution_change_500frames

resolution_change_500frames-vp8.ivf

resolution_change_500frames-vp9.ivf

Dumped compressed stream of videos on http://crosvideo.appspot.com manually changing resolutions at random. Those contain 144p, 240p, 360p, 480p, 720p, and 1080p frames. Those frame sizes can be found by

ffprobe -show_frames resolution_change_500frames.vp8

switch_1080p_720p_240frames

switch_1080p_720p_240frames.h264

Extract 240 frames using ffmpeg from http://commondatastorage.googleapis.com/chromiumos-test-assets-public/MSE/switch_1080p_720p.mp4.

The frame sizes change between 1080p and 720p every 24 frames.

VEA test files:

bear_320x192_40frames.yuv.webm

First 40 raw i420 frames of bear-1280x720.mp4 scaled down to 320x192 for video_encode_accelerator_unittest. Encoded with vp9 lossless: ffmpeg -pix_fmt yuv420p -s:v 320x192 -r 30 -i bear_320x192_40frames.yuv -lossless 1 bear_320x192_40frames.yuv.webm

bear_640x384_40frames.yuv.webm

First 40 raw i420 frames of bear-1280x720.mp4 scaled down to 340x384 for video_encode_accelerator_unittest. Encoded with vp9 lossless: ffmpeg -pix_fmt yuv420p -s:v 640x384 -r 30 -i bear_640x384_40frames.yuv -lossless 1 bear_640x384_40frames.yuv.webm

ImageProcessor Test Files

bear_320x192.i420.yuv.webm

First frame of bear_320x192_40frames.yuv for image_processor_test. To get the uncompressed yuv, execute the following command. vpxdec bear_320x192.i420.yuv.webm --rawvideo -o bear_320x192.i420.yuv

bear_320x192.i420.yuv.json

Metadata describing bear_320x192.i420.yuv.

bear_320x192.nv12.yuv

First frame of bear_320x192_40frames.yuv for image_processor_test and formatted nv12. To get the uncompressed yuv, execute the following command. ffmpeg -s:v 320x192 -pix_fmt yuv420p -i bear_320x192.i420.yuv -c:v rawvideo -pix_fmt nv12 bear_320x192.nv12.yuv

bear_320x192.nv12.yuv.json

Metadata describing bear_320x192.nv12.yuv.

bear_320x192.yv12.yuv

First frame of bear_320x192_40frames.yv12.yuv for image_processor_test and formatted yv12. To get the uncompressed yuv, execute the following command. ffmpeg -s:v 320x192 -pix_fmt yuv420p -i bear_320x192.i420.yuv -c:v rawvideo -pix_fmt yuv420p -vf shuffleplanes=0:2:1 bear_320x192.yv12.2.yuv

bear_320x192.rgba

RAW RGBA format data. This data is created from bear_320x192.i420.yuv. Alpha channel is always 0xFF. To get the uncompressed yuv, execute the following command. ffmpeg -s 320x192 -pix_fmt yuv420p -i bear_320x192.i420.yuv -vcodec rawvideo -f image2 -pix_fmt rgba bear_320x192.rgba

bear_320x192.bgra

RAW BGRA format data. This data is created from bear_320x192.i420.yuv. Alpha channel is always 0xFF. To get the uncompressed yuv, execute the following command. ffmpeg -s 320x192 -pix_fmt yuv420p -i bear_320x192.i420.yuv -vcodec rawvideo -f image2 -pix_fmt rgba bear_320x192.bgra

bear_192x320_90.nv12.yuv

Rotate bear_320x192.nv12.yuv by 90 degrees clockwise. ffmpeg -s:v 320x192 -pix_fmt nv12 -i bear_320x192.nv12.yuv -vf transpose=1 -c:v rawvideo -pix_fmt nv12 bear_192x320_90.nv12.yuv

bear_192x320_90.nv12.yuv.json

Metadata describing bear_192x320_90.nv12.yuv

bear_320x192_180.nv12.yuv

Rotate bear_320x192.nv12.yuv by 180 degrees clockwise. ffmpeg -s:v 320x192 -pix_fmt nv12 -i bear_320x192.nv12.yuv -vf "transpose=2,transpose=2" -c:v rawvideo -pix_fmt nv12 bear_320x192_180.nv12.yuv

bear_320x192_180.nv12.yuv.json

Metadata describing bear_320x192_180.nv12.yuv

bear_192x320_270.nv12.yuv

Rotate bear_320x192.nv12.yuv by 270 degrees clockwise. ffmpeg -s:v 320x192 -pix_fmt nv12 -i bear_320x192.nv12.yuv -vf transpose=2 -c:v rawvideo -pix_fmt nv12 bear_192x320_270.nv12.yuv

bear_192x320_270.nv12.yuv.json

Metadata describing bear_192x320_270.nv12.yuv

puppets-1280x720.nv12.yuv

RAW NV12 format data. The width and height are 1280 and 720, respectively. This data is created from peach_pi-1280x720.jpg by the following command. ffmpeg -i peach_pi-1280x720.jpg -s 1280x720 -pix_fmt nv12 puppets-1280x720.nv12.yuv

To get the uncompressed yuv, execute the following commands. vpxdec puppets-1280x720.i420.yuv.webm --rawvideo -o puppets-1280x720.i420.yuv ffmpeg -s:v 1280x720 -pix_fmt yuv420p -i puppets-1280x720.i420.yuv -c:v rawvideo -pix_fmt nv12 puppets-1280x720.nv12.yuv

puppets-640x360.nv12.yuv

RAW NV12 format data. The width and height are 640 and 360, respectively. To get the uncompressed yuv, execute the following command. ffmpeg -s:v 1280x720 -pix_fmt nv12 -i puppets-1280x720.nv12.yuv -vf scale=640x360 -c:v rawvideo -pix_fmt nv12 puppets-640x360.nv12.yuv

puppets-480x270.nv12.yuv

RAW NV12 format data. The width and height are 640 and 360, respectively. To get the uncompressed yuv, execute the following command. ffmpeg -s:v 1280x720 -pix_fmt nv12 -i puppets-1280x720.nv12.yuv -vf scale=480x270 -c:v rawvideo -pix_fmt nv12 puppets-480x270.nv12.yuv

puppets-640x360_in_640x480.nv12.yuv

RAW NV12 format data. The width and height are 640 and 480, respectively. The meaningful image is at the rectangle (0, 0, 640x360) in the image. The area outside this rectangle is black. To get the uncompressed yuv, execute the following command. ffmpeg -s:v 640x360 -pix_fmt nv12 -i puppets-640x360.nv12.yuv -vf "scale=640:480:force_original_aspect_ratio=decrease,pad=640:480:(ow-iw)/2:(oh-ih)/2" -c:v rawvideo -pix_fmt nv12 puppets-640x360_in_640x480.nv12.yuv

puppets-320x180.nv12.yuv

RAW NV12 format data. The width and height are 320 and 180, respectively. To get the uncompressed yuv, execute the following command. ffmpeg -s:v 1280x720 -pix_fmt nv12 -i puppets-1280x720.nv12.yuv -vf scale=320x180 -c:v rawvideo -pix_fmt nv12 puppets-320x180.nv12.yuv

VP9 parser test files:

bear-vp9.ivf

Created using “avconv -i bear-vp9.webm -vcodec copy -an -f ivf bear-vp9.ivf”.

bear-vp9.ivf.context

test-25fps.vp9.context

Manually dumped from libvpx with bear-vp9.ivf and test-25fps.vp9. See vp9_parser_unittest.cc for description of their format.

WebM files for testing multiple tracks.

green-a300hz.webm

WebM file containing 12 seconds of solid green video + 300Hz sine wave audio

red-a500hz.webm

WebM file containing 10 seconds of solid red video + 500Hz sine wave audio

Created with the following commands:

ffmpeg -f lavfi -i color=c=green:size=160x120 -t 12 -c:v libvpx green.webm
ffmpeg -f lavfi -i color=c=red:size=320x240 -t 10 -c:v libvpx red.webm
ffmpeg -f lavfi -i "sine=frequency=300:sample_rate=48000" -t 12 -c:v libvpx a300hz.webm
ffmpeg -f lavfi -i "sine=frequency=500:sample_rate=48000" -t 10 -c:v libvpx a500hz.webm
ffmpeg -i green.webm -i a300hz.webm -map 0 -map 1 green-a300hz.webm
ffmpeg -i red.webm -i a500hz.webm -map 0 -map 1 red-a500hz.webm

WebP Test Files

BlackAndWhite_criss-cross_pattern_2015x2015.webp

A lossy WebP encoded image of 2015x2015. Created by gildekel@ using Gimp.

bouncy_ball.webp

An animated (extended) WebP encoded image of 450x450. Created by gildekel@ using Gimp.

red_green_gradient_lossy.webp

A lossy WebP encoded image of 3000x3000. Created by gildekel@ using Gimp.

RGB_noise_2015x2015.webp

A lossy WebP encoded image of 2015x2015 that contains RGB noise. Created by gildekel@ using Gimp.

RGB_noise_large_pixels_115x115.webp

A lossy WebP encoded image of 115x115 that contains large pixels RGB noise. Created by gildekel@ using Gimp.

RGB_noise_large_pixels_2015x2015.webp

A lossy WebP encoded image of 2015x2015 that contains large pixels RGB noise. Created by gildekel@ using Gimp.

RGB_noise_large_pixels_4000x4000.webp

A lossy WebP encoded image of 4000x4000 that contains large pixels RGB noise. Created by gildekel@ using Gimp.

solid_green_2015x2015.webp

A lossy WebP encoded image of 2015x2015 of solid bright green. Created by gildekel@ using Gimp.

yellow_pink_gradient_lossless.webp

A lossless WebP encoded image of 3000x3000. Created by gildekel@ using Gimp.

JPEG Test Files

pixel-1280x720.jpg

Single MJPEG encoded frame of 1280x720, captured on Chromebook Pixel. This image does not have Huffman table.

pixel-1280x720-trailing-zeros.jpg

A version of pixel-1280x720.jpg with five trailing zero bytes after the EOI marker. The command used to generated it was:

echo -e "`xxd -g1 -p -c1 pixel-1280x720.jpg`" "\n00\n00\n00\n00\n00" | xxd -r -g1 -p -c1 > pixel-1280x720-trailing-zeros.jpg

pixel-1280x720-grayscale.jpg

A version of pixel-1280x720.jpg converted to grayscale using:

jpegtran -grayscale pixel-1280x720.jpg > pixel-1280x720-grayscale.jpg

Then, using a hex editor, the Huffman table sections were removed from the resulting file.

pixel-1280x720-yuv420.jpg

A version of pixel-1280x720.jpg converted to 4:2:0 subsampling using:

convert pixel-1280x720.jpg -sampling-factor 4:2:0 -define jpeg:optimize-coding=false pixel-1280x720-yuv420.jpg

Then, using a hex editor, the Huffman table sections were removed from the resulting file.

pixel-40x23-yuv420.jpg

A version of pixel-1280x720-yuv420.jpg resized to 40x23 (so that the height is odd) using:

convert pixel-1280x720-yuv420.jpg -resize 40x23\! -define jpeg:optimize-coding=false pixel-40x23-yuv420.jpg

Then, using a hex editor, the Huffman table sections were removed from the resulting file.

pixel-41x22-yuv420.jpg

A version of pixel-1280x720-yuv420.jpg resized to 41x22 (so that the width is odd) using:

convert pixel-1280x720-yuv420.jpg -resize 41x22\! -define jpeg:optimize-coding=false pixel-41x22-yuv420.jpg

Then, using a hex editor, the Huffman table sections were removed from the resulting file.

pixel-41x23-yuv420.jpg

A version of pixel-1280x720-yuv420.jpg resized to 41x23 (so that both dimensions are odd) using:

convert pixel-1280x720-yuv420.jpg -resize 41x23\! -define jpeg:optimize-coding=false pixel-41x23-yuv420.jpg

Then, using a hex editor, the Huffman table sections were removed from the resulting file.

pixel-1280x720-yuv444.jpg

A version of pixel-1280x720.jpg converted to 4:4:4 subsampling using:

convert pixel-1280x720.jpg -sampling-factor 4:4:4 -define jpeg:optimize-coding=false pixel-1280x720-yuv444.jpg

Then, using a hex editor, the Huffman table sections were removed from the resulting file.

peach_pi-1280x720.jpg

Single MJPEG encoded frame of 1280x720, captured on Samsung Chromebook 2(13"). This image has Huffman table.

blank-1x1.jpg

1x1 small picture to test special cases.

MP4 files with non-square pixels.

bear-640x360-non_square_pixel-with_pasp.mp4

Size in TKHD is (639.2x360) and size in STSD is (470x360). A PASP box is present with hSpacing=34 and vSpacing=25. Note that 470.0 * 34 / 25 = 639.2.

bear-640x360-non_square_pixel-without_pasp.mp4

Size in TKHD is (639.2x360) and size in STSD is (470x360). No PASP box is present.

MP4 files with AC3 and EAC3 audio

bear-ac3-only-frag.mp4

AC3 audio in framented MP4, generated with

ffmpeg -i bear.ac3 -acodec copy -movflags frag_keyframe bear-ac3-only-frag.mp4

bear-eac3-only-frag.mp4

EAC3 audio in framented MP4, generated with

ffmpeg -i bear.eac3 -acodec copy -movflags frag_keyframe bear-eac3-only-frag.mp4

Mpeg2ts stream with AAC HE audio that uses SBR

bear-1280x720-aac_he.ts

Generated by the following command:

ffmpeg -i bear-1280x720.mp4 -c:v libx264 -c:a libfdk_aac -profile:a aac_he  bear-1280x720-aac_he.ts

Mpeg2ts streams MP3 audio

bear-audio-mp4a.6B.ts

Generated by the following commands:

ffmpeg -i bear_pcm.wav -c:a mp3 -ar 44100 bear-audio-mp4a.6B.ts

bear-audio-mp4a.69.ts

Generated by the following commands:

ffmpeg -i bear_pcm.wav -c:a mp3 -ar 22050 bear-audio-mp4a.69.ts

MP4 file with HEVC

bear-320x240-v_frag-hevc.mp4

HEVC video stream in fragmented MP4 container, generated with

ffmpeg -i bear-320x240.webm -c:v libx265 -an -movflags faststart+frag_keyframe bear-320x240-v_frag-hevc.mp4

bear-320x240-v-2frames_frag-hevc.mp4

HEVC video stream in fragmented MP4 container, including the first 2 frames, generated with

ffmpeg -i bear-320x240.webm -c:v libx265 -an -movflags frag_keyframe+empty_moov+default_base_moof \
    -vframes 2  bear-320x240-v-2frames_frag-hevc.mp4

bear-320x240-v-2frames-keyframe-is-non-sync-sample_frag-hevc.mp4

This is bear-320x240-v-2frames_frag-hevc.mp4, with manually updated trun.first_sample_flags: s/0x02000000/0x01010000 (first frame is non-sync-sample, depends on another frame, mismatches compressed h265 first frame's keyframe-ness).

bear-320x240-v-2frames-nonkeyframe-is-sync-sample_frag-hevc.mp4

This is bear-320x240-v-2frames_frag-hevc.mp4, with manually updated tfhd.default_sample_flags: s/0x01010000/0x02000000 (second frame is sync-sample, doesn‘t depend on other frames, mismatches compressed h265 second frame’s nonkeyframe-ness).

Multi-track MP4 file

(c) copyright 2008, Blender Foundation / www.bigbuckbunny.org

bbb-320x240-2video-2audio.mp4

Generated using following steps:

  1. Download the source file with 1 video and 1 audio stream.
    wget http://distribution.bbb3d.renderfarming.net/video/mp4/bbb_sunflower_1080p_30fps_normal.mp4
    
  2. Generate a scaled down to 320x240 video + 2 channel AAC LC audio from the source file.
    ffmpeg -i bbb_sunflower_1080p_30fps_normal.mp4 -c:v libx264 -crf 36 -vf  scale=320:240 -c:a libfdk_aac -ac 2 -t 24 bbb1.mp4
    
  3. Generate a file with the original video scaled down to 320x240 and flipped upside down and sine wave instead of audio.
    ffmpeg -i bbb_sunflower_1080p_30fps_normal.mp4 -f lavfi -i "sine=frequency=500:sample_rate=48000" -map 0:v -map 1:a -c:v libx264 -crf 36 -vf scale=320:240,vflip -c:a libfdk_aac -ac 2 -t 24 bbb2.mp4
    
  4. Combine the two files generated above into a single fragmented .mp4 file with 2 video and 2 audio tracks.
    ffmpeg -i bbb1.mp4 -i bbb2.mp4 -map 0:0 -map 0:1 -map 1:0 -map 1:1 -c:v copy -c:a copy -movflags frag_keyframe+omit_tfhd_offset+separate_moof bbb-320x240-2video-2audio.mp4
    

Multi-track WebM file

multitrack-3video-2audio.webm

Generated using following commands:

ffmpeg -f lavfi -i color=c=red:size=320x240 -t 5 -c:v libvpx red.webm
ffmpeg -f lavfi -i color=c=green:size=320x240 -t 5 -c:v libvpx green.webm
ffmpeg -f lavfi -i color=c=blue:size=160x120 -t 10 -c:v libvpx blue.webm
ffmpeg -f lavfi -i "sine=frequency=300:sample_rate=48000" -t 10 -c:v libvpx a300hz.webm
ffmpeg -f lavfi -i "sine=frequency=500:sample_rate=48000" -t 5 -c:v libvpx a500hz.webm
ffmpeg -i red.webm -i green.webm -i blue.webm -i a300hz.webm -i a500hz.webm -map 0 -map 1 -map 2 -map 3 -map 4  multitrack-3video-2audio.webm

Opus pre-skip and end-trimming test clips

https://people.xiph.org/~greg/opus_testvectors/

  • opus-trimming-test.mp4
  • opus-trimming-test.ogg
  • opus-trimming-test.webm