From e4be7178fa2e81add72a7d5b93149a2cd821eb06 Mon Sep 17 00:00:00 2001 From: "SmallChi(Koike)" <564952747@qq.com> Date: Sat, 27 Mar 2021 18:17:46 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B0=861078=E8=BD=ACfmp4=5F9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/ffmpeginfo.txt | 2 + doc/video/fragmented_base_moof_demo.mp4 | Bin 0 -> 2178141 bytes src/JT1078.FMp4.Test/H264/index.html | 49 ++++--- src/JT1078.FMp4.Test/H264/mux.min.js | 2 + src/JT1078.FMp4.Test/JT1078ToFMp4Box_Test.cs | 6 +- .../Boxs/SampleDependencyTypeBox.cs | 18 +-- src/JT1078.FMp4/Boxs/SegmentTypeBox.cs | 51 +++++++ src/JT1078.FMp4/FMp4Encoder.cs | 138 +++++++++++++----- src/JT1078.FMp4/JT1078.FMp4.xml | 30 +++- .../Services/ToWebSocketService.cs | 50 +++++-- src/JT1078.SignalR.Test/Services/WsSession.cs | 5 + 11 files changed, 262 insertions(+), 89 deletions(-) create mode 100644 doc/video/fragmented_base_moof_demo.mp4 create mode 100644 src/JT1078.FMp4.Test/H264/mux.min.js create mode 100644 src/JT1078.FMp4/Boxs/SegmentTypeBox.cs diff --git a/doc/ffmpeginfo.txt b/doc/ffmpeginfo.txt index f11e1e7..d4abafe 100644 --- a/doc/ffmpeginfo.txt +++ b/doc/ffmpeginfo.txt @@ -8,4 +8,6 @@ ffmpeg -i demo.264 -vcodec copy -f mp4 -movflags frag_keyframe+empty_moov fragme ffmpeg -i ipc.264 -vcodec copy -f mp4 -movflags frag_keyframe+empty_moov ipc_fragmented_demo.mp4 +ffmpeg -i jt1078_3.h264 -c:v copy -f mp4 -movflags empty_moov+default_base_moof+frag_keyframe fragmented_base_moof_demo.mp4 + chrome://media-internals/ \ No newline at end of file diff --git a/doc/video/fragmented_base_moof_demo.mp4 b/doc/video/fragmented_base_moof_demo.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..fde22ba7df70ca6f2c288ab0b7be468910ee8ee4 GIT binary patch literal 2178141 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
  • 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