问题标签 [mp4box]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
batch-file - 从命令行 MP4Box 添加字幕
我正在使用 MP4Box 将字幕文件添加到视频中。以下命令可以从命令行完美运行:
但是,我真正想做的是将命令放入 .bat 文件中。以下是我在批处理文件中的命令:
如您所见,我试图将“-add c:/test.m4v#video -add c:/test_en.srt:hdlr=sbtl:lang=en:group=2:layer=-1”作为第四个传递范围。我想这样做的原因是可能会添加许多字幕文件:
"-add c:/test.m4v#video -add c:/test_en.srt:hdlr=sbtl:lang=en:group=2:layer=-1 -add c:/test.m4v#video -add c: /test_ja.srt:hdlr=sbtl:lang=ja:group=2:layer=-1:disabled"
所以我不提前知道需要多少个 -add 命令,所以我只想将它们全部作为一个参数传递。但是,mp4box 不喜欢这样。
我不确定这是否是 mp4box 或批处理文件参数的限制。
streaming - 如何使用 MP4Box 创建 mpd 文件
我是这个 GPAC 的 MP4Box 工具的新手。使用它我们可以为 DASH 创建 MPD(媒体演示描述)文件。我不知道该怎么做。
有没有人使用此工具为视频文件创建 MPD?
mp4 - MP4Box MP4 连接不起作用
我从 Udacity 下载 mp4 格式的讲座,但它们通常被分成 2-5 分钟的块。我想将每个讲座的视频合并成一个连续的流,我在 Windows 上使用 AnyVideo Converter 取得了成功。我正在尝试在 Ubuntu 15 上做同样的事情,我的大部分网络搜索结果都建议使用 MP4Box,它的文档和我能找到的所有在线示例都提供以下语法:
这将创建一个带有工作音频的新文件,但视频不起作用。当我使用 Ubuntu 的本机视频播放器打开时,我收到错误“在流结束之前没有解码有效帧”。当我使用 VLC 打开时,我收到错误“不支持编解码器:VLC 无法解码格式 'avc3'(没有此编解码器的描述。”我也尝试过使用该-keepsys
开关,但我得到了相同的结果。
所有的文档和在线讨论听起来好像我正在尝试做的是并且应该非常简单,但我似乎无法找到与我遇到的特定错误相关的信息。我错过了什么?
shell - MP4Box shell 脚本不工作
我正在尝试使用 MP4Box 连接目录中的多个 .mp4 文件。简单形式的基本命令如下所示:
我制作了这个脚本,但它不起作用:
它只是给出:
我的表达有什么问题?
我解决了:
ffmpeg - 创建 MPEG-DASH 初始化段
我希望在 HLS 和 MPEG Dash 之间进行转换。我不访问原始的完全连接的视频文件,只访问单独的 HLS 片段。
在对 MPEG Dash 进行这种转换时,我需要为 Dash manifest .mpd 文件提供一个初始化段。
我的问题是:
- Dash 视频初始化段的结构是什么?
- 如何在不需要原始完整文件的情况下生成/创建一个?
也许解决方案将涉及MP4Box
将“.ts”HLS 段转换为自初始化的 Dash“.m4s”段,但我不确定如何解决这个问题?
任何想法都非常感谢。
非常感谢。
更新:片段使用原始 hls 段进行流式传输。视频一直播放,但只是黑色。
video - 是否可以使用 MPEG-DASH 流式传输多帧率视频?
我将 mp4 视频转码为 5FPS、10FPS .. 30FPS 等多种帧率,并使用 MP4Box 将它们分段以在 DASH IF 播放器中播放。
FFMPEG 命令生成具有相同分辨率的多帧率视频:
ffmpeg -i fball.mp4 -f mp4 -vcodec libx264 -profile:v high -vf scale=1280:-1 -b:v 2000k -minrate 2000k -maxrate 2000k -bufsize 2000k -nal-hrd cbr -g 120 -keyint_min 120 -r 60.0 -flags +cgop -sc_threshold 0 -pix_fmt yuv420p -threads 0 -x264opts keyint=120:min-keyint=120:sps-id=1 -an -y fball_720p_60fps.mp4
ffmpeg -i fball.mp4 -f mp4 -vcodec libx264 -profile:v high -vf scale=1280:-1 -b:v 1000k -minrate 1000k -maxrate 1000k -bufsize 1000k -nal-hrd cbr -g 60 -keyint_min 60 -r 30.0 -flags +cgop -sc_threshold 0 -pix_fmt yuv420p -threads 0 -x264opts keyint=60:min-keyint=60:sps-id=1 -an -y fball_720p_30fps.mp4
FFMPEG 命令提取音频:
ffmpeg -i fball.mp4 -acodec aac -b:a 128k -vn -strict -2 -y fball_audio.mp4
用于分段的 MP4Box 命令:
MP4Box -frag 2000 -dash 2000 -rap -base-url ./segments/ -profile main -segment-name /segments/%s_ -out dash/fball_dash.mpd fball_720p_24fps.mp4 fball_720p_30fps.mp4 fball_720p_60fps.mp4 fball_audio.mp4
分段持续时间:2 秒
GOP 长度:片段持续时间 x 视频的 FPS
分辨率:所有视频均为 720p
结果是视频解码错误或在切换帧率时停止。
我在转码时犯了任何错误吗?是否可以使用 MPEG DASH 流式传输多帧率视频?
ffmpeg - 使用 MP4Box (MPEG DASH) 创建的不同音频和视频片段的单个清单文件
我有三个问题
1) dash.js 是否支持在单个段中复用音频和视频内容?
2) 如果不是如何将使用 MP4Box 创建的 audio.mpd 和 video.mpd 合并到一个 out.mpd 中,那是 dash.js 播放器支持的?
3) 如果 AdaptationSet 是从 audio.mpd 中手动复制并放置在 video.mpd 中并且使用 dash.js 播放 video.mpd 时,它可以工作。如何实现自动化?
dash.js - 在 dash.js 中同时播放 audio.mpd 和 video.mpd
对于 MPEG DASH 流,我有 audio.mpd 和 video.mpd 分别用于使用以下命令生成的 video.mp4 文件。
每个 mpd 在 dash.js 中单独播放。是否可以使用 dash.js 一起播放它们?
或者有什么方法可以使用 MP4Box 合并两者?
video - MP4Box 同时设置了init 和segment-name?
我想这样指定我的段名称:
我的初始化文件为$RepresentationID$/play.mp4
我试过这些:
这会生成段(初始值将是段_.m4s)
我想我想将 init 文件重命名为 init.mp4
根据:
https://gpac.wp.mines-telecom.fr/mp4box/dash/
我可以像这样使用 $Init=play.mp4$
但是这些段只是命名为 1-118
即使我输入 mp4box -h dash,也没有关于组合这些的信息。
我想要实现的是文件夹 video_hd 中的 play.mp4 和段 segment_%d.m4s
分段已经很好用了,所以我不需要帮助,但我认为 init 文件被称为 segment_.m4s 有点难看
我一直在为此苦苦挣扎,在此先感谢!
video-streaming - 当用户寻找另一个时间时,计算 HTML5 视频流中的 .m4s 段文件后缀
我使用 Mp4Box 为长 MP4 视频创建了固定长度的片段。Mp4Box 创建一个元信息文件mv_init.mp4
和片段,如mv_1.m4s
, mv_2.m4s
, ... 我使用 HTML5 Media Source Extensions 流式传输视频并且流式传输工作正常。
问题是我无法利用 HTML5 播放器的时间搜索功能。当用户使用搜索栏寻找另一个时间点时,我需要为此获取正确的段文件 ( mv_{number}.m4s
) currentTime
。
例如:
- 视频时长:2小时
- 分段大小:10 秒
- 用户寻求时间:25分钟
25 分钟 = 25 × 60 秒 = 1500 秒。由于每个段为 10 秒,我需要段号 1500 / 10 = 150。所需的段文件是mv_150.m4s
.
计算显然看起来是正确的,但是 HTML5 播放器在继续流式传输之前会下载更多文件mv_150.m4s
。
如何正确计算段文件数,使查找后流式传输流畅,无需下载任何额外文件?
为了创建 MP4 视频的片段,我使用了以下命令: