问题标签 [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 回答
84 浏览

android - 合并视频和音频的最佳方法?

我想合并video(.mp4)audio(.wav, .pcm)视频和音频的长度相同。

最好的方法是什么(最快的合并时间)?混合器?ffmpeg?

0 投票
1 回答
232 浏览

mp4 - 微软文件接收器 Mpeg4

我有 2 个问题

1)如何将原始数据写入文件沉降器。我正在尝试混音。2)如何确保下沉的数据不是写入文件而是写入内存缓冲区

所以详细地说:

我正在尝试使用 windows MPEG-4 File Sink 将一些 Intel SDK Encoded avc 或 hevc 写入内存并将其发送到 websocket。

什么是正确的方法?

我可以将原始 hevc 或 avc 作为(字节*,长度)提供给 MPEG-4 文件接收器吗?或者我是否需要从 Windows Media Frame 工作中将英特尔编码器包装到自定义 Windows Media Foundation 编码器中(好吧,无论如何我都可以使用 GUID 来获取英特尔编码器)。纠正我如果我错了请。

所以我有 2 个问题,如何将我的原始数据(avc||hevc)写入 MP4 Sinker(由第 3 方编码器编码)

我是否需要实现自定义 Sinker ,以及自定义程度如何。我可以继承 MPEG4 Sinker 的一部分吗(毕竟我不想为 Mp4 重新实现一个完整的容器)

或修改 MPEG4 Sinker 行为,使其不将其写入文件而是写入内存

我知道我觉得自己重复了几次。对于那个很抱歉。

0 投票
1 回答
935 浏览

command-line - 在 GStreamer 中混合时,视频比音频快得多

我正在尝试学习录制 X11 windows 的内容来为 Youtube 做游戏截屏。这应该是一个相当微不足道的任务,但它已经吃了一个完整的晚上。现在我已经了解了一些关于混合和排队(使用gst-launch)的知识,但问题仍然存在:当我将音频和视频混合成 avi 时,视频播放速度比生成文件中的音频快几倍。这意味着视频很快结束并静止,而音频继续在背景中喋喋不休。

这是导致问题的我的过滤器链:

但是,当我只有视频时,问题就消失了,并且以完全正常的速度播放:

如果您纠正我对! queue !. 哪里需要?在当前设置中,我几乎从未收到样本被丢弃的警告。

更新:我更喜欢使用 mp4 muxer,但它会产生缺少 moov atom 的无法播放的文件。Youtube 建议把它放在文件的开头,我可以用 mp4 muxer 强制它吗?

0 投票
1 回答
512 浏览

c++ - 封装 H.264 的 C/C++ FLV 多路复用器未按预期工作

我正在尝试制作 FLV 多路复用器。我开始测试从相机 (c920) 捕获的 h264 流。对 .flv 文件进行编码后,无法正确播放。

首先,我尝试在 h264 中查找 NAL 搜索模式 0x00 0x00 0x00 0x01 ... 但我在互联网上发现有两种模式可以找到 NAL ... 所以我实现了对 0x00 0x00 0x01 和另一个的搜索。 .

在第一次测试中,我发现很少有以四个字节开头的 NAL,但是在更改代码以搜索 3 字节模式后,我发现了很多 NAL...

我在互联网上找到的参考资料显示了使用少数 NAL 类型封装 FLV 文件的代码,但是在更改为检测 3 个字节后,程序发现了很多 NAL,我不知道如何流式传输它们......

一些代码:-)

我正在用 C++ 实现,所以我有这些类。

FLV 作家

h264 解析器:

最后是主要课程:

要在 main 中使用这些类,我们可以这样写:

编译上面的程序我们可以执行如下:

然后我得到这个:

在 vlc 中打开的视频

我使用命令行中的 ffmpeg 检查我的源 h264 流文件是否已损坏。所以我运行了以下内容:

使用 ffmpeg 的结果是好的:

在 vlc 中打开的视频

我把我测试的视频和完整的源代码放在这里

我用于测试的 h264 文件

0 投票
1 回答
2690 浏览

ffmpeg - 如何用 avcodec_send_frame() 和 avcodec_receive_packet() 替换 avcodec_encode_audio2()/avcodec_encode_video2()?

链接中的复用示例中,我尝试使用avcodec_send_frame()andavcodec_receive_packet()而不是avcodec_encode_audio2()/ avcodec_encode_video2(),因为它们已被弃用。在

并且在

got_packet使用avcodec_send_frame()和函数时分配变量的avcodec_receive_packet()内容以及如果我这样做如何更改代码?到目前为止我已经尝试过了

但不工作,我很难让它工作。

0 投票
0 回答
415 浏览

encryption - FFmpeg concat demuxer 和处理加密块

我正在尝试处理包含(可能加密的)HLS 流的远程 m3u8 播放列表。我正在寻找的输出是一个内部带有 MPEG-4 的 mp4 容器。

播放列表是直播结束的结果,可能包含 EXT-X-DISCONTINUITY 标签。据我了解,没有“内置”方式来处理它,实际上,有很多警告,如“输出流中的非单调 DTS”,并且生成的文件总是有一些播放问题。

