ffmpeg RTMP【转】

来源:互联网 发布:手机淘宝怎么申请试用 编辑:程序博客网 时间:2024/05/17 21:57
来自:http://blog.csdn.net/xdwyyan/article/details/43117565
1、ffmpeg 推送视频文件,音视频的编码格式只能为H264、AAC。
    ffmpeg -re -i "E:\片源\复仇者联盟720p.mov" -vcodec copy -acodec copy -f flv rtmp://192.168.11.75/live/test1      ffmpeg -re -i "E:\片源\复仇者联盟720p.mov" -vcodec copy -acodec copy -f flv rtmpt://192.168.11.75:8080/live/test1
2、网络摄像机 rtsp流转推rtmp直播(不过有丢包情况,还请大家多给指点)
ffmpeg -i rtsp://ip address/original -crf 30 -preset ultrafast -acodec aac -strict experimental -ar 44100 -ac 2 -b:a 96k -vcodec libx264 -r 25 -b:v 500k -s 640*480 -f flv rtmp://ip address/live/stram
ffmpeg参数说明:
基本选项:-formats输出所有可用格式-f fmt指定格式(音频或视频格式)-i filename指定输入文件名,在linux下当然也能指定:0.0(屏幕录制)或摄像头-y覆盖已有文件-t duration记录时长为t-fs limit_size设置文件大小上限-ss time_off从指定的时间(s)开始, [-]hh:mm:ss[.xxx]的格式也支持-itsoffset time_off设置时间偏移(s),该选项影响所有后面的输入文件。该偏移被加到输入文件的时戳,定义一个正偏移意味着相应的流被延迟了 offset秒。 [-]hh:mm:ss[.xxx]的格式也支持-title string标题-timestamp time时间戳-author string作者-copyright string版权信息-comment string评论-album stringalbum名-v verbose与log相关的-target type设置目标文件类型("vcd", "svcd", "dvd", "dv", "dv50", "pal-vcd", "ntsc-svcd", ...)-dframes number设置要记录的帧数视频选项:-b指定比特率(bits/s),似乎ffmpeg是自动VBR的,指定了就大概是平均比特率-bitexact使用标准比特率-vb指定视频比特率(bits/s)-vframes number设置转换多少桢(frame)的视频-r rate帧速率(fps) (可以改,确认非标准桢率会导致音画不同步,所以只能设定为15或者29.97)-s size指定分辨率 (320x240)-aspect aspect设置视频长宽比(4:3, 16:9 or 1.3333, 1.7777)-croptop size设置顶部切除尺寸(in pixels)-cropbottom size设置底部切除尺寸(in pixels)-cropleft size设置左切除尺寸 (in pixels)-cropright size设置右切除尺寸 (in pixels)-padtop size设置顶部补齐尺寸(in pixels)-padbottom size底补齐(in pixels)-padleft size左补齐(in pixels)-padright size右补齐(in pixels)-padcolor color补齐带颜色(000000-FFFFFF)-vn取消视频-vcodec codec强制使用codec编解码方式('copy' to copy stream)-sameq使用同样视频质量作为源(VBR)-pass n选择处理遍数(1或者2)。两遍编码非常有用。第一遍生成统计信息,第二遍生成精确的请求的码率-passlogfile file选择两遍的纪录文件名为file-newvideo在现在的视频流后面加入新的视频流 高级视频选项-pix_fmt formatset pixel format, 'list' as argument shows all the pixel formats supported-intra仅适用帧内编码-qscale q以<数值>质量为基础的VBR,取值0.01-255,约小质量越好-loop_input设置输入流的循环数(目前只对图像有效)-loop_output设置输出视频的循环数,比如输出gif时设为0表示无限循环-g int设置图像组大小-cutoff int设置截止频率-qmin int设定最小质量,与-qmax(设定最大质量)共用,比如-qmin 10 -qmax 31-qmax int设定最大质量-qdiff int量化标度间最大偏差 (VBR)-bf int使用frames B 帧,支持mpeg1,mpeg2,mpeg4音频选项:-ab设置比特率(单位:bit/s,也许老版是kb/s)前面-ac设为立体声时要以一半比特率来设置,比如192kbps的就设成96,转换 默认比特率都较小,要听到较高品质声音的话建议设到160kbps(80)以上。-aframes number设置转换多少桢(frame)的音频-aq quality设置音频质量 (指定编码)-ar rate设置音频采样率 (单位:Hz),PSP只认24000-ac channels设置声道数,1就是单声道,2就是立体声,转换单声道的TVrip可以用1(节省一半容量),高品质的DVDrip就可以用2-an取消音频-acodec codec指定音频编码('copy' to copy stream)-vol volume设置录制音量大小(默认为256) <百分比> ,某些DVDrip的AC3轨音量极小,转换时可以用这个提高音量,比如200就是原来的2倍-newaudio在现在的音频流后面加入新的音频流字幕选项:-sn取消字幕-scodec codec设置字幕编码('copy' to copy stream)-newsubtitle在当前字幕后新增-slang code设置字幕所用的ISO 639编码(3个字母)Audio/Video 抓取选项:-vc channel设置视频捕获通道(只对DV1394)-tvstd standard设
转换为flv: 
    ffmpeg -i test.mp3 -ab 56 -ar 22050 -b 500 -r 15 -s 320x240 test.flv 
    ffmpeg -i test.wmv -ab 56 -ar 22050 -b 500 -r 15 -s 320x240 test.flv 

 转换文件格式的同时抓缩微图: 
    ffmpeg -i "test.avi" -y -f image2 -ss 8 -t 0.001 -s 350x240 'test.jpg' 

  对已有flv抓图: 
    ffmpeg -i "test.flv" -y -f image2 -ss 8 -t 0.001 -s 350x240 'test.jpg' 

  转换为3gp:
    ffmpeg -y -i test.mpeg -bitexact -vcodec h263 -b 128 -r 15 -s 176x144 -acodec aac -ac 2 -ar 22500 -ab 24 -f 3gp test.3gp 
    ffmpeg -y -i test.mpeg -ac 1 -acodec amr_nb -ar 8000 -s 176x144 -b 128 -r 15 test.3gp
