标签 ffmpeg 下的文章

使用ffmpeg进行ts切片并AES-128加密

目录应包含文件

input.mp4
videokey.info
video.key

videokey.info文件内容示例

http://example.com/video.key
video.key

video.key文件内容示例

DMvkBs7vNlok1kj9

切片并加密

ffmpeg -i input.mp4 -c copy -bsf:v h264_mp4toannexb -hls_time 5 -hls_list_size 0 -hls_key_info_file videokey.info output.m3u8

-hls_time 设置每片的时长,默认值为2。单位为秒
-hls_list_size 设置播放列表保存的最多条目,设置为0会保存所有切片信息,默认值为5

由于解密的key文件都是公开的,所以并不能算上完全加密,用户只要把你的key+m3u8里的ts切片文件全部下载,用ffmpeg还是能解,这时就要考虑url的key防止用户直接下载和盗链。

编译安装ffmpeg

1、安装yasm

#CentOS
yum install yasm
 
#Debian
apt-get install yasm

无效则

wget http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz
tar zxvf yasm-1.3.0.tar.gz
cd yasm-1.3.0
./configure
make && make install

2、安装ffmpeg

yum install git
git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg
cd ffmpeg
./configure --enable-shared --prefix=/usr/local/ffmpeg
make && make install

查看ffmpeg版本

/usr/local/ffmpeg/bin/ffmpeg -version

如显示错误为

/usr/local/ffmpeg/bin/ffmpeg: error while loading shared libraries: libavdevice.so.56: cannot open shared object file: No such file or directory

修改/etc/ld.so.conf/ld.so.conf文件

vi /etc/ld.so.conf

内容修改如下,并保存

include ld.so.conf.d/*.conf
/usr/local/ffmpeg/lib/

保存好后,运行↓

ldconfig

添加到环境变量

vi /etc/profile

再最后一行添加

export PATH=/usr/local/ffmpeg/bin/:$PATH

保存退出并重启

查看ffmpeg版本

ffmpeg -version

用ffmpeg把mp4切片为ts并生成m3u8列表

for %%a in (*.mp4) do ffmpeg.exe -i %%~na.mp4 -c:v libx264 -c:a aac -strict -2 -hls_time 120 -hls_list_size 0 -hls_allow_cache 1 -f hls %%~na.m3u8

-hls_time n 每段的时长,默认值为2 单位为秒
-hls_list_size n 播放列表保存的最多条目,设置为0会保存所有切片信息,默认值为5
-hls_allow_cache n 高速缓存开关,1为开启。

ffmpeg视频文件批量转换脚本

最近在制作mp4文件时,前后使用了魔影工厂、狸窝、格式工厂进行转码,但是发现转换过的视频经常有黑屏的现象,文件体积也比较大,自由度也比较低。最终发现了 ffmpeg 很好很强大,不但处理速度快,可自定义参数,处理过的视频体积小的很多,而且还很清晰。唯一美中不足的是这个软件的转换需要在命令行模式下完成。一个一个的复制、粘贴到cmd窗口,文件多了就吃不消了,这时人的惰性发挥了作用,于是就有了批量转换脚本,简单的一句话,几百个视频文件就哗啦哗啦的出来了。以 flv 到 mp4 文件为例:

for %%a in (*.flv) do ffmpeg.exe -threads 4 -i %%~na.flv -ab 32 -ar 22050 -vcodec libx264 -qscale 6 -r 25 -s 720x480 -flags +loop -crf 24 -bt 256k -vol 200 -keyint_min 6 -vf yadif %%~na.mp4

注意:文件名中如果有空格,需要加引号

常用参数:

-threads 指定用于编码的线程
-i 指定输入文件
-ab 设置音频码率
-ar 设置音频采样率
-vcodec 视频流编码方式
-qscale 使用固定的视频量化标度(VBR)
-r 视频流帧数(一般说来PAL制式通常用25,NTSC制式通常用29)
-s 视频分辨率
-flags 环路滤波器 (-loop禁用 +loop 启用)
-crf 恒定质量模式(也称为恒定ratefactor)
-bt 设置比特率容许的误差
-keyint_min 设置关键帧的间隔
-vol 设定音量
-vf 指定滤镜 (等同 -filter:v)