函数学习 有些事,记下来是不错的选择...

CentOS7安装FFmpeg

环境:centos7.6

最近痴迷于FFmpeg切片,由于CentOS没有官方FFmpeg rpm软件包,我们需要借助第三方YUM源(Nux Dextop)来安装。

首先安装第三方 Nux Dextop Yum 源

sudo rpm --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro
sudo rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-5.el7.nux.noarch.rpm

接着安装FFmpeg 和 FFmpeg

sudo yum install ffmpeg ffmpeg-devel -y

测试

查看安装信息

ffmpeg

查看帮助文档

ffmpeg -h

查看支持容器

ffmpeg -formats

查看支持编码格式

ffmpeg -codecs

查看已安装编码器

ffmpeg -encoders

获取媒体文件时长

ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 <File>

获取媒体文件大小

ffprobe -v error -show_entries format=size -of default=noprint_wrappers=1:nokey=1 <File>

获取媒体文件比特率

ffprobe -v error -show_entries format=bit_rate -of default=noprint_wrappers=1:nokey=1 <File>

获取视频文件编码

ffprobe -v error -select_streams v:0 -show_entries stream=codec_name -of default=noprint_wrappers=1:nokey=1 <File>

视频文件直接切片

ffmpeg -i <File> -vcodec copy -acodec aac -bsf:v h264_mp4toannexb -map 0 -f segment -segment_list output.m3u8 -segment_time 10 output_%03d.ts

M3U8合成视频文件

ffmpeg -allowed_extensions ALL -i "meida.m3u8" -c copy "media.mp4"

分片时长计算(VBR, 大约)

#分片时间 = (文件限制大小[M] * 1024 * 1024) / (媒体文件比特率[b] * 突发码率比率 / 8)
#突发码率比率: 1.35 (视情况取值, 大于等于1) 
#字幕格式转换(webvtt.org)

更多文档参见:https://www.ffmpeg.org/documentation.html

#主要参数
-i 设定输入流 
-f 设定输出格式 
-ss 开始时间 
#视频参数
-b 设定视频流量(码率),默认为 200Kbit/s 
-r 设定帧速率,默认为 25 
-s 设定画面的宽与高 
-aspect 设定画面的比例 
-vn 不处理视频 
-vcodec 设定视频编解码器,未设定时则使用与输入流相同的编解码器 
#音频参数
-ar 设定采样率 
-ac 设定声音的 Channel 数 
-acodec 设定声音编解码器,未设定时则使用与输入流相同的编解码器 
-an 不处理音频
#制作 M3U8 视频
#先用 ffmpeg 把 abc.mp4 文件转换为 abc.ts 文件
ffmpeg -y -i abc.mp4 -vcodec copy -acodec copy -vbsf h264_mp4toannexb abc.ts
#再用 ffmpeg 把 abc.ts 文件切片并生成 playlist.m3u8 文件,5 秒一个切片
ffmpeg -i abc.ts -c copy -map 0 -f segment -segment_list playlist.m3u8 -segment_time 5 abc%03d.ts
 
#为视频添加 logo
ffmpeg -i input.mp4 -i iQIYI_logo.png -filter_complex overlay output.mp4
 
#将输入的 1920x1080 缩小到 960x540 输出
ffmpeg -i input.mp4 -vf scale=960:540 output.mp4
 
#抓取视频的一些帧,存为 jpeg 图片
#-r 表示每一秒几帧
#-q:v 表示存储 jpeg 的图像质量,一般 2 是高质量。
ffmpeg -i input.mp4 -r 1 -q:v 2 -f image2 pic-%03d.jpeg
-ss 表示开始时间
-t 表示共要多少时间。
ffmpeg -i input.mp4 -ss 00:00:20 -t 10 -r 1 -q:v 2 -f image2 pic-%03d.jpeg
 
#FFMPEG 截取视频中的图片作为封面
ffmpeg -ss 3 -i input.mp4 -vf "select=gt(scene\,0.4)" -frames:v 5 -vsync vfr -vf fps=fps=1/600 out%02d.jpg
 
#FFMPEG 截取指定时长的视频
ffmpeg -i input.avi -vcodec copy -acodec copy -ss 00:30:00 -t 00:30:00 output2.avi
 
#常用
ffmpeg -i foo.mp4 -codec copy -vbsf h264_mp4toannexb -map 0 -f segment -segment_list out.m3u8 -segment_time 10 out%03d.ts

标签:文件,centos,ffmpeg,error,ffprobe,nokey
输出:435字,阅读时长 ≈ 2分钟
上一篇:CentOS7安装python3和pip3
下一篇:H5ai修改版,带HTML5视频播放器DPlayer

发表评论