2019年4月8日星期一

ffmpeg 整理记录-FFMPEG使用参数

A: FFMPEG使用参数详解
     FFmpeg的官方网址是 http://ffmpeg.mplayerhq.hu/
     中文Wiki是 http://www.ffmpeg.com.cn/

A-1:基本的FFmpeg主主要组成部分:

    1). libavcodec: 一个包含了所有FFmpeg音视频编解码器的库。
    2). libavformat: 一个包含了所有的普通音视格式的解析器和产生器的库。

A-2:三个实例程序(这三个实例基本可以作为API使用手册):

        ffmpeg:命令行的视频格式转换程序。
        ffplay:视频播放程序。(需要SDL支持)
        ffserver:多媒体服务器

A-3:基本参数:
     fmepg.exe -h 帮助
基本使用方式:ffmpeg [[options][`-i' input_file]] {[options] output_file}
-fromats 显示可用的格式,编解码,协议。
-i filename 输入文件
-y 覆盖输出文件(即如果test.***文件已经存在的话,不经提示就覆盖掉了)
-o filename 输出文件

-t duration 设置纪录时间 hh:mm:ss[.xxx]格式的记录时间也支持
-ss position 搜索到指定的时间 [-]hh:mm:ss[.xxx]的格式也支持。使用-ss参数的作用,可以从指定时间点开始转换任务,-ss后的时间单位为秒
-title string 设置标题(比如PSP中显示影片的标题)
-author string 设置作者
-copyright string 设置版权
-comment string 设置评论
-target type 设置目标文件类型(vcd,svcd,dvd) 所有的格式选项(比特率,编解码以及缓冲区大小)自动设置 ,只需要输入如下的就可以了:ffmpeg -i myfile.avi -target vcd vcd.mpg
-hq 激活高质量设置
-itsoffset offset 设置以秒为基准的时间偏移,该选项影响所有后面的输入文件。该偏移被加到输入文件的时戳,定义一个正偏移意味着相应的流被延迟了 offset秒。 [-]hh:mm:ss[.xxx]的格式也支持。



今天就写这么多..........................

2019 /04 /21
继续写,今天写点干货;
ffmpeg 实例;;(保存成bat,拖入文件就可以)

1:检查文件

CD /D "%~dp0"

ffmpeg -i "%~1"

pause


2: 音轨分离转换
CD /D "%~dp0"
ffmpeg -i "%~1" -ac 2 -map 0:1 -f wav - | neroaacenc -q 0.28 -if - -ignorelength -of "%~dpn1_a.m4a"
pause&exit

*-map 0:1 这个参数选择轨道 比如 选择第二音轨 -map 0:2


*neroaacenc则是压制AAC音频的插件 ;其只接受WAV格式,所以必须先提取音频到WAV,再进行转制。(其中-q 参数范围比较宽广貌似到0.95最大;一般取0.52~0.56已经能够接受了。)

3:提取视频
ffmpeg -i "%~1" -vcodec copy –an  "%~dpn1_v.mp4"

4:音视频合成命令
ffmpeg -i "%~dpn1_v.mp4"-i "%~dpn1_a.m4a" -vcodec copy -acodec copy "output.mp4"

5:将rtmp流,以文件的形式保存到本地

# ffmpeg -i "rtmp://IP地址........" -acodec copy -vcodec copy -f flv -y "%~dpn1_v.flv"

6:为视频添加logo

ffmpeg -i input.mp4 -i iQIYI_logo.png -filter_complex overlay output.mp4 
 *overlay overlay=W-w右上角 ;overlay=0:H-h左下角;overlay=W-w:H-h右下角;

7:压制实例;
7-1:

 CD /D "%~dp0"
x264 --level 4.1 --crf 23.5 --threads 18 --bframes 9 --keyint 60 --chroma-qp-offset 3 --psy-rd 0.75:0.00 --b-adapt 2 --ref 4 --qcomp 0.7 --deblock 0:0 --no-mbtree --scenecut 50 --fgo 0 --aq-mode 3 --aq-strength 0.8 --merange 24 --me umh --direct auto --subme 10 --partitions all --trellis 2 --input-depth 8 --output "%~dpn1_video.mp4" "%~1"
.\eac3to\eac3to "%~1" "%~dpn1_audio.aac" -quality=0.56
mp4box\mp4box -add "%~dpn1_video.mp4" -add "%~dpn1_audio.aac.m4a" -new "%~dpn1.mp4"

*解释 这里用了EAC3TO 来提取压制音频 ;MP4BOX来合并 ;X264编码;
X264编码参数很多,这组参数还是蛮适合压制DVD的 ,蓝光也是可以的,主要可修改参数:crf 这个参数这里是23.5 要质量设置18~19,要容量则23~26;一般不要低于26,之后质量太差。

7-2:一般上面的参数会比较慢哦,所以就有了硬件编码
ffmpeg -threads 8 -i "%~1" -vcodec h264_nvenc -preset llhp -rc:v constqp -qp 23 -bf:v 4 -r 29.97 -level 4.1 "%~dpn1_video.mp4"
* 这个threads是核心数,8代表8核心 -qp 相当于X264的crf,但具体参值有区别,一般21就相当于crf 19的质量 ,但容量稍大。-r 这个参数是指定帧率,如果没什么需求就去掉吧。
硬件编码可用参数并不多。如果有优化处理需求还是要配合AVS实现比较现实。
 这里的例子是利用“NVIDIA”硬件编码,需求其SDK完成。
如果使用硬件编码你需要https://developer.nvidia.com/ffmpeg;这里有你需要的CUDA Toolkit;

就写到这。想起什么再写。


没有评论:

发表评论

ffmpeg 整理记录-FFMPEG使用参数

A: FFMPEG使用参数详解      FFmpeg的官方网址是 http://ffmpeg.mplayerhq.hu/      中文Wiki是 http://www.ffmpeg.com.cn/ A-1:基本的FFmpeg主主要组成部分:     1). li...