- 13 Aug, 2015 1 commit
-
-
Use native MediaSources for browsers that support them (currently Chrome) and fall back to Flash for everyone else. Seeking doesn't work as well in Flash as it did previously because the improved duration calculations have not been migrated yet but otherwise things seem to work.
David LaPalomento committed
-
- 09 Aug, 2015 1 commit
-
-
- 03 Aug, 2015 2 commits
-
-
Hack in the changes necessary to use the MP2T->MP4 transmuxer and native media source extensions. If you can find a video that is compatible with the current state of the transmuxer, this commit successfully plays back multiple video segments though seeking seems a bit touchy.
David LaPalomento committed -
When a NAL unit had trailing zeroes that were split across pushes to the H264Stream, the parser would go into an infinite loop. Instead, make sure we never advance the parser beyond the current push and advance the sync point to a valid position before starting processing. Add HTML-HLS dependencies to the example page.
David LaPalomento committed
-
- 31 Jul, 2015 36 commits
-
-
Suggest ffmpeg + bento4. ffmpeg by itself produces an invalid esds and I couldn't find the correct set of flags to get mp4box to fragment an mp4 in an MSE-compatible way.
David LaPalomento committed -
Added 16 bytes to the tfhd to specify some default sample configuration so the data offset calculation in the trun must be adjusted to match. Audio now works for my test file. Copy Uint8Arrays used for deepEqual() tests because phantomjs considers two typed arrays with non-equal offsets to be non-equal.
David LaPalomento committed -
Create textifyMp4() to output a text representation of an inspected mp4. It's more concise than straight JSON.stringify() so hopefully it will allow for quicker comparisons between working and transmuxed MP4s.
David LaPalomento committed -
Previously, audio media segments were accepted without error but SourceBuffered.buffered.length was still zero. After this change, the buffered property seems to be read appropriately and no errors are generated but audio is still not output.
David LaPalomento committed -
The generated fragmented mp4 for the audio track can now be appended to a source buffer in Chrome 43 without errors but the buffered duration remains zero after the operation completes. All current tests pass. Sample table entries and mdat contents look consistent with an audio-only, fragmented mp4 generated by ffmpeg though some discrepancies exists in track metadata still.
David LaPalomento committed -
Simplify ADTS parsing algorith to assume it is invoked at the start of a sync sequence. Track progress through the ADTS data accrately so that subsequent events carrying frames after the first are parsed correclty.
David LaPalomento committed -
On the mp4 transmux analyzer page, only present the media segment diff if a working media segment is provided. Similarly, only diff the init segments if a working init segment is provided. This cuts down on output that will always vary because TS files do not have the notion of a separate init segment.
David LaPalomento committed -
Modify the mp4 generator to inspect audio tracks and generate a working initialization segment. Hook the audio init segment up to the mp4 transmuxing test page.
David LaPalomento committed -
Use QUnit's string diff to highlight potential incompatibilities between the transmuxed and expected output.
David LaPalomento committed -
Create a stream that unpacks individual AAC frames into events when piped ADTS data from an Elementary Stream.
David LaPalomento committed -
Include a simple picture of what containers do. Add diagrams that describe the logical structure and object hierarchy of MPEG2-TS.
David LaPalomento committed -
Create PNG versions of the packet hierarchy and logical MPEG2-TS structure.
David LaPalomento committed -
Put together some basic information about how the project works internally and domain info necessary for understanding it.
David LaPalomento committed -
Replace copy-pasted page title with something that reflects the actual MSE demo page.
David LaPalomento committed -
Try to be a bit more descriptive about the purpose and function of individual parts of the transmux pipeline. Prefix the MPEG-2 Transport Stream specific streams with "transport" to indicate their purpose unpacking the TS container. Rename ProgramStream to ElementaryStream so it's less likely to be confused with the MPEG-2 Program Stream container format, instead of the underlying Program Elementary Stream that it's actually associated with. Add more explanatory comments.
David LaPalomento committed -
Profiling showed that trigger was consistently the longest running method during transmuxing. Inline the common case of passing a single argument to avoid slicing the arguments object. Allow grunt-contrib-connect to respond to external requests for easier demoing of mse-demo.html.
David LaPalomento committed -
Create a page that shows the media source extensions-compatible transmuxing process in an actual video element. Only tested in Chrome.
David LaPalomento committed -
Scale sample durations so to match the timescales specified elsewhere in the media segment. Recreate Uint8Arrays for testing so that equality tests pass in phantomjs. Phantom apparently counts typed arrays with different byteOffsets as not equal.
David LaPalomento committed -
Fragmented MP4s expected H264 data in mdats to a sequence of NAL units preceded by their length. MPEG2-TS streams transmit H264 data using start codes to signal the beginning of aNAL. When parsing NALs to build the sample table, reformat them to remove start codes and add length fields. Pulled the video-related program stream parsing into its own stream object because Transmuxer was getting too busy.
David LaPalomento committed -
Look into the contents of mdats and parse out the contained NAL unit types.
David LaPalomento committed -
Write up some basic reminders of valid ways to address samples in a fragmented MP4 when using movie-fragment-relative addressing.
David LaPalomento committed -
-
Working examples of segmented mp4s have included an sdtp box, even though it's duplicative of information in the trun box. It's easy to generate however, so add it to the inspector and generator, and update the transmuxer tests to expect sane output.
David LaPalomento committed -
According to the byte stream format registry, a media segment should contain at least one track fragment decode timestamp box.
David LaPalomento committed -
Parse and generate the sample flags fields. Detect key frames based on NAL unit type. Pass along pts and dts during the parsing process.
David LaPalomento committed -
Output real tfhd info. Prepare trun to accept sample information-- this still needs to be generated properly by the transmuxer.
David LaPalomento committed -
Parse and pass along additional track info from the sequence parameter set.
David LaPalomento committed -
The flags for a tkhd should be the default value of seven (track_enabled, track_in_movie, track_in_preview).
David LaPalomento committed -
Translate compatible brand byte sequences into their string equivalents for ftyp and styp boxes.
David LaPalomento committed
-