当前位置: 首页 > news >正文

音视频入门基础:MPEG2-PS专题(2)——使用FFmpeg命令生成ps文件

一、错误的命令

通过FFmpeg命令可以将mp4文件转换为ps文件,PS文件中包含PS流数据。

由于PS流/PS文件对应的FFInputFormat结构为:

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

可以看到上述.p.name = "mpeg",所以理论上通过FFmpeg将mp4文件转换为ps文件的命令为:

./ffmpeg -i input.mp4 -vcodec libx264 -f mpeg video1.ps

通过命令:./ffmpeg -i XXX.ps可以查看生成的媒体文件的信息:

通过vlc也可以直接播放生成的媒体文件,并查看其信息:

通过上述命令似乎生成了一个MPEG2-PS文件,但实际上生成的是一个MPEG-1 系统容器。用Elecard Stream Analyzer工具可以查看到其内部包含的并不是PES流:

二、正确的命令

查阅FFmpeg的在线官方文档:FFmpeg Formats Documentation

可以看到“mpeg”是MPEG1-PS的多路复用器,“vob”才是MPEG2-PS的多路复用器。所以将其它格式的媒体文件转换为MPEG2-PS文件,需要加上“-f vob”选项:

所以将FFmpeg命令修改为:

./ffmpeg -i input.mp4 -vcodec libx264 -acodec pcm_s16be -f vob video2.ps

注意,音频编码器不能指定为AAC,即不能选择参数“-acodec aac”,因为FFmpeg(FFmpeg7.0.1)不支持生成音频压缩编码格式为AAC的MPEG-PS文件。如果指定为AAC,会报错:Unsupported audio codec. Must be one of mp1, mp2, mp3, 16-bit pcm_dvd, pcm_s16be, ac3 or dts:

通过命令:./ffmpeg -i XXX.ps可以查看生成的ps文件的信息:

用Elecard Stream Analyzer工具可以查看到其内部包含MPEG2-PS的Program Pack、System Header、PES Packet,证明这就是MPEG2-PS文件:

http://www.lryc.cn/news/513605.html

相关文章:

  • Embedding
  • Android Studio学习笔记
  • Git的使用流程(详细教程)
  • Keil中的gcc
  • bilibili 哔哩哔哩小游戏SDK接入
  • springboot523基于Spring Boot的大学校园生活信息平台的设计与实现(论文+源码)_kaic
  • 【YOLO算法改进】ALSS-YOLO:无人机热红外图像|野生动物小目标检测
  • XML解析
  • PlasmidFinder:质粒复制子的鉴定和分型
  • PTA数据结构作业一
  • 2024年总结【第五年了】
  • java实现一个kmp算法
  • 强化学习方法分类详解
  • 雅思真题短语(二十八)
  • 在Linux系统中使用字符图案和VNC运行Qt Widgets程序
  • Python基于EasyOCR进行路灯控制箱图像文本识别项目实战
  • Github 2024-12-28 Rust开源项目日报 Top10
  • 提升生产力工具
  • 【蓝桥杯——物联网设计与开发】系列前言
  • 【Java基础】02.Java数据类型
  • Python爬虫(一)- Requests 安装与基本使用教程
  • 线段树保姆级教程
  • logback之自定义过滤器
  • 如何用CSS3创建圆角矩形并居中显示?
  • Java 开发中的指定外部 Jar 路径详解
  • python爬虫--小白篇【selenium自动爬取文件】
  • TI毫米波雷达原始数据解析之Lane数据交换
  • overscroll-behavior-解决H5在ios上过度滚动的默认行为
  • Nacos配置中心总结
  • rouyi(前后端分离版本)配置