Ubuntu如何转换mp4与x264和h.264

运维 系统运维
FFmpeg是Ubuntu下强大的视频、音频编解码工具。 x264可以编码出高质量的h.264视频,iPad必须要h.264编码或mpeg-4编码的视频才能正常播放。Ubuntu官方源默认是不提供h.264编码的,这就需要我们手工编译安装FFmpeg的h.264支持,使之能够编码出MP4文件。

继上文Ubuntu安装FFmpeg编码出MP4文件的方法之后,本文接着介绍Ubuntu系统下如何转换mp4与x264和h.264。

flv视频转换为MP4视频:

 

  1. ffmpeg -i source.flv -f avi -vcodec mpeg4 output.MP4 

 

合并视频文件

 

  1. ffmpeg -i /tmp/a.wav -s 640x480 -i /tmp/a.yuv /tmp/a.mpg 

 

或用mencoder合并视频文件:

 

  1. mencoder -oac copy -ovc copy -idx -o output.avi video1.avi video2.avi video3.avi 

 

截取一张352×240尺寸大小的,格式为jpg的图片:

 

  1. ffmpeg -i source.avi -y -f image2 -t 0.001 -s 352x240 output.jpg 

 

把视频的前11帧转换成一个动画图片(Animated Gif):

 

  1. ffmpeg -i source.avi -vframes 11 -y -f gif output.gif 

 

在视频的第8.01秒处截取 352*240 的缩略图:

 

  1. ffmpeg -i source.avi -y -f image2 -ss 08.010 -t 0.001 -s 352x240 output.jpg 

 

转换 yuv 文件

 

  1. ffmpeg -s cif -vcodec mpeg4 -i paris.yuv paris.avi 

 

说明:

-s 指定帧大小 cif 为 352x288,qcif 为 176x144,4cif 为 704x576

-vcodec 指定采用的编码器

-i 指定输入文件

输出 raw YUV420P 文件:

ffmpeg -i paris.avi paris0.yuv

将一段视频输出为图片序列

 

  1. ffmpeg -i 1.avi cat%d.png -vcodec png 

 

说明:

 

  1. -vcodec mjpeg  
  2.  
  3. -vcodec ppm  
  4.  
  5. ffmpeg -i 1.avi cat%04d.jpg -vcodec mjpeg -ss 0:1:2 -t 0:0:1 

 

说明:将1.avi视频 1分02秒 处开始,持续1秒长的视频输出为jpg的序列

 

  1. ffmpeg -vcodec mjpeg -i 1.flv test%02d.jpg -ss 0:0:2 -t 0.001 

 

说明: -t 表示持续时间为0.001秒,这个命令相当于截取开始2秒处的一幅jpeg的图片

多输入单输出

 

  1. ffmpeg -i /tmp/a.wav -s 640x480 -i /tmp/a.yuv /tmp/a.mpg 

 

单输入多输出

 

  1. ffmpeg -i /tmp/a.wav -ab 64 /tmp/a.mp2 -ab 128 /tmp/b.mp2 -map 0:0 -map 0:0 

 

说明:-map file:stream_index 指定哪一个输入流用于输出流,顺序对应

DVD 转 mpeg4

 

  1. ffmpeg -i snatch_1.vob -f avi -vcodec mpeg4 -b 800 -g 300 -bf 2 -acodec mp2 -ab 128 snatch.avi 

 

说明:

压制高品质MP4的参考参数:

 

  1. '-mbd rd -flags +4mv+trell+aic -cmp 2 -subcmp 2 -g 300 -pass 1/2' 

 

可以试试: '-bf 2', '-flags qprd', '-flags mv0', '-flags skiprd'

编码 mpeg1/mpeg2

 

  1. ffmpeg -i 1.avi -vcodec mpeg2video 2.mpg 

 

说明:

注意mpeg2的codec为 mpeg2video

其他codec可以使用 ffmpeg -formats 查看

压制高品质mp1/mp2的参考参数:

 

  1. '-mbd rd -flags +trell -cmp 2 -subcmp 2 -g 100 -pass 1/2' 

 

注意,加 '-g 100' 可能会使某些解码器没法解码

可以试试: '-bf 2', '-flags qprd', '-flags mv0', '-flags skiprd'

编码为 flv

 

  1. ffmpeg -i 1.avi -ab 56 -ar 22050 -b 500 -r 15 1.flv 

 

X 屏幕录像

FFmpeg 捕获 X11 的显示内容:

ffmpeg -f x11grab -i :0.0 /tmp/out.mpg

说明:

0.0 是 X11 服务器 display.screen 格式的编号 , 可从环境变量的设置中获取。

