我可以下载http://www.w6rz.net/adv8dvbt23.ts
。
并且有很多样本dvbt sample ts files
。
但是,我想将我的视频文件转换为 dvbt的TS 文件。首先,我查了谷歌,但我找不到任何答案。我认为,这没有意义,或者,思维方式可能是错误的。
FFmpeg可以用于这个吗?但是,传输模式、QAM / 64QAB、保护间隔没有任何参数。
FFmpeg可以用于这个吗?但是,传输模式、QAM / 64QAB、保护间隔没有任何参数。
正如我已经解释过的:
ffmpeg 对诸如 Constellation 类型之类的 RF 事物一无所知;它只是一个在不同视频格式之间进行转码的工具。.ts 代表“传输流”,它是 DVB 使用的视频容器格式。另一方面,GNU Radio 传输流程图对视频一无所知——它们所做的只是从文件中获取位。因此,该文件需要采用接收者可以理解的格式,这就是为什么我指示您使用带有所需参数的 FFMPEG。由于我不知道您打算传输哪种比特率,所以我无法帮助您了解如何使用 ffmpeg
因此,您需要生成您的 DVB-T 接收器可以理解的视频数据,但更重要的是,您需要将它们放入确保恒定比特率的容器中。
正如您在 ham.stackexchange.com 关于该主题的问题的不同评论中指出的那样,您的主要示例来源将是 GNU Radio 自己的 gr-dtv 模块;当您查看时gnuradio/gr-dtv/examples/README.dvbt
,您会找到指向https://github.com/drmpeg/dtv-utils的链接,这是 W6RZ 自己的工具 :)
在那里,您将找到计算MPEG 传输流所需的确切流比特率所需的工具。请记住,DVB-T 发射器必须以每秒恒定比特率进行传输,因此您的视频容器必须是恒定比特率的。这就是为什么传输流填充视频数据以实现恒定速率的原因。
然后,您将使用 ffmpeg 对视频进行转码并放入传输流容器中:
ffmpeg -re -i inputvideo.mpeg \
-vcodec mpeg2video \
-s 720x576 #resolution; this is a good choice, since most TVs will deal with it \
-r 25 #frames per second, use 25\
-flags cgop+ilme -sc_threshold 1000000000 #MPEG codec options\
-b:v 2M #Video *codec data* bit rate (defines video quality). Must be lower than stream bit rate, so < muxrate-(audio bitrate)\
-minrate:v 2M -maxrate:v 2M #enforce constant video bit rate\
-acodec mp2 -ac 2 -b:a 192k #audio codec, quality and bitrate\
-muxrate ${RATE FROM TOOL}
-f mpegts #specify you want a MPEG Transport Stream container as output\
outputfile.ts