开启辅助访问
 找回密码
 立即注册

完美解码如何把h264格式转换成MP4格式的?

qMCCeLsC 回答数4 浏览数416
完美解码如何把h264格式转换成MP4格式的?
使用道具 举报
| 来自北京
凡泥 | 来自北京
视频格式的种类很丰富,其中H.264和MP4是最常见的两种。想要将H.264格式转为MP4格式,可以使用Python中的FFmpeg库来实现,先将H.264文件解码,再编码生成MP4文件。
1、下载并安装ffmpeg,可以从官方网站或第三方镜像网站下载与我们操作系统相对应的版本。
2、打开终端或者命令提示符,进入ffmpeg安装目录,输入以下命令:
ffmpeg -i input.h264 -vcodec copy -acodec copy output.mp4
其中input.h264是要转换的H.264文件名,output.mp4是输出的MP4文件名。
这个命令的意思就是,使用ffmpeg读取名为input.h264的文件,将其中的视频和音频流分别复制到名为output.mp4的文件中,这样就可以得到一个MP4格式的视频文件。
但这个方法效率较低且操作较为复杂,小白用户可能操作不了,其实涉及到视频格式转换的问题,我们可以借助专业的格式转换工具,不仅可以批量转换,操作起来也十分简单,具体可以参考以下几个软件↓↓↓
野葱视频转换器一、野葱视频转换器

这款专业的音、视频转换软件支持1000+格式的一键转换,支持常见的MKV、WMV、AVI、MP4等格式,同时也支持国内主流和特殊的视频格式转换。
软件可以实现高精度视频转换,画质清晰不模糊、无齿锯,高清流畅不卡顿、无丢帧。
操作也十分简单:
1、打开软件,选择“视频转换”功能并进入。


2、添加一个或者多个视频文件后点击“参数设置”,选择想要转换成的格式及对应相关参数(如分辨率)等。


3、点击转换按钮,即可开始转换,之后等待转换完成“转换成功”提示即可。


二、Convert.Files

这是一款非常好用的在线网站,也就是直接在线就能帮助我们转换音、视频文件,操作也非常简单。
打开网站后上传需要转换的文件,指定其输入格式,再设置输出格式,进行转换就行了。
但如果文件大小比较大的话,转换速度可能比较慢.....


三、Zamzar

一个免费的转换器,可以转换多种格式的音频、视频文件,比如我们常见的FLV,MOB,VOB,WMA,WMV,FLAC,OGG,MP3,M4A,MP4,MP2、3GP等格式均可操作。
这个网站没有什么广告和弹窗,非常良心!
操作也是非常简单的,打开后上传文件——设置格式——进行转换就行了,影视、办公软件等格式都能用~


上面就是几个格式转换的方法了,需要的朋友可以参考下,如果在使用过程中遇到问题也可以在留言~
视频格式转换直达↓↓↓
野葱视频转换器
回复
使用道具 举报
爱新觉罗爷 | 来自北京
一、MP4格式基本概念
MP4格式对应标准MPEG-4标准(ISO/IEC14496)
<hr/>
二、MP4封装格式核心概念
1 MP4封装格式对应标准为 ISO/IEC 14496-12(信息技术 视听对象编码的第12部分: ISO 基本媒体文件格式/Information technology Coding of audio-visual objects Part 12: ISO base media file format)
-- 标准免费下载: Freely Available Standards http://standards.iso.org/ittf/PubliclyAvailableStandards/index.html
2 MP4封装格式是基于QuickTime容器格式定义,媒体描述与媒体数据分开,目前被广泛应用于封装h.264视频和ACC音频,是高清视频/HDV的代表。
3 MP4文件中所有数据都封装在box中(对应QuickTime中的atom),即MP4文件是由若干个box组成,每个box有长度和类型,每个box中还可以包含另外的子box(称container box)。
 一个MP4文件首先会有且只有一个“ftyp”类型的box,作为MP4格式的标志并包含关于文件的一些信息;之后会有且只有一个“moov”类型的box(Movie Box),它是一种container box,子box包含了媒体的metadata信息;MP4文件的媒体数据包含在“mdat”类型的box(Midia Data Box)中,该类型的box也是container box,可以有多个,也可以没有(当媒体数据全部引用其他文件时),媒体数据的结构由metadata进行描述。
4 MP4中box存储方式为大端模式。一般,标准的box开头会有四个字节的box size。
音视频流媒体技术:做音视频开发要掌握哪些理论上的知识?

5 几个名词




