2018
Apr
24

ffmpeg 是一个免费的影片编辑 Library,使用前要先编译安装它,首先我们先安装好 Docker ,利用 Docker 将 ffmpeg 安装在 centos 6 ,这样就能在 Windows, Mac, Linux 任何系统下使用 ffmpeg , 下面这个是我的 Dockerfile 设定。

Dockerfile
  1. FROM centos:6
  2. RUN yum install gcc gcc-c++ make cmake -y
  3.  
  4. RUN yum install ncurses-devel -y
  5. RUN yum upgrade ncurses-libs ncurses-term ncurses-devel -y
  6. RUN ldconfig
  7.  
  8. RUN yum install -y sudo wget telnet openssh-server vim git ncurses-libs ncurses-term screen
  9. RUN yum install -y libX11-devel xorg-x11-server-Xvfb
  10. RUN cd /root && wget http://pkgrepo.linuxtech.net/el6/release/x86_64/libfaac-devel-1.28-3.el6.x86_64.rpm
  11. RUN cd /root && wget http://pkgrepo.linuxtech.net/el6/release/x86_64/libfaac-1.28-3.el6.x86_64.rpm
  12. RUN cd /root && wget http://pkgrepo.linuxtech.net/el6/release/x86_64/libx264_125-0.125-0.20121107.1.el6.x86_64.rpm
  13. RUN cd /root && wget http://pkgrepo.linuxtech.net/el6/release/x86_64/libx264-devel-0.125-0.20121107.1.el6.x86_64.rpm
  14. RUN cd /root; rpm -ivh --force *.rpm
  15.  
  16. RUN cd /root && wget http://ffmpeg.org/releases/ffmpeg-3.4.tar.gz
  17. RUN cd /root ; tar -zxvf ffmpeg-3.4.tar.gz
  18. RUN cd /root/ffmpeg-3.4; \
  19. ./configure --prefix=/usr/local/ --disable-yasm --enable-avisynth --enable-nonfree --enable-libx264 --enable-gpl ; \
  20. make ;

编辑影片

安装好 ffmpeg 后,就可以启动 docker 来编辑影片,像下面这个指令,先 mount /Users/puritys/Documents/ 这个目录到 /temp_dir ,然后再用 -w /temp_dir切换到 docker 路径到 /temp_dir,后面的 ffmpeg ... 则是执行 ffmpeg 程式。

docker run -it --rm -v /Users/puritys/Documents/:/temp_dir -w /temp_dir images/ffmpeg ffmpeg...

接下来的指令我就省去启动 docker 的指令,改用 $dockerFfmpeg 代替。

将 flv 影片格式转成 mp4

$dockerFfmpeg ffmpeg -i test.flv -acodec copy -vcodec copy result.mp4

修改影片尺寸

参数 scale=640:360 可以把影片压缩成宽 640 ,高 360 ,压完后可以有效的降低影片容量。

$dockerFfmpeg ffmpeg -i test.flv -vf scale=640:360 result.mp4

加速影片

参数 "setpts=0.5*PTS" 可以加快 2 倍,加速后声音就没有用了,所以要再补上参数 -an 移除声音 audio。

$dockerFfmpeg ffmpeg -i test.flv -filter:v "setpts=0.5*PTS" -an result.mp4

Crop:切割影片

用参数 "crop=width:height:x:y" ,代表从 x,y 这点开始计算,切割宽 width ,高 height 。

$dockerFfmpeg ffmpeg -filter:v "crop=90:90:0:0" -i test.flv result.mp4

ts: Transport stream to mp4

Example
  1. cat video1.ts video2.ts > video.ts
  2. $dockerFfmpeg ffmpeg -i video.ts video.mp4

回應 (Leave a comment)