我使用Mp4Box为长MP4视频创建了固定长度的片段.Mp4Box创建一个元信息文件mv_init.mp4
和段一样mv_1.m4s
,mv_2.m4s
...我使用HTML5媒体来源扩展流视频和流是否正常工作.
问题是我无法利用我的HTML5播放器的时间寻找功能.当用户使用搜索栏寻找另一个时间点时,我需要为此获取正确的段文件(mv_{number}.m4s
)currentTime
.
例如:
25分钟= 25×60秒= 1500秒.由于每个段都是10秒,我需要段号1500/10 = 150.所需的段文件是mv_150.m4s
.
计算显然是正确的,但HTML5播放器然后在继续流式传输之前下载更多文件mv_150.m4s
.
如何正确计算段文件号,以便在搜索之后,流式传输运行顺畅,无需下载任何额外的文件?
要创建MP4视频的片段,我使用以下命令:
MP4Box -dash 10000 -out video.mpd -dash-profile live -segment-name mv_ -rap video.mp4
Run Code Online (Sandbox Code Playgroud) 我期待在HLS和MPEG Dash之间进行转换.我不访问原始完全连接的视频文件,只访问单个HLS段.
在对MPEG Dash进行此转换时,我需要为Dash清单.mpd文件提供初始化段.
我的问题是:
也许一个解决方案MP4Box
是将'.ts'的HLS段转换为自动初始化的Dash'.m4s'段,但我不确定如何解决这个问题?
任何想法都非常感谢.
非常感谢.
更新:使用原始hls段流式传输的片段.视频一直播放,但只是黑色.
<Representation width="426" height="238" frameRate="25" id="238p 400kbps" bandwidth="400000">
<SegmentList timescale="25000" duration="112500">
<SegmentURL media="video_0_400000/hls/segment_0.ts"/>
<SegmentURL media="video_0_400000/hls/segment_1.ts"/>
<SegmentURL media="video_0_400000/hls/segment_2.ts"/>
</SegmentList>
</Representation>
</AdaptationSet>
Run Code Online (Sandbox Code Playgroud) ffmpeg http-live-streaming adaptive-bitrate mpeg-dash mp4box
我是 GPAC 的 MP4Box 工具的新手。使用它,我们可以为 DASH 创建 MPD(媒体演示描述)文件。我不知道该怎么做。
有人使用此工具为视频文件创建 MPD 吗?
我需要通过将 moov 原子移动到开头来使 mp4 视频符合“流式传输”条件 [视频是由我的应用程序的用户在应用程序中录制的(所以我不知道视频何时会从哪个设备录制)(要发送到我的 Linux 主机)] 。人们推荐 mp4box 用于此目的,但是 mp4box 到底是什么?这些命令是什么?我在哪里输入它们?如何在我的 Android 应用程序中使用该工具?我不知道我是否遗漏了一些明显的东西,但我确实找不到这些基本问题的答案。
编辑:我的意思是: mp4box 、 ffmpeg 等看起来不像“向 gradle 添加依赖项并使用它的类”。根据类似的问题,我可以使用以下命令将 moovatom 放在开头:
'MP4Box -inter 500 原始.mp4 -输出固定.mp4'
实现这个的方法是什么?
我也对其他解决方案持开放态度,例如在服务器端处理它。
自从苹果公司宣布支持分段MP4以来,是否可以为同一段片段(分别用于音频和视频)创建DASH清单(.mpd)和HLS清单(.m3u8)。怎么做?
我试图在分段文件(styp)的mp4容器中找到h264帧.对于分段我目前正在使用MP4Box破折号.我使用了MP4Box解析器,我注意到在每个关键帧(IDR)中,样本的大小不同于原始文件中同一帧的大小.我计算了差异,其他段中的同一文件总是37个字节.
这些字节代表什么?它们仅出现在每个关键帧之前的分段mp4文件类型中.我测试了其他文件,这些字节的数量略有不同(其他文件为39字节)并且不是相同的数据(尽管它们共享一些字节模式).这是来自mp4标准还是H264甚至MP4Box?我没有线索.