有几个选项可以“粘合”它。在未加密的流上,我发现concat demuxer可以产生播放问题最少的结果。命令是:

chunks.list类似的东西在哪里:

现在,我正在尝试使用 concat demuxer 来处理加密的块。我已经尝试在不同的地方传递-key-iv选项并更改chunks.list为类似file 'crypto+https...'但它不会获取加密密钥:

文档提到了加密协议的加密选项,所以看起来只是以正确的方式传递这些选项。

当我不使用 concat demuxer 时,我尝试只处理和解密一个块,例如: ffmpeg -i crypto+https://www.example.org/chunk1.ts -key <my_hex_key> -iv <my_iv> chunk1.ts它工作正常。密钥本身没有问题,我可以使用其他工具(openssl 等)对其进行解密。

concat demuxer 是否可以处理解密?如果是这样,我应该在哪里通过keyiv选择?

0 投票
2 回答
835 浏览

ffmpeg - 如何将包含 B 帧且没有 DTS 的视频流写入 MP4 容器?

我想将从 RTSP 源接收到的 h264 视频流保存到 MP4 容器。与其他关于 SO 的问题不同,我面临的挑战是:

  • 该流包含 B 帧。

  • 该流只有 RTP/RTCP 给出的 PTS。

这是我做的代码

我收到了很多这样的错误消息:“应用程序向 muxer 提供了无效的、非单调增加的 dts ...”。

结果:mp4 文件可以通过 VLC 播放,但 FPS 仅为原始 FPS 的一半,并且视频持续时间不正确(VLC 显示一个奇怪的数字)。

那么在发送到容器之前如何设置正确的 DTS 和 PTS 呢?

更新: 我尝试了一些更改,虽然还没有成功,但我发现帧率下降的原因是由于复用器丢弃了具有不正确 DTS 的帧。此外,如果我将 PTS 和 DTS 值设置得太大,一些播放器(如 VLC)必须延迟一段时间才能显示视频。

0 投票
0 回答
1296 浏览

ffmpeg - 支持哪些 ffmpeg rtp_mpegts Muxer 选项?(mpegts Muxer 选项被忽略)

我创建了一个 UDP 流,其中包含-f mpegts一些选项,例如-mpegts_transport_stream_id.

我收到带有“ StreamXpert - 实时流分析器”的流,显示所有选项都在输出中。最后查看我的 ffmpeg 参数和 StreamXpert。

相同的Muxer选项似乎被-f rtp_mpegts.

我试图使用-f mpegts和管道它-f rtp_mpegts喜欢这样:

ffmpeg -i ... -f mpegts pipe: | ffmpeg pipe: -c copy -f rtp_mpegts "rtp://239.1.1.9:1234?pkt_size=1316"

选项仍然被忽略

这张票“使用 RTP_MPEGTS 时对 MPEGTS muxer 的支持选项”也注意到了被忽略的选项。此外,在此评论中,“ thovo ”给出了分析并提出了解决方案。

显然问题仍然存在。有人找到解决方法吗?

我的附加问题:我没有质疑我的项目是否真的需要 rtp。也许我的同事不知道更好,并在 udp 也足够时请求 rtp。

目的是通过 IP 使用 DVB 与电视接收 RTP 流。这是一台成功的松下电视。

第 10 页的 SAT>IP 规范需要 rtp 进行媒体传输

SAT>IP 协议使用:

  • 用于寻址、发现和描述的 UPnP,
  • 用于控制的 RTSP 或 HTTP,
  • 用于媒体传输的RTP或 HTTP。

udp 不在等式吗?


ffmpeg:(所有选项都在输出中-f mpegts

(十六进制到十进制:0x005A= 90, 0x005B= 91 0x005C= 92, 0x005D= 93, 0x005E= 94

StreamXpert输出:

-mpegts_transport_stream_id= Transport Stream ID(黄色文本突出显示)

-mpegts_original_network_id= Original Network ID, onw(绿色文本突出显示)

-mpegts_service_id= Program, service(粉红色文本突出显示)

-mpegts_pmt_start_pid= PMT PID, Table PID(绿松石文本突出显示)

-mpegts_start_pid= PID, PCR PID(红色文本突出显示)

-mpegts_service_type= service type(蓝色文字)

service_name= Service name(橙色文字)

service_provider= Service provider(粉红色文字)

在此处输入图像描述

0 投票
2 回答
205 浏览

batch-processing - 在批处理脚本中过滤字符串中的单词

我为用于 mux mkv 文件的 Windows 创建了一个批处理脚本。启动此命令时:

输出是:

如何仅过滤和打印数字“3”并将其放入变量中?

0 投票
1 回答
36 浏览

h.264 - h264 流复用:结果文件的持续时间短于录制时间

我正在使用以下stackoverflow 问题中概述的方法将 H264 流从 v4l 设备混合到 avi 容器

生成的文件是可播放的,但对于(比如说)30 秒的录制,生成的文件只有 10 秒的长度。换句话说,一旦我按下“开始录制”按钮直到我按下“停止”录制,它已经过去了 30 秒,但文件只有 10 秒的长度(如 Windows Media player 所示)。按下“开始录制”按钮后,Muxing 立即开始。

关于如何解决这个问题的任何想法?