HLS点播--FFmpeg接收udp视频流

看到有网友问到,FFmpeg接收udp视频流实现HLS直播的方法,我这里由于没有UDP的直播源就用VLC将一个MP4文件生成UDP视频流来代替直播流。

1、确认Nginx安装配置成功支持HLS,具体过程可参考我以前博客。

2、使用VLC生成UDP视频流

3、FFmpeg接收udp流转换成RTMP视频流推送到Nginx上

[plain] view plain copy
  1. ffmpeg -i udp://192.168.1.110:1234 -vcodec copy -acodec aac -ar 44100 -strict -2 -ac 1 -f flv -s 1280x720 -q 10 rtmp://192.168.1.110:1935/hls/test2  

效果如下:

[plain] view plain copy
  1. Input #0, mpegts, from 'udp://192.168.1.110:1234':  
  2.   Duration: N/A, start: 1904.952289, bitrate: N/A  
  3.   Program 1   
  4.     Stream #0:0[0x45]: Video: h264 (High) ([27][0][0][0] / 0x001B), yuv420p, 1280x554 [SAR 1:1 DAR 640:277], 23.98 fps, 25 tbr, 90k tbn, 47.96 tbc  
  5. Output #0, flv, to 'rtmp://192.168.1.110:1935/hls/test2':  
  6.   Metadata:  
  7.     encoder         : Lavf56.15.102  
  8.     Stream #0:0: Video: h264 ([7][0][0][0] / 0x0007), yuv420p, 1280x554 [SAR 1:1 DAR 640:277], q=2-31, 23.98 fps, 1k tbn, 90k tbc  
  9. Stream mapping:  
  10.   Stream #0:0 -> #0:0 (copy)  
  11. Press [q] to stop, [?] for help  
  12. frame= 3695 fps= 15 q=-1.0 size=   32812kB time=00:02:36.16 bitrate=1721.3kbits/s      

4、在手机浏览器中输入地址

[plain] view plain copy
  1. http://192.168.1.110/hls/test2.m3u8  
0 0
原创粉丝点击