代码改变世界

F​l​a​s​h​ ​M​e​d​i​a​ ​L​i​v​e​ ​E​n​c​o​d​e​r​参​数​表

2014-07-18 15:32  游乐场123  阅读(1510)  评论(0编辑  收藏  举报

Flash Media Live Encoder命令行推流
Flash Media Live Encoder Notes
Flash Media Live Encoder 除了直接以 GUI 方式操作之外
还能透过 Command Line 呼叫 FMLECmd 方式控制
以下则是简单的笔记

大部分 FMLECmd 操作都是需要一个 fmle_uid 参数的
fmle_uid 用来表示一个 encoding session

fmle_uid 格式定义
假如是 rtmp streaming
fmle_uid = + "+" +
e.g. rtmp://fms.myserver.com/live+livestream//加号输命令时为+

假如是存到档桉
fmle_uid = [档桉路径] + [档桉名称]
e.g. path-to-video\sample.flv

当一个 encoding session 同时编码数个 streams 时,用第一个 stream name 或是档名当作 fmle_uid

列出目前已经开始的 encoding sessions
FMLECmd /s
输出结果范例

Adobe(R) Flash(R) Media Live Encoder Command Line Utility v 3.1.0.8703
Copyright(C) 2009-10 Adobe Systems Incorporated. All rights reserved.

Tue Aug 24 2010 11:08:08 : All running FMLE sessions are:
rtmp://127.0.0.1/test1+stream1
它每次都会输出 Adobe 版权宣告
不喜欢的话也可以自己到以下位置去读取文字档桉取得 encoding sessions

Win7 - C:\ProgramData\Adobe\Flash Media Live Encoder 3.1\fmesessions.dat
WinXP - C:\Documents and Settings\All Users\Application Data\Adobe\Flash Media Live Encoder 3.1\fmesessions.dat
e.g. rtmp://127.0.0.1/test1+stream1#4508:0:0:0:0:0

停止一个 encoding session
FMLEcmd /s
以 Profile.xml 启动 encoding session
FMLEcmd /p c:\Profiles\my_profile.xml /l c:\Logs\my_log.txt
自动维护重启
Flash Media Live Encoder 被认证过能够连续执行 7 天的
假如计画跑 7 天以上,最好是固定时间排程自动维护并重启

从 profile.xml 档桉内设定

<restartinterval>
<days>dd</days>
<hours>hh</hours>
<minutes>mm</minutes>
</restartinterval>
从 command line 参数设定

FMLEcmd /t dd:hh:mm
e.g. 4 天 10 小时 30 分后重启
FMLEcmd /p c:\Profiles\my_profile.xml /ap myid:mypassword /t 04:10:30
command line 参数会盖过 xml 的设定

系统开机时重启
因为 FMLELauncher.exe 有 Bug,这部分功能没办法正常使用
其实它做的事情也只不过是把 command line 存起来,待下次开机执行而已
很多替代方桉可以用
下面还是介绍一下使用方式

Windows 开始 > 所有程式 > 附属应用程式 > 系统工具 > 工作排程器
建立一个新的工作指向 FMLELauncher.exe
并于系统开机时执行

注册一个自动重启的 encoding session 于 command line 启动 encoding session 后加上 /r
FMLEcmd /p c:\Profiles\my_profile.xml /l c:\my_log.txt /r
这样就会启动 encoding session 并将资料写入到
Win7 - C:\ProgramData\Adobe\Flash Media Live Encoder 3.1\OsLaunch.dat
WinXP - C:\Documents and Settings\All Users\Application Data\Adobe\Flash Media Live Encoder 3.1\OsLaunch.dat
e.g. rtmp://127.0.0.1/test1+stream1#FMLECmd.exe /p profiles\profile_audio.xml

待系统重开时,自动还原注册过的 encoding session

列出已注册 encoding session

FMLEcmd /u
取消注册 encoding session

FMLEcmd /u
DVR - digital video recording
DVR 播放功能可以让使用者倒转并暂停 live stream
稍后可以再从暂停的位置 resume 播放
FMLE 可以在 Live 编码情况下启动与停止这功能

在这裡 FMLE 仅仅只是转发送 DVR 相关命令到 FMS Application 而已
还需要搭配 FMS DVRCast Application 才有效果

立即启动一个 encoding session 的 DVR 录影

FMLEcmd /dvrstart
fmle_uid 参数是选择性的,假如没有提供 fmle_uid
会启动一个新的 encoding session,DVR 录影也会同时启动

立即停止一个 encoding session 的 DVR 录影

FMLEcmd /dvrstop
回传 encoding session 的 state

FMLEcmd /dvrstate
-------------------------------------------------------------
2010-03-08 23:04 mencoder和ffmpeg参数详解 Mencoder 转 flv
mencoder -ffourcc FLV1 -lavfopts i_certify_that_my_video_stream_does_not_use_b_frames -of lavf -oac mp3lame -lameopts aq=9:cbr:br=64:vol=2 -ovc lavc -lavcopts vcodec=flv:vbitrate=200:acodec=mp3:abitrate=56 -vf scale=320:270,expand=320:270:::1,crop=320:270:0:0 -ofps 18 -srate 22050 input.xxx -o output.flv
Mencoder 转 avi
mencoder.exe -oac mp3lame -lameopts aq=7:cbr:br=64 -srate 32000 -vf scale=220:176 -ovc lavc -ffourcc DX50 -lavcopts vcodec=mpeg4:vbitrate=320 "input.xxx" -o "output.avi"


mencoder ..\v\wmv.wmv -o ..\v\wmv-3.flv -of lavf -oac mp3lame -lameopts abr:br=56 -srate 22050 -ovc lavc -lavcopts vcodec=flv:vbitrate=500:mbd=2:mv0:trell:v4mv:cbp:last_pred=3

mencoder -oac mp3lame -lameopts aq=7:cbr:br=64 -srate 32000 -vf scale=220:176 -ovc lavc -ffourcc DX50 -lavcopts vcodec=mpeg4:vbitrate=320 "input.xxx" -o "output.avi"


mencoder -oac mp3lame -lameopts aq=7:cbr:br=64 -srate 22050 -vf scale=320:-3 -ovc xvid -xvidencopts bitrate=600 "wmv.wmv" -o "wmv.avi"


mencoder -oac lavc -lavcopts acodec=mp2:abitrate=64 -srate 22050 -vf scale=320:-3 -ofps 15 -ovc xvid -xvidencopts bitrate=400 rmvb.rmvb -o rmvb.avi


mencoder 1.rmvb -oac mp3lame -lameopts preset=64 -ovc xvid -xvidencopts bitrate=600 -of avi -o rmvb.avi


RMVB转FLVCODE
mencoder -vf scale=320:240 -ffourcc FLV1 -of lavf -lavfopts i_certify_that_my_video_stream_does_not_use_b_frames -ovc lavc -lavcopts vcodec=flv:vbitrate=200 -srate 22050 -oac lavc -lavcopts acodec=mp3:abitrate=56 ok\1.rmvb -o ok\rmvb.flv


利用ffmpeg的这两个参数,可以控制让ffmpeg来将一个大video劈分成许多小段的独立播放的文件。
-ss time_off set the start time offset
-t duration set the recording time

Mencoder截段参数:
-ss 0
-endpos 120

FFmpeg 转 3gp:
ffmpeg -y -i **.** -ac 1 -acodec amr_nb -ar 8000 -ab 24 -s 128x96 [-vcodec mpeg4] -b 40k -r 8 **.3gp


FFmpeg 转 flv:
ffmpeg -i inputfile.xxx -ab 56 -ar 22050 -qmin 2 -qmax 16 -b 320k -r 15 -s 320x240 outputfile.flv


FFmpeg截图参数
对视频文件截图:
ffmpeg -i xxx.xxx -y -f image2 -ss 8 -t 0.001 -s 350x240 xxx.jpg

对已有flv截图:
ffmpeg -i E:\VideoConvert\VideoConvert\VideoConvert\video\UpFiles\bikes.flv -y -f image2 -ss 8 -t 0.001 -s 350x240 222.jpg
对视频裁剪
mencoder -ss 0:02 -endpos 0:40 -oac copy -ovc copy E:\flv\bikes.flv -o E:\flv\bikes1.flv
mencoder -ss 0:02 -endpos 0:20 -oac copy -ovc copy E:\flv\nose_bleed.mp4 -o E:\flv\bleed.flv
把视频的前30帧转换成一个Gif :
ffmpeg -i xxx.xxx -vframes 30 -y -f gif xxx.gif

截取从10秒开始持续10秒的片段

FFmpeg 加水印 参数:
ffmpeg -i inputfile.xxx -tagpict ":220:210" -ab 56 -ar 22050 -qmin 2 -qmax 16 -b 320k -r 15 -s 320x240 outputfile.flv


水印参数说明:
-tagpict ":220:210"
(在ffmpeg所在目录中寻找0002.mjpg、mask.mjpg两个用作水印处理的图片文件,然后在指定的坐标,比如此处的:220:210,把水印在转码过程中添加到视频文件的每一桢上)


AviSynth加水印:
首先ffmpeg/Mencoder编译时需要--enable-avisynth;
转换参数:ffmpeg -y -i 1.avs -b 320k rmvb-avs.flv
1.avs编写格式:
video = DirectShowSource("rmvb.rmvb",15).BilinearResize(320,240)
logo = ImageSource("logo2.jpg")
logomask = ImageSource("mask2.jpg")
overlay(video,logo,mask=logomask)


mencoder 转 flv 同时加字幕水印

试了一下,可以加进去,但有些参数还设置不好.比如中文的字幕只显示成"_____",文件的各项设置
cd mencoder
mencoder ../file/test.mov -o ../flv/zbzbzb.flv -of lavf -oac mp3lame -lameopts abr:br=56
-ovc lavc -lavcopts vcodec=flv:vbitrate=500:mbd=2:mv0:v4mv:last_pred=3 -subpos 5 -subfont
-text-scale 10 -unicode -font c:\arial.ttf -sub ../file/test.srt -lavfopts
i_certify_that_my_video_stream_does_not_use_b_frames -srate 22050
pause

上面是在一个批处理文件中执行的,所以写成这样子

subpos 是说明字幕的位置:垂直方向上越大越靠下,水平方向的参数我没找到,最小0,最大100
subfont-text-scale 设置字体的大小
-unicode 文字编码方式,其他的没试过
-font 字体文件
-sub 你的字幕文件


例子:ffmpeg -y -i "1.avi" -title "Test" -vcodec xvid -s 368x208 -r 29.97 -b 1500 -acodec aac -ac 2 -ar 24000 -ab 128 -vol 200 -f psp -muxvb 768 "1.***"

解释:以上命令可以在Dos命令行中输入,也可以创建到批处理文件中运行。不过,前提是:要在ffmpeg所在的目录中执行(转换君所在目录下面的cores子目录)。
参数:
-y(覆盖输出文件,即如果1.***文件已经存在的话,不经提示就覆盖掉了)
-i "1.avi"(输入文件是和ffmpeg在同一目录下的1.avi文件,可以自己加路径,改名字)
-title "Test"(在PSP中显示的影片的标题)
-vcodec xvid(使用XVID编码压缩视频,不能改的)
-s 368x208(输出的分辨率为368x208,注意片源一定要是16:9的不然会变形)
-r 29.97(帧数,一般就用这个吧)
-b 1500(视频数据流量,用-b xxxx的指令则使用固定码率,数字随便改,1500以上没效果;还可以用动态码率如:-qscale 4和-qscale 6,4的质量比6高)
-acodec aac(音频编码用AAC)
-ac 2(声道数1或2)
-ar 24000(声音的采样频率,好像PSP只能支持24000Hz)
-ab 128(音频数据流量,一般选择32、64、96、128)
-vol 200(200%的音量,自己改)
-f psp(输出psp专用格式)
-muxvb 768(好像是给PSP机器识别的码率,一般选择384、512和768,我改成1500,PSP就说文件损坏了)
"1.***"(输出文件名,也可以加路径改文件名)