FFmpeg相关命令
批量转码当前目录下所有文件
for %%a in ("*.*") do ffmpeg -i "%%a" -c:v libx264 .\output\%%a
给视频添加内嵌字幕
SRT字幕用
ffmpeg -i input.mp4 -vf subtitles=subtitles.srt output.mp4
ASS字幕用
ffmpeg -i input.mp4 -vf ass=subtitles.ass output.mp4
封装字幕到MKV文件
ffmpeg -i input.mp4 -i subtitles.srt -c copy output.mkv
从MKV封装文件中提取字幕
ffmpeg -i input.mkv output.srt
为ASS硬字幕使用字体(Windows)
1. 下载配置文件fonts.conf
2. 为配置文件路径设置变量,变量名为FONTCONFIG_FILE
3. 在系统中安装对应的字体
生成HLS
点播
ffmpeg -i source.mp4 -codec:v libx264 -codec:a mp3 -map 0 -f ssegment -segment_format mpegts -segment_list playlist.m3u8 -segment_time 10 out%03d.ts
直播
ffmpeg -re -i source.mp4 -codec:v libx264 -codec:a mp3 -map 0 -f ssegment -segment_format mpegts -segment_list playlist.m3u8 -segment_list_flags +live -segment_list_size 6 -segment_time 10 out%03d.ts
segment_list_flags +live
以示直播re
ffmpeg将会按照source.mp4的播放速率进行转码segment_list_size
列表最大文件数量
HLS模块
ffmpeg -re -i source.mp4 -codec:v libx264 -codec:a libfaac -map 0 -f hls -hls_list_size 6 -hls_wrap 10 -hls_time 10 playlist.m3u8
hls_list_size
列表最大文件数量hls_wrap
最大的TS循环数
文件合并
FFmpeg concat 协议
ffmpeg -i "concat:1.mp4|2.mp4|3.mp4" -c copy output.mp4
FFmpeg concat 分离器
先创建列表文件list.txt,内容为:
file '1.mp4'
file '2.mp4'
file '3.mp4'
然后进行合并
ffmpeg -f concat -i list.txt -c copy output.mp4
隔行扫描转换为逐行扫描
使用-deinterlace
参数
FFmpeg RTMP推流
ffmpeg -re -i test.mp4 -c:v libx264 -c:a aac -f flv rtmp://127.0.0.1/live/test
FFmpeg采集摄像头并进行RTMP推流
ffmpeg -re -i test.mp4 -c:v libx264 -c:a aac -f flv rtmp://127.0.0.1/live/test
查看本机设备
ffmpeg -list_devices true -f dshow -i dummy
采集摄像头并推流
ffmpeg -f dshow -i video="Lenovo EasyCamera":audio="麦克风 (Realtek High Definition Audio)" -c:v libx264 -c:a aac -preset:v ultrafast -tune:v zerolatency -f flv rtmp://127.0.0.1/live/cam
使用Nginx搭建RTMP服务器
Windows可以直接从
http://nginx-win.ecsds.eu/download/nginx 1.7.11.3 Gryphon.zip
下载
Linux需要在编译安装的时候添加
https://github.com/arut/nginx-rtmp-module
模块
在编译的时候添加参数
./configure --add-module=/root/nginx-rtmp-module
编译完成后修改配置文件nginx.conf
再最后面添加配置,开启RTMP和HLS功能
rtmp {
server {
listen 1935;
application live {
live on;
record off;
hls on;
wait_key on;
hls_path "D:\Media\hls\video";
hls_fragment 60s;
hls_playlist_length 300s;
hls_continuous on;
hls_cleanup on;
hls_nested on;
}
}
}