问题标签 [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.
android - 合并视频和音频的最佳方法?
我想合并video(.mp4)
,audio(.wav, .pcm)
视频和音频的长度相同。
最好的方法是什么(最快的合并时间)?混合器?ffmpeg?
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 行为,使其不将其写入文件而是写入内存
我知道我觉得自己重复了几次。对于那个很抱歉。
command-line - 在 GStreamer 中混合时,视频比音频快得多
我正在尝试学习录制 X11 windows 的内容来为 Youtube 做游戏截屏。这应该是一个相当微不足道的任务,但它已经吃了一个完整的晚上。现在我已经了解了一些关于混合和排队(使用gst-launch
)的知识,但问题仍然存在:当我将音频和视频混合成 avi 时,视频播放速度比生成文件中的音频快几倍。这意味着视频很快结束并静止,而音频继续在背景中喋喋不休。
这是导致问题的我的过滤器链:
但是,当我只有视频时,问题就消失了,并且以完全正常的速度播放:
如果您纠正我对! queue !
. 哪里需要?在当前设置中,我几乎从未收到样本被丢弃的警告。
更新:我更喜欢使用 mp4 muxer,但它会产生缺少 moov atom 的无法播放的文件。Youtube 建议把它放在文件的开头,我可以用 mp4 muxer 强制它吗?
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 中使用这些类,我们可以这样写:
编译上面的程序我们可以执行如下:
然后我得到这个:
我使用命令行中的 ffmpeg 检查我的源 h264 流文件是否已损坏。所以我运行了以下内容:
使用 ffmpeg 的结果是好的:
我把我测试的视频和完整的源代码放在这里。
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()
内容以及如果我这样做如何更改代码?到目前为止我已经尝试过了
但不工作,我很难让它工作。
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 是否可以处理解密?如果是这样,我应该在哪里通过key
和iv
选择?
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)必须延迟一段时间才能显示视频。
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
(粉红色文字)
batch-processing - 在批处理脚本中过滤字符串中的单词
我为用于 mux mkv 文件的 Windows 创建了一个批处理脚本。启动此命令时:
输出是:
如何仅过滤和打印数字“3”并将其放入变量中?
h.264 - h264 流复用:结果文件的持续时间短于录制时间
我正在使用以下stackoverflow 问题中概述的方法将 H264 流从 v4l 设备混合到 avi 容器
生成的文件是可播放的,但对于(比如说)30 秒的录制,生成的文件只有 10 秒的长度。换句话说,一旦我按下“开始录制”按钮直到我按下“停止”录制,它已经过去了 30 秒,但文件只有 10 秒的长度(如 Windows Media player 所示)。按下“开始录制”按钮后,Muxing 立即开始。
关于如何解决这个问题的任何想法?