问题标签 [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.

0 投票
0 回答
267 浏览

javascript - Video.js 直播设置:帮助请求

我正在使用 mpeg dash 在 mp4box 和 dash.js 之间进行直播。当用户暂停太长时间播放头试图读取缓冲区已经通过的点时,客户端会出现问题。我找不到没有播放暂停或搜索栏的实时皮肤,实际上我尝试使用 video.js 自定义界面,我使用标准配置,而 css 配置没有给我我需要的东西,我希望知道是否有一种简单的开源方式来显示直播。非常感谢,马西莫

0 投票
1 回答
1281 浏览

ffmpeg - 修剪 H264 视频并在 MP4 中换行,无需重新编码

所以我有一个 Raspberry Pi 应用程序,可以记录车载摄像头的输出。这些文件被记录为 H264。用户按下按钮后,我想使用 OMXPlayer 显示该视频的一部分。OMXPlayer 总是需要一个 MP4 容器(它总是忽略 FPS)。

我不想将整个 H264 包装成 MP4,因为这需要太多时间。

我的解决方案是修剪最后 30 秒并放入 MP4 容器中。我可以在先将 H264 的全部内容复制到 MP4 的情况下一步完成吗?

我不想重新编码,我正在寻找可能的最快操作。

0 投票
1 回答
944 浏览

mp4 - 每个关键帧中带有标题的 MP4 片段

我正在尝试在分段文件(styp)的 mp4 容器中找到 h264 帧。对于分段,我目前正在使用 MP4Box dash。我使用了 MP4Box 解析器,我注意到在每个关键帧(IDR)中,样本的大小与原始文件中同一帧的大小不同。我计算了差异,对于其他段中的同一文件,它总是 37 字节。

在此处输入图像描述

这些字节代表什么?它们仅出现在每个关键帧之前的分段 mp4 文件类型中。我用其他文件进行了测试,这些字节的数量略有不同(其他文件是 39 字节)并且不是相同的数据(尽管它们共享一些字节模式)。这是来自 mp4 标准或 H264 甚至 MP4Box 的东西吗?我没有头绪。

0 投票
1 回答
588 浏览

video-streaming - 如何使用 MP4Box 创建 TS mpeg dash

我正在尝试使用 MP4Box 使用 TS 配置文件创建 mpeg dash 文件。我尝试了以下命令:

它会生成在清单文件中检查的完整配置文件。MP4Box 是否支持创建 TS 段?

0 投票
1 回答
5351 浏览

ffmpeg - 将 m3u8 (HLS) 转换为 mpd (MPEG-DASH)

我有 HLS 的实时流 [ https://82-80-192-30.vidnt.com/ipbc_IPBCchannel11LVMRepeat/definst/IPBCchannel11LVM_3.stream/playlist.m3u8 ] ,我想将其转换为 MPEG-DASH。

最佳做法是什么?

流已经是 h264 aac,因此我知道我不需要重新编码,我只需要 transmux。

我应该使用什么?ffmpeg?mp4 盒子?

笔记:

  1. 我使用 nginx-rtmp-module ( https://github.com/ut0mt8/nginx-rtmp-module/ ) 以便根据本教程从 RTMP 流创建 DASH:https ://isrv.pw/html5-live- streaming-with-mpeg-dash 但是 nginx-rtmp-module 可以只获取 rtmp 流作为输入,并且它不适用于 HLS 流。

  2. 我使用 ffmpeg 从 m3u8 创建破折号,如下所示:

    ffmpeg -i https://82-80-192-30.vidnt.com/ipbc_IPBCchannel11LVMRepeat/_definst_/IPBCchannel11LVM_3.stream/playlist.m3u8 -strict -2 -min_seg_duration 2000 -window_size 5 -extra_window_size 5 -use_template 1 -use_timeline 1 -f dash out.mpd

但这是非常有限的。我无法控制分段持续时间。ffmpeg的min_seg_duration参数对我来说不是很好,而且它可以设置最小持续时间,而我想限制每个片段的最大持续时间(片段出来〜10秒,而我需要它是〜2- 4 秒,因为我正在现场演奏)。

0 投票
0 回答
1619 浏览

python - Python 3 通过 MP4Box 生成 MP4 文件

我彻底检查了我的代码以使用 popen,但仍然没有获得新的 MP4 文件。

如果我在终端 MP4Box 中手动输入它。

但是当我运行下面的代码时,它不会引发任何错误。所以我很困惑什么不起作用。

这两个定义用于 tkinter GUI 按钮。

0 投票
1 回答
1104 浏览

ffmpeg - 如何在 JPEG 中编码 HEVC 平铺?

我正在尝试将 HEIF 文件转换为 JPEG 文件,我使用 MP4Box 提取 HEIC 图像图块,但是当使用 FFMPEG 将这些图块转换为 JPEG 时,我得到了:

SAKATA-INX:desktop stellar$ MP4Box -dump-item 1:path=item1.hevc still_rear.HEIC

不支持 ICC 颜色配置文件 不支持 ICC 颜色配置文件

SAKATA-INX:desktop stellar$ ffmpeg -i item1.hevc -frames:v 1 -vsync vfr -q:v 1 -an test.jpg

ffmpeg 版本 4.0 版权所有 (c) 2000-2018 FFmpeg 开发人员使用 Apple LLVM 版本 9.1.0 (clang-902.0.39.1) 构建

配置: --prefix=/usr/local/Cellar/ffmpeg/4.0 --enable-shared --enable-pthreads --enable-version3 --enable-hardcoded-tables --enable-avresample --cc=clang -- host-cflags= --host-ldflags= --enable-gpl --enable-libmp3lame --enable-libx264 --enable-libx265 --enable-libxvid --enable-opencl --enable-videotoolbox --disable-lzma

libavutil 56. 14.100 / 56. 14.100

libavcodec 58. 18.100 / 58. 18.100

libavformat 58. 12.100 / 58. 12.100

libav 设备 58. 3.100 / 58. 3.100

libavfilter 7. 16.100 / 7. 16.100

libavresample 4. 0. 0 / 4. 0. 0

libswscale 5. 1.100 / 5. 1.100

libswresample 3. 1.100 / 3. 1.100

libpostproc 55. 1.100 / 55. 1.100

[hevc@0x7fc56e808e00] 格式 hevc 仅检测到低分 1,可能误检测!

[hevc@0x7fc56f800000] 没有找到起始码。

[hevc@0x7fc56f800000] 访问单元中缺少图片

[AVBSFContext @ 0x7fc56e505e00] 未找到起始代码。

item1.hevc:找不到编解码器参数

输入 #0,hevc,来自 'item1.hevc':

持续时间:不适用,比特率:不适用

输出#0,image2,到'test.jpg':

输出文件 #0 不包含任何流

谁能告诉我我该怎么做?

0 投票
2 回答
1777 浏览

windows - 为什么我的 mp4 文件的音频不同步

我在将 wmv 文件转换为 mp4 时遇到问题。我正在使用 x264.exe 这个命令来获取视频流

x264 --output temporal.264 --fps 25 --preset slow --bitrate 2048 --vbv-maxrate 2048 --vbv-bufsize 9600 --min-keyint 48 --keyint 48 --scenecut 0 --no-scenecut --pass 1 --video-filter "resize:width=640,height=480" Original.wmv

然后我使用 ffmpeg.exe 用这一行提取音频流:

ffmpeg -i .wmv -acodec libfdk_aac -b:a 32000 temporal.aac

最后我使用 MP4Box 将每个流与这一行合并:

MP4Box -add temporal.264 Final.mp4 MP4Box -add temporal.aac Final.mp4

问题是 final.mp4 音频不同步。它开始很好,但随着时间的推移,它与时间不同步。

我运行这个命令:

MP4Box -info 010004470063PE-10022017083824-2_MultiMedia--1.mp4

我发现两个流的估计时间不同:

命令的输出

* Movie Info * Timescale 600 - 2 tracks Computed Duration 01:00:03.643 - Indicated Duration 01:00:03.643 Fragmented File: no File suitable for progressive download (moov before mdat) File Brand isom - version 1 Compatible brands: isom avc1 Created: GMT Wed Jun 27 16:31:44 2018 Modified: GMT Wed Jun 27 16:31:44 2018 File has root IOD (9 bytes) Scene PL 0xff - Graphics PL 0xff - OD PL 0xff Visual PL: AVC/H264 Profile (0x7f) Audio PL: AAC Profile @ Level 2 (0x29) No streams included in root OD Track # 1 Info - TrackID 1 - TimeScale 25000 Media Duration 00:59:57.520 - Indicated Duration 00:59:57.520 Track has 1 edit lists: track duration is 00:59:57.320 Media Info: Language "Undetermined (und)" - Type "vide:avc1" - 89938 samples Visual Track layout: x=0 y=0 width=640 height=480 MPEG-4 Config: Visual Stream - ObjectTypeIndication 0x21 AVC/H264 Video - Visual Size 640 x 480 AVC Info: 1 SPS - 1 PPS - Profile Main @ Level 3 NAL Unit length bits: 32 Chroma format YUV 4:2:0 - Luma bit depth 8 - chroma bit depth 8 SPS#1 hash: 41EE779BEF2AA71A7131EAFD3C77C7E3BC95FD8E PPS#1 hash: 086E1D72A40A0E8CF35D102F34A9DF6CD44D6CEF Self-synchronized RFC6381 Codec Parameters: avc1.4D401E Average GOP length: 250 samples Track # 2 Info - TrackID 2 - TimeScale 44100 Media Duration 01:00:03.644 - Indicated Duration 01:00:03.644 Media Info: Language "Undetermined (und)" - Type "soun:mp4a" - 155196 samples MPEG-4 Config: Audio Stream - ObjectTypeIndication 0x40 MPEG-4 Audio AAC LC - 2 Channel(s) - SampleRate 44100 Synchronized on stream 1 RFC6381 Codec Parameters: mp4a.40.2 All samples are sync

我不支持为什么会发生这种情况,因为原始的 wmv 是完全同步的。有什么帮助吗?

0 投票
1 回答
906 浏览

video-streaming - 将 mp4 曲目转换为没有 ffmpeg 的图像

我正在开发一个 C# 工具来将 mp4 帧提取到图像中。(不使用ffmpeg)

我使用了一个名为 ISO Viewer 2.0.2 的工具,我在 Tracks 选项卡中看到了我所有的 mp4 视频帧(5 秒 145 帧,每帧称为样本)。

ISO 查看器 2.0.2 屏幕截图

在每个帧/样本上,我可以获得数据字节 []。那么它如何将这些数据转换为 C# 中的图像呢?

0 投票
0 回答
125 浏览

video - 更改像素纵横比对播放没有影响

我有一个分辨率为 480x540 的 mp4 视频,我想将其显示为 16:9 但无需重新编码。根据本指南,我尝试使用 MP4Box 设置像素纵横比 (PAR),如下所示:

http://www.komeil.com/blog/change-mp4-aspect-ratio-mp4box

但是,当使用 VLC 或 Windows Media Player 播放文件时,文件仍然无法以 16:9 的纵横比播放,因此设置 PAR 值似乎没有效果。

更改 PAR 值之前的 FFprobe 输出:

Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 480x540, 286 kb/s, 30 fps, 29.97 tbr, 16k tbn, 59.94 tbc (default)

改变 PAR 值后的 FFprobe 输出:

Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 480x540, 286 kb/s, SAR 2:1 DAR 16:9, 30 fps, 29.97 tbr, 16k tbn, 59.94 tbc (default)

有没有其他方法可以“强制”玩家使用容器中编码的 PAR?