一、音视频合成
#部分命令注解
-an #不要音频
-vn #不要视频
-map #定位指定文件指定轨道的流 格式定义:input_file_index:stream_type_specifier:stream_index 从0开始,第一就是0,第二就是1
例: -map 0:v:0 #提取第一个输入的文件的视频轨道中的第一个视频流
例: -map -0:v:0 #删除第一个输入的文件的视频轨道中的第一个视频流
-acodec copy #不对音频重新编码,直接复制,大大提升音频处理速度 等同于 -c:a copy
-vcodec copy #不对视频重新编码,直接复制,大大提升视频处理速度 等同于 -c:v copy
用于把一个视频上的音频合到另一个视频上
#方法一:适用于只有一个视频,一个音频的情况
ffmpeg -i "C:\A.mp4" -vcodec copy –an "C:\B.mp4" #去掉音频,得到无音频的视频
ffmpeg -i "C:\B.mp4" -i "C:\A.wav" -c:v copy -c:a aac -strict experimental "C:\C.mp4"
#或是合并使用
ffmpeg -i "C:\A.mp4" -i "C:\A.wav" -c:v copy -c:a aac -strict experimental -map 0:v:0 -map 1:a:0 "C:\C.mp4"
#方法二:适用于有2个独立的视频
ffmpeg -i "C:\A.mp4" -vn -acodec copy "C:\A.acc" #无损提取A.mp4的音频到A.acc中备用,去掉视频,得到无视频的音频
ffmpeg -i "C:\B.mp4" -i "C:\A.acc" -c:v copy -c:a aac -strict experimental -map 0:v:0 -map 1:a:0 "C:\C.mp4" #把B.mp4与A.acc合成到C.mp4中
#其中, `acc`表示mp4格式的音频编码取AAC音频编解码器,不拷贝当前的格式。
其中第一步就是通过-vn
命令扔掉视频流信息,通过-acodec copy
命令把音频复制到A.acc音频文件中。
第二步中,B.mp4为第一个输入的文件,A.acc为第二个输入的文件;
-c copy
则是告诉ffmpeg全部信息流都不需要重新编码,直接复制;
-map 0:v:0
就是告诉ffmpeg把第一个输入的文件中的视频轨道的第一个视频流提取出来
-map 1:a:0
就是告诉ffmpeg把第二个输入的文件中的音频轨道的第一个音频流提取出来
最后输出到 C.mp4文件中。
二、其他格式转mp4格式
ffmpeg -i input.aov -vcodec copy -acodec copy -f mp4 libx264 output.mp4
其中libx264
是支持浏览器video
标签的视频编解码器。
知识扩展:
HTML5 提供了播放视频文件的标准,可以使用<vedio>
标签定义视频,比如电影片段或其他视频流。
目前,<video>
元素支持三种视频格式:MP4、WebM、Ogg。
格式 | MIME-type |
---|---|
MP4 | video/mp4 |
WebM | video/webm |
Ogg | video/ogg |
- MP4 = MPEG 4文件使用 H264 视频编解码器和AAC音频编解码器
- MP4是一套用于音频、视频信息的压缩编码标准,由国际标准化组织(ISO)和国际电工委员会(IEC)下属的“动态图像专家组”(Moving Picture Experts Group,即MPEG)制定,第一版在1998年10月通过,第二版在1999年12月通过。MPEG-4格式的主要用途在于网上流、光盘、语音发送(视频电话),以及电视广播。
- WebM = WebM 文件使用 VP8 视频编解码器和 Vorbis 音频编解码器
- WebM由Google提出,是一个开放、免费的媒体文件格式。WebM 影片格式其实是以 Matroska(即 MKV)容器格式为基础开发的新容器格式,里面包括了VP8影片轨和 Ogg Vorbis 音轨,其中Google将其拥有的VP8视频编码技术以类似BSD授权开源,Ogg Vorbis 本来就是开放格式。 WebM标准的网络视频更加偏向于开源并且是基于HTML5标准的,WebM 项目旨在为对每个人都开放的网络开发高质量、开放的视频格式,其重点是解决视频服务这一核心的网络用户体验。Google 说 WebM 的格式相当有效率,应该可以在 netbook、tablet、手持式装置等上面顺畅地使用。
- Ogg = Ogg 文件使用 Theora 视频编解码器和 Vorbis音频编解码器