三、MP4封装格式结构图
1 实例样本
来源于Android MediaRecoder视频录制,平台为华为T8300和TCL968,用mp4info查看如下
用EsEYE查看如下:




用winhex分析如下:




2 box结构图




接下来对h264编码中有用的几个进行阐述,其它不再描述。
FFMPEG命令入门到提高-学习教程-命令教学合集+ffmpeg配套资料分享 C/C++/webRTC/rtmp/hls/rtsp/ffplay/srs_哔哩哔哩_bilibili3 ftyp(file type box)
如下图所示,开始的四字节00 00 00 00 18表示该box的size为24字节(含头),然后66 74 79 70是ftyp的BOX TYPE,其它是一些格式兼容等相关信息。




4 mdat
如下图所示,BOX YPE为6D 64 61 74 ,紧接着的00 00 09 39表示sliece长度




5 avcC
如下图所示,红色为BOX TYPE
四、MP4文件中h264的 SPS、PPS获取
1 【参考依据】ISO/IEC 14496-15 (下载)
2 【综述】在H264中,SPS和PPS存在于NALU header中,而在MP4文件中,SPS和PPS存在于AVCDecoderConfigurationRecord, 首先要定位avcC.
3 【定义】
①参数集:一组很少改变的,为大量VCL NALU 提供解码信息的数据。
序列参数集SPS作用于一系列连续的编码图像,而图像参数集PPS作用于编码视频序列中一个或多个独立的图像。
如果解码器没能正确接收到这两个参数集,那么其他NALU 也是无法解码的。因此它们一般在发送其它 NALU 之前发送,并且使用不同的信道或者更加可靠的传输协议(如TCP)进行传输,也可以重复传输。
②关于AVCDecoderConfigurationRecord结构定义为




4 【实例分析】数据如上avcC图所示,现在对数据进行详细分析




所以,提取的SPS和PPS分别为67 42 00 1E A6 81 41 F9和68 CE 38 80

<hr/>
五、MP4文件中的H264 data /NALU slice
1 【参考】H264官方文档(下载) + 毕书—新一代视频压缩编码标准(下载)
2 【综述】
在MP4格式文件中,H264 slice并不是以00 00 00 01来作分割,而是存储在mdat box中。
H264基本码流由一些列的NALU组成。原始的NALU单元组成:[start code] + [NALU header] + [NALU payload]




H264基本码流结构分两层:视频编码层VCL和网络适配层NAL,这样使信号处理和网路传输分离




3 【定义】 NALU header
+---------------+
|0|1|2|3|4|5|6|7|
+-+-+-+-+-+-+-+-+
|F|NRI| Type |
+---------------+




特别的,当值为7和8分别为SPS和PPS。
毕书(下载)(P191)上的定义为:




4 【实例分析】数据分析,数据如上图mdat所示


6D 64 61 74mdat BOX TYPE
00 00 09 39silce长度,2361

接下来的65就是NALU header,可以由65&0x1F来求的后五个bit,从而得知此slice为I frame
注意,mdat与silce之间有可能存在若干占位符,我在TCL手机测试时就出现了连续的00的占位符,这样后面用H264硬编码时会比较麻烦一点。
原文链接:H264-MP4格式及在MP4文件中提取H264的SPS、PPS及码流 - 资料 - 音视频开发中文网 - 构建全国最权威的音视频技术交流分享论坛
回复
使用道具 举报
cfg1977 | 来自北京
视频相关知识:
MP4是一种封装格式,(理论上任何文件格式改了后缀都是mp4格式,所以mp4里到底是啥取决于你封装进去了啥)but,工业化标准里MP4就是指封装了 视频,音频,字幕等相关文件的封装文件。
然鹅,你非要在MP4里封装txt word谁也管不到。
h264 h.265这些就是视频的编码格式了,理论上一个h264或者h265就是一段视频且不包含声音的画面。
所以 MP4理论上是包含了h264即MP4里封装的视频文件就是h264格式的。
所以 这两个格式是包含和被包含关系.你可以使用一些封装软件 把h264格式的视频文件封装进一个MP4文件里,从而达到任何实现工业化标准的播放软件都可以播放(h264也是可以直接使用一些播放软件播放的,但并不能保证市面上任何一款播放器都能播放,而MP4基本可以保证市面上任何一款播放器都可播放)
回复
使用道具 举报
ihHXMlfZ | 来自北京
mp4视频编码是h264,音频编码是aac。h264是视频编码格式,mp4是封装格式。
回复
使用道具 举报
快速回复
您需要登录后才可以回帖 登录 | 立即注册

当贝投影