标签: dvb

强制Mpeg2Demultiplexer使用ffdshow渲染H264数字电视视频

我花了很多时间试图让DTVViewer的DirectShow样本工作不幸,但没有成功.DVBT网络的视频格式是H264,我发现IntelliConnect行为IFilterGraph更喜欢使用Mpeg2视频格式.

对于那些想要查看代码的人来说,就是这样.如果你对DirectShow一无所知我分享了我对这段代码的经验.最可能的问题在本教程的第5步和第6步中描述.

  • 连接过滤器的辅助函数代码:

    public static void UnsafeConnectFilters(IFilterGraph2 graph, IBaseFilter source, IBaseFilter dest, Func<AMMediaType, bool> sourceMediaPredicate=null, Func<AMMediaType, bool> destMediaPredicate=null) {
        foreach(IPin spin in IteratePinsByDirection(source, PinDirection.Output)) {
            if(IsConnected(spin))
                continue;
            int fetched;
            AMMediaType[] sourceTypes=GetMajorType(spin, out fetched);
            if(fetched>0) {
                Guid sourceType=sourceTypes[0].majorType;
                try {
                    if(sourceMediaPredicate!=null&&!sourceMediaPredicate(sourceTypes[0]))
                        continue;
                    foreach(IPin pin in IteratePinsByDirection(dest, PinDirection.Input)) {
                        if(IsConnected(pin))
                            continue;
                        var types=GetMajorType(pin, out fetched);
                        try {
                            if(fetched>0) {
                                Guid destType=types[0].majorType;
                                if(destMediaPredicate!=null&&!destMediaPredicate(types[0]))
                                    continue;
                                if(sourceType==destType) {
                                    spin.Connect(pin, types[0]);
                                    return;
                                }
                            }
                            else {
                                spin.Connect(pin, sourceTypes[0]);
                                return;
                            }
                        }
                        finally …
    Run Code Online (Sandbox Code Playgroud)

.net c# directshow h.264 dvb

22
推荐指数
1
解决办法
2420
查看次数

MPEG-TS编码

我有一个文件,我需要转换为MPEG-TS,以便它符合以下规范:

基本流比特率[kbit/s]视频:2575音频:2 x 192字幕: - PAT/PMT: - 填充: -

分量TS比特率[kbit/s]视频:2652音频:395字幕:45 PAT/PMT:45填充:62总计:3200 CBR

其他必需组件:PAT PMT空包

可能弹出的组件:NIT,SDT,EIT等.

vcodec="h264"
acodec="mpga"
bitrate="2500"
arate="192"
samplerate=48000
ext="mpg"
mux="ts"
vlc="/usr/bin/vlc"
fmt="mpg"
dst="/home/adam/test/"

for a in *$fmt; do
$vlc -I dummy -vvv "/home/adam/test/" --sout "#transcode{vcodec=$vcodec,venc=x264{profile=main,level=3.0,hrd=cbr,bframes=2},vb=$bitrate,acodec=$acodec,ab=$arate,samplerate=$samplerate,channels=2}:standard{mux=$mux,dst=\"$dst$a.$ext\",ac$
done
Run Code Online (Sandbox Code Playgroud)

使用上面的脚本编码后,一切似乎都可以(视频和音频比特率编解码器都是常量)除了两件事:容器的比特率也应该保留CBR但事实并非如此.此外,填充组件(0x1 ffff) - 缺少空数据包.您是否可以更正脚本以使空数据包以及容器的比特率恒定(3,2 Mbps CBR)?

第二个选项是使用ffmpeg进行编码:

ffmpeg -i video_input.mpg -i audio_input.mp2 -acodec copy -tune zerolatency -x264opts bitrate=2600:vbv-maxrate=2600:vbv-bufsize=166:nal_hrd=cbr -vpre libx264-iptv -vcodec libx264 -f mpegts -muxrate 3200K -y output.ts
Run Code Online (Sandbox Code Playgroud)

但如何取消/禁用/删除SDT表?

encoding vlc video-streaming mpeg2-ts dvb

10
推荐指数
1
解决办法
2万
查看次数

在机顶盒中使用dvb三联体有什么用?

我看到识别服务的方式是通过DVB三元组.DVB三联体是如何形成的,以及它如何保证独特?

dvb

6
推荐指数
1
解决办法
4062
查看次数

ffmpeg 实时转码更快的替代方案?

是否有任何开源替代品ffmpeg,并VLC以实时视频转码,从HTTP数据流将RTMP或其他?

ffmpeg 导致我的 CPU(AMD 4.0GHZ 8Core)100% 加载,只有 8 个 SD 流。

感谢帮助。

附注。我想我不需要转码我的视频,我也可以使用 http 视频代理之类的东西进行流式传输。源是 HTTP 流格式,我也在 Linux 下。

linux streaming ffmpeg dvb

5
推荐指数
1
解决办法
6661
查看次数

设置.xml以在AutoCAD启动时加载.dvb插件

我正在尝试设置一个.bundle文件夹来加载我为AutoCAD设计的一系列插件.其中一个插件是.dvb文件,所以在PackageContents.xml中我有以下XML代码

    <ComponentEntry AppName = "" Version = "2014.1" ModuleName = "./Contents/Windows/WindowsDoors.dvb" AppDescription = "" PerDocument ="True" LoadOnAutoCADStartup="True">
      <Commands>
        <Command Local="CSC" Global="CAD_STANDARD_CREATOR" />
        <Command Local="CSB" Global="CAD_STANDARD_BLOCK" />
        <Command Local="CSP" Global="CAD_STANDARD_PATH" />
      </Commands>
    </ComponentEntry>
Run Code Online (Sandbox Code Playgroud)

当我启动AutoCAD并尝试运行相应的插件时,命令行告诉我

Command: -vbarun
Macro name: RunMeWindowDoor
Macro not found.
Run Code Online (Sandbox Code Playgroud)

看来AutoCAD没有找到宏,即使我告诉XML文件加载它,我也无法弄清楚错误的原因是什么.

xml autocad dvb

5
推荐指数
1
解决办法
583
查看次数

为什么Viterbi和Reed-Solomon都用于DVB-T?

根据我的理解,DVB-T数据包通过两个FEC系统,即Viterbi,数据丢失高达50%,RS,数据丢失高达10%.这些被称为外部和内部编码.

我无法理解第二次RS编码的需要(在这种情况下,188字节长的MPEG-TS数据包又增加了20个字节).

更具体地说,损坏的数据包会发生什么,例如55%?维特比解码器是否修复了50%的错误,而RS的剩余5%错误是固定的?

对不起我的傻瓜.

viterbi reed-solomon dvb

5
推荐指数
1
解决办法
1378
查看次数

FFMPEG:如何保持UDP流连接打开甚至源掉一分钟

我解码UDP使用流(从DVB信号genrate)FFMPEGHLS与此代码:

ffmpeg -i udp://239.1.2.1:60001?fifo_size=50000000 -acodec copy -vcodec copy -hls_time 2 -hls_wrap 5 -f hls /var/www/html/ts/1.m3u8
Run Code Online (Sandbox Code Playgroud)

有时DVB信号下降一秒钟或一分钟,导致ffmpeg停止编码并显示错误:

udp://239.1.2.1:60001: Connection timed out
Run Code Online (Sandbox Code Playgroud)

当我在VLC播放器中播放udp且输入流下降了一些第二个VLC时,请停止播放,当流重新开始时再次播放。

现在我想知道是否存在一种ffmpeg要么发现流停止并且不显示超时错误的方法...这意味着FFMPEG保持连接打开并每次从源启动每次等待接收流。谢谢

udp ffmpeg vlc video-streaming dvb

4
推荐指数
1
解决办法
7462
查看次数

ATSC数字广播

我不知道我需要问哪个标签这个问题.我目前正在研究数字电视广播的ATSC标准.在浏览内容时我有疑虑.在数字电视广播中,单个带宽将包含多个频道(服务).

由广播公司编码和多路复用的数据称为传输流.

传输流由标头和有效负载组成.标题包括音频基本流或视频基本流或数据基本流的PID.该传输流由包含中间件的机顶盒接收,该中间件解析传输流并将数据放入PAT,PMT,EIT,ETT,SDT,NIT,CAT表中.

是否可以使用PSI表而不是ATSC表?

mpeg mpeg-2 transport-stream mpeg2-ts dvb

2
推荐指数
1
解决办法
1711
查看次数

dvb:是否可以在一个188字节的数据包中包含音频和视频?

对我来说这是不可能的.但我不能太确定.有人可以证实这一点吗?如果有可能,怎么样?

谢谢

dvb

1
推荐指数
1
解决办法
148
查看次数