ffmpeg -f x11grab -i :0.0+10,20 /tmp/out.mpg

说明:

0.0 是 X11 服务器 display.screen 格式的编号 , 可从环境变量的设置中获取。

10 、 20 分别是捕获窗口的x、y偏移量。

音视频采集

 

  1. ffmpeg -f audio_device -i /dev/dsp -f video4linux2 -i /dev/video0 /tmp/out.mpg 

 

说明:使用FFmpeg捕获前视频源必须有效激活 。

FFmpeg截图参数

 

  1. ffmpeg -i xxx.xxx -y -f image2 -ss 8 -t 0.001 -s 350x240 xxx.jpg 

 

FFmpeg 加水印 参数:

 

  1. ffmpeg -i inputfile.xxx -tagpict ":220:210" -ab 56 -ar 22050 -qmin 2 -qmax 16 -b 320k -r 15 -s 320x240 outputfile.flv 

 

水印参数说明:

-tagpict ":220:210"

(在ffmpeg所在目录中寻找0002.mjpg、mask.mjpg两个用作水印处理的图片文件,然后在指定的坐标,比如此处的:220:210,把水印在转码过程中添加到视频文件的每一桢上)

 

  1. ffmpeg -i input.wmv -vhook 'vhook_path/watermark.so -f logo.png -x -10 -y -10 -w 4 -h 4' output.mpg  
  2.  
  3. ffmpeg -i input.flv -vhook '/usr/lib/vhook/watermark.so -f  
  4.  
  5. logo.gif -m 0 -t ffffff' -ab 96 -b 8000k output.flv 

 

AviSynth加水印:

首先ffmpeg/Mencoder编译时需要–enable-avisynth;

转换参数:ffmpeg -y -i 1.avs -b 320k rmvb-avs.flv

avs编写格式:

 

  1. video = DirectShowSource("rmvb.rmvb",15).BilinearResize(320,240)  
  2.  
  3. logo = ImageSource("logo2.jpg")  
  4.  
  5. logomask = ImageSource("mask2.jpg")  
  6.  
  7. overlay(video,logo,mask=logomask

 

常用选项

-i filename 输入文件

-f fmt 强迫采用格式fmt

-y 覆盖输出文件

-ss position 搜索到指定的时间处开始 [-]hh:mm:ss[.xxx]的格式也支持

-b bitrate 设置比特率,缺省200kb/s

-r fps 设置帧频 缺省25

-s size 设置帧大小 格式为WXH 缺省160X128.下面的简写也可以直接使用:

sqcif 128X96 qcif 176X144 cif 352X288 4cif 704X576

-vcodec codec 强制使用codec编解码方式。 如果用copy表示原始编解码数据必须被拷贝。

-sameq 使用同样视频质量作为源(VBR)

-g gop_size 设置图像组大小

-intra 仅适用帧内编码

-bf frames 使用frames B 帧,支持mpeg1,mpeg2,mpeg4

-ab bitrate 设置音频码率

-ar freq 设置音频采样率

-ac channels 设置通道 缺省为1

-an 不使能音频纪录

-acodec codec 使用codec编解码

-benchmark 为基准测试加入时间

-hex 倾倒每一个输入包

总结:

希望本文介绍的Ubuntu转换mp4与x264和h.264的方法能够对读者有所帮助,更多有关linux系统的知识还有待于读者去探索和学习。

责任编辑:韩亚珊 来源: linux公社
相关推荐

2011-09-06 16:42:30

FFmpegUbuntu

2022-05-12 10:26:57

解码器Linux

2012-03-12 21:56:28

2013-10-31 14:43:32

思科H.264开源

2011-01-13 09:17:44

2009-08-14 10:14:23

H.264编码器数字视频编码标准PowerSmart

2011-09-02 19:30:47

2010-02-25 09:17:32

HTML 5H.264Flash

2013-01-28 10:27:29

2024-07-05 08:27:07

2010-05-20 09:35:14

WebM标准Web视频Google IO

2015-12-21 11:31:52

LinuxFirefoxGTK3

2022-10-10 10:38:22

FedoraopenSUSE视频编解码

2013-08-14 14:37:42

代码标准

2023-06-05 14:58:54

2022-03-10 18:46:33

Pythonmp4GIF

2018-06-19 15:17:06

双芯AMD显卡

2015-01-06 11:13:21

CES2015264核Tegra X苹果A8X

2018-04-16 15:39:43

转换技巧

2013-05-23 13:46:13

网络视频发展MJPEG网络监控视频
点赞
收藏

51CTO技术栈公众号