浅谈ffmpeg对ps文件格式的转换

ps流是一种很老的视频格式,最早来自于MPEG-1 Program Stream,也就是VCD光碟。由于mpeg1压缩算法早已被淘汰,但封装的协议ps格式被沿用至今。

ffmpeg源码中的ps格式解封装的部分位于源码\libavformat\mpeg.c


AVInputFormat ff_mpegps_demuxer = {
    .name           = "mpeg",
    .long_name      = NULL_IF_CONFIG_SMALL("MPEG-PS (MPEG-2 Program Stream)"),
    .priv_data_size = sizeof(MpegDemuxContext),
    .read_probe     = mpegps_probe,
    .read_header    = mpegps_read_header,
    .read_packet    = mpegps_read_packet,
    .read_timestamp = mpegps_read_dts,
    .flags          = AVFMT_SHOW_IDS | AVFMT_TS_DISCONT,
};

我们如果用命令行解封装时通常是不需要指定格式的,会自动探测出封装的格式。当然如果我们知道要处理的文件格式为PS,可以使用iformat = av_find_input_format("mpeg")获取这种格式。

接下来谈谈如何通过命令行将视频文件格式转换为PS格式。

比如有一个h264 ES流文件,要转成PS文件,命令行可以是这样的:

ffmpeg -i test.h264 -codec copy -f mpeg test.ps

注意这里的封装格式写的是mpeg,写成其他的如vcd,vob,svcd,dvd也能够转换。具体可以查看ffmpeg相应的源码\libavformat\mpegenc.c

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值