问题标签 [muxer]

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 回答
3288 浏览

java - Android MediaMuxer java.lang.IllegalStateException:无法停止复用器

我正在使用这个库从 USB 摄像头录制视频。我使用的代码如下:

视频录制大部分时间都有效,但有时会引发异常。以下是 logcat 的输出:

有任何想法吗?

0 投票
0 回答
524 浏览

node.js - 如何在 node.js 中复用(拦截)网络(tcp)套接字?

我想查看网络套接字连接的第一个数据包的标头,然后从那里决定如何处理它。

TCP 示例(有效,但无用)

这是没用的,因为它不能解决我的问题,它只是证明,理论上,问题是可以解决的。

TLS 示例(不起作用)

这是我实际上正在尝试做的,但不起作用:

我尝试过手动发出readable事件以及data使用块和resumeing 手动发出事件,但它似乎在所有这些情况下都挂起,而不是像上面的示例那样工作。

0 投票
1 回答
1297 浏览

bash - 在 Bash 中一次循环两个变量

我在一个目录中有两种具有相同文件名的文件类型:

我需要创建一个循环来一次处理一对文件(file1.ts + file1.ec3)。然后需要用第二对(file2.ts + file2.ec3)重新启动循环。

这是我的代码:

但是当第一个周期结束时,它会尝试处理 file1.ts + file2.ec3 并停止一切......

我怎样才能让它正常工作?

0 投票
1 回答
322 浏览

ffmpeg - ts nalu to mp4 mdat 似乎既不包含 nalu 也不包含 avcc

我创建了一个 java 程序来解析 mp4 和 ts 段。我将带有 ffmpeg 的 ts 片段混合到 mp4 中。我试图理解为什么 ffmpeg 以这种方式形成 mdat。

以下是从 TS-PES 中提取的原始 4 NALU 十六进制,按起始码排序(图 1):

根据我的解析器(图 2),这些看起来像合法的NALU

然后,由 SampleTableBox 分块的我的复用 mp4 mdat 包含这个十六进制数据,按看起来像畸形NALU 的排序(图 3):

请注意 ITU-T H264 7.4.1 中上述数据的简写参考:

另请注意,有效载荷是相同的。

我认为 mp4 是正确的,因为它在任何播放器中都能正常工作。但我不确定 mdat muxing 对 NALU 起始代码做了什么。我对此有点陌生,很难弄清楚为什么会这样。

它们看起来不像 NALU,因为起始代码不以 01 结尾。

有人建议它们是 AvcC (ISO/IEC 14996-15 5.2.4.1.1),但每个数据集中的第一个字节以 00 开头,如 NALU,并且不会通过 configurationVersion 测试(第一个字节 01)。

我想知道在这种情况下如何指定 mdat。如果有人能指出我正确的方向或无可辩驳的著作,那将不胜感激。谢谢!

0 投票
1 回答
1600 浏览

android - MediaMuxer 有时会导致黑色视频

我正在使用 AndroidEncoder 生成带有 AAC 音频的 H264 视频,我通过 RTMP 网络发送并使用 MediaMuxer 在本地存储在 MP4 文件中。

广播在 RTMP 上运行良好,但是当在本地保存时,生成的视频有时还可以,有时它只是带有声音的黑帧(或只是带有一些信息块的第一部分帧),有时它首先播放音频,然后是视频具有随机 FPS 速度。

这是我的 Muxer 包装类和 MPEG4Writer SDK 类显示的输出:

并不是说虽然本地保存的视频不好,但相同素材的实时流(由相同的编码过程产生)很好,所以问题一定出在复用器本身(或者更准确地说,在我处理它的方式上) )。

这是我的 Muxer Wrapper(深受 bigflake 的媒体编解码器样本的启发):

请注意,RTMP muxer 和 Local muxer 可能不会同时开始工作,这就是为什么我存储媒体信息,然后仅在用户请求启动 muxer 时使用它。

0 投票
0 回答
1049 浏览

audio - 多输出 ffmpeg 的 Tee 伪多路复用器命令行适用于 mp4 输出和流 udp 单播?

我正在使用 ffmpeg 命令行通过 tee 伪复用器获取多个输出。我尝试过的命令:

案例 1-在 mp4 中将视频 ( video.h264) 与音频 ( audio.aac) 混合并将 mpegts 发送到 udp 单播地址:

输出 1:生成的 mp4 文件没有音频,播放时的 udp 流也没有音频。

案例 2-在 mpegts 文件中video.h26使用音频 ( )混合视频 ( 4) 并将 mpegts 发送到 udp 单播地址:audio.aac

输出 2:生成的 mpegts 文件很好,播放时的 udp 流也有音频。没有问题。

我必须做案例 1,我可以复用 aac 和 h264 并获得两个输出,一个是 mp4 文件转储,第二个是流 mpegts udp 单播(如 udp://127.0.0.1:2211)。并且两个输出都应该有视频+音频。

谁能告诉我为什么在案例 1 中输出文件没有音频?

0 投票
0 回答
1771 浏览

c++ - 使用 ffmpeg 进行音频/视频编码

使用 ffmpeg 进行音频/视频编码:

我正在尝试使用 ffmpeg 创建一个带有编码视频和音频的 avi 文件。

首先,我创建文件:

缓冲区初始化为:

然后添加音频和视频流(音频:CODEC_ID_PCM_S16LE,16000 kb/s 和 44100 Hz,视频:PIX_FMT_YUV420P)

最后,我交替调用 encodeVideo/encodeAudio 以在特定录制时间(pts)对视频和 PCM 音频帧进行编码:

结果是一个不错的视频,后面有一些音频(或者是定期发出的哔哔声,但比视频更早结束,或者是持续时间比视频短的连续较长的声音)。

每次调用函数 encodeAudio() 时,我想以不规则的间隔生成哔声。我尝试修改采样率、缓冲区大小、pkt 大小和样本数,但没有任何成功。我也尝试在不同的时间设置积分,但它并没有让我到达我想去的地方。有人可以帮忙吗?

0 投票
0 回答
266 浏览

video - ffmpeg 创建的 HLS 流每 5 秒暂停一次

我在重新混合 H264/AAC 编码文件时遇到问题。服务器上有一个带有 H264 编码视频和 AAC 音频的文件(例如:input_video.mp4)。每 5 秒视频存在一个 I 帧。它由 ffmpeg 拆分器/复用器应用程序读取,该应用程序将其拆分并复用为 5 秒的视频剪辑,然后通过 HLS 协议发送到客户端。

在客户端播放器上播放时,每 5 秒会有短暂的停顿。仅当使用高于 2.4 的 ffmpeg 时才会出现此问题,因此如果使用 ffmpeg pre 2.4.x(例如,2.0.8),则创建的视频可以正常播放。

我查看了https://github.com/FFmpeg/FFmpeg/blob/master/Changeloghttps://github.com/FFmpeg/FFmpeg/blob/master/doc/APIchanges以发现拆分器/复用器中的变化,但不能'找不到相关信息。

如果您有类似的问题并解决了它或知道是什么原因导致此问题,请给出答案或提示。

0 投票
1 回答
448 浏览

encoding - 用C++代码编写FFMPEG的Tee Pseudo muxer

有没有人知道如何通过 c++ 代码使用ffmpeg的Tee 伪复用器。请指导这样做。我正在努力获取多路复用传输流 (ts) 数据的多个输出。我能够在 ts 中复用 aac 和 h264。但我必须在多个输出中获取多路复用的 ts 数据。

因此,如果有人知道如何使用Tee 伪 muxer进行操作,请指导我。

0 投票
2 回答
3879 浏览

c++ - 使用 ffmpeg-lib 实现一个简单的 MPEG-TS 复用器

我有一个应用程序可以记录存储在缓冲区中的 LPCM 中的原始音频数据。我想将数据封装在传输流中,并通过 UDP 将该传输流发送到另一台主机上的流分段器(根据 HTTP Live Streaming 规范)。

FFmpeg 提供了一个命令行实用程序来执行此操作,但使用文件作为输入 ffmpeg -re -i output.aac -acodec copy -f mpegts udp://127.0.0.1:5555

我的第一个想法是使用 FFmpeg API,尤其是libavformat库。libavformat 是否提供了一个复用器,可用于将 LPCM 中的音频封装到传输流中,还是我必须从头开始实现它?

我找到了这个源代码https://github.com/FFmpeg/FFmpeg/blob/master/libavformat/mpegts.c但我不确定它是否真的符合我的要求。

谢谢你的帮助,