1. ffmpeg推送本地局域网海康威视摄像头rtsp流到阿里云上自己搭建的nginx流服务器为什么不稳定
网络不稳定造成的。ffmpeg哪有那么智能,没有断点续传。
2. 如何利用ffmpeg 音频播放器播放本地文件
ffmpeg.exe -i ;源音频文件.ape; -b:a 192k -acodec mp3 -ar 44100 -ac 2 ;转换后的音频文件.mp3;采用的标准192K,44100采样率
3. ffmpeg/dshow直播推流不成功,怎么办
ffmpeg files是一种多媒体视频处理工具。 FFmpeg是一个集录制、转换、音/视频编码解码功能为一体的完整的开源解决方案。 FFmpeg的开发是基于Linux操作系统,但是可以在大多数操作系统中编译和使用。FFmpeg支持MPEG、DivX、MPEG4、AC3、DV、FLV等。
4. ffmpeg推流为什么报failed to update header with correct ration,错误
Wowza Media Server 的日志Code:server ERROR 500 – server core failure: java.net.BindException: Address already in usevhost WARN 200 _defaultVHost_ Bind failed, try again ([any]:1935): java.net.BindException: Address already in use原因: 通常的原因是这台服务器上已经有另一个Wowza Media Server正在运行。 wowzamediaserver_service.log 记录了安装的信息以及启动信息。 关闭掉所有Wowza Media Server的实例,然后重新启动。Wowza 可以作为一个服务运行,或作为独立模式(standalone mode)运行,或者在Wowza IDE中运行,但是在同一个时间只能运行一个。 要对JMX访问进行配置,请阅读管理和监控(JMX 和 JConsole)。Code:comment server ERROR 500 – Failed to connect: org.apache.mina.common.RuntimeIOException: Failed to get the session[ConnectException: Connection refused].comment server WARN 200 – .getStreamIn fo: RTSP/RTP re-streaming. Cannot connect to server: rtsp://[wowza-ip-address]/myStream.sdp原因:试图用不正确的凭证/授权去连接一个IP摄像头(被拒绝连接了)。Code:server WARN 200 – .handlePacket[live/_definst_/myStream]: Fragment ration greater than suggested range of 1-4 seconds. Adjust keyframe interval accordingly: Fragment rations: [5.0,5.0,5.0]原因: 对于Silverlight Smooth Streaming (仅针对直播流),关键帧的间隔(可以直接在一些编码器上设置,或者是gop除以fps)需要在1到4秒之间,推荐2秒。任何超过4秒的设置就会引起播放暂停。 如果你没有用Smooth Streaming,请在Streams/LiveStreamPacketizers中删除smoothstreamingpacketizer。Code:comment server WARN 200 – RTPPacket.write: Bad packet: Incomplete NAL Units.原因: 大多数是因为丢包。请打开丢包日志记录的功能以验证是否是这个问题。(请阅读Configure an RTP jitter buffer and packet loss logging (RTP/MPEG-TS over RTP).)Code:comment server ERROR 500 RTPDePacketizerMPEG4LATM.handleRTPPacket: Bad packet length: 200:105原因: 这暗示着网络连接故障。请试着在你本机或本地局域网来测试相同的流,来排除网络问题。Code:ERROR server comment HTTPUtils.HTTPRequestToByteArray: java.io.FileNotFoundException: http://[ip-address]/latest/meta-data/proct-codesWARN server comment Server.run: License key specified in [install-dir]/conf/Server.license file is malformed.ERROR server comment error: java.lang.NullPointerExceptionERROR server comment ERROR: Cannot write to license key file:原因: 这个错误可能是由于您使用了错误的授权码(license key)。例如,你将Wowza Media Server 2 的license key 用在了 Wowza Media Server 3 上。Code:ERROR: License key is not valid or license file does not exist and running as a service (exiting)原因: 这个错误是由于使用了永久授权的插件,但没有合法的Wowza服务器永久授权。Code:server comment ERROR com.wowza.wms.server.LicensingException: Server.license原因: 当使用性能测试工具时,在每一次性能测试脚本运行时,你会看到2个服务器license 错误。这个问题在Wowza的性能测试工具文档中有说明,可以忽略这个错误信息。Code:ERROR server comment – The Wowza Media Systems Software licensing system has determined that your serial number is not valid. Please validate that your are using the correct serial number. If this problem persists, please visit for up to date information.ERROR server comment – system.exit原因: 这个错误是由于你没有购买合法的license。请联系[email protected] 解决。Code:comment server ERROR 500 – invoke(): java.lang.NullPointerException: com.ptin.wms.mole.AbortSession.onHTTPCupertinoSt reamingSessionDestroy(EndSession.java:10)原因: 在这个案例中,在用户自定义模块AbortSession的第10行有一个错误。必须由这个模块的开发者来检查这个错误。Code:Comment server WARN 200 Application folder ([install-location]/applications/_defapp_) is missing原因: 这个错误发生在当你连接Wowza Media Server时,Wowza没有找到对应的应用名。Code:comment server WARN 200 – Application folder ([install-location]/applications/:80) is missing原因: 通常这是由于在使用ffmpeg作为编码器时,它没有正确的发送应用名。Code:comment server INFO 200 – RTPMediaCaster.create[9936743] – – – 2.469comment server INFO 200 – RTPMediaCaster.init[9936743] – – – 2.47comment server INFO 200 – RTPMediaCaster.Reconnector[9936743:live/_definst_:live/customer.stream]: start: 1 – – – 2.473comment server INFO 200 – VHost.startStartupStreams: Stream successfully started [live/_definst_]: flv:live/customer.stream – – – 2.486comment server ERROR 500 – Failed to connect: org.apache.mina.common.RuntimeIOException: Failed to get the session[java.net.NoRouteToHostException: No route to host]. – – – 5.603comment server WARN 200 – .getStreamIn fo: RTSP/RTP re-streaming. Cannot connect to server: rtsp://[wowza-ip-address]/customer.mp4 – – – 5.618comment server ERROR 500 – Failed to connect: org.apache.mina.common.RuntimeIOException: Failed to get the session[java.net.NoRouteToHostException: No route to host].原因: 这个MediaCaster的问题通常是由于一些网络错误引起的。例如SHOUTcast服务器没有启动。在这里我们看见有一个直播流启动了,接下来的警告和错误暗示Wowza Media Server被它依赖的网络连接错误影响。Code:Application (vod) is not defined原因: 如果是在使用例子播放器时遇到这个错误,并且应用'vod'是正确定义好的,那么可能是有另外一个应用已经占用了Wowza Media Server用的端口。在这种情况下, 不会向你期望的那样返回build number 并且在日志中不会有其它记录,因为服务器无法连接。Code:ERROR server comment RTSPConnecti on.connect[wowza-ip-address]:[port-number]: Failed to connect: org.apache.mina.common.RuntimeIOException: Failed to get the session[ConnectException: Connection refused: no further information].WARN server comment LiveMediaStreamReceiver.doWatchdog: streamTimeout: Resetting connection原因: Wowza Media Server无法连接到MediaCaster流。这可能是网络的问题或输入流的问题。例如,摄像头可以被访问,但是拒绝连接。Wowza Media Server 将会继续尝试连接直到流重新可用了。
5. 直播App开发中用到的推流是什么意思怎么实现
推流就是把采集阶段封包好的内容传输到服务器的过程。就相当于你的内容要先上传服务器,然后服务器那边才能传输给观众。跟上传有点类似,只不过是实时上传。怎么推流?这里涉及到一个很强大的东西ffmpeg,它是可以用来记录、转换数字音视频,并将其转化为流的开源软件,通过它可以进行视频的采集封装成流,并推送到流媒体服务器。例如使用ffmpeg进行mac本地摄像头实时推流到nodeMediaServer:ffmpeg -f avfoundation -video_size 1280×720 -framerate 30 -i 0:0 -vcodec libx264 -preset veryfast -f flv http://ip:8000/live/stream.flv复制代码这里涉及到ffmpeg工具,上面的参数不逐一解释,只是最重要的几个:-vide_size 表示要输出的视频画面的分辨率尺寸-f 后面的参数 flv表述输出的格式,再后面的地址 http://ip:8000/live/stream.flv 表示想要输出的地址,这个地址的stream.flv可以按照自己需求随意修改,保持后缀是你需要的flv格式即可另外一种常用的场景是直接拉去摄像头设备中的视频流数据,这种方式,nodeMediaServer也支持,只需要在管理后台配置对应的摄像头的配置信息,就可以进行推流操作了。这些配置信息包括ip,登录用户名和密码等。
6. FFmpeg功能命令汇总
前言如此强大的FFmpeg,能够实现视频采集、视频格式转化、视频截图、视频添加水印、视频切片、视频录制、视频推流、更改音视频参数功能等。通过终端命令如何实现这些功能,Richy在本文做一记录,以备之后查阅。 注意:下面一一列举的命令,未归类整理,命令参数供参考。 如果参数有误,大家可对照文章- FFmpeg参数命令 ,进行修改。 第一组 1.分离视频音频流 ffmpeg -i input_file -vcodec -an output_file_video//分离视频流ffmpeg -i input_file -acodec -vn output_file_audio//分离音频流 2.视频解复用 ffmpeg –i test.mp4 –vcodec –an –f m4v test.264 ffmpeg –i test.avi –vcodec –an –f m4v test.264 3.视频转码 ffmpeg –i test.mp4 –vcodec h264 –s 352*278 –an –f m4v test.264 //转码为码流原始文件 ffmpeg –i test.mp4 –vcodec h264 –bf 0 –g 25 –s 352*278 –an –f m4v test.264 //转码为码流原始文件 ffmpeg –i test.avi -vcodec mpeg4 –vtag xvid –qsame test_xvid.avi //转码为封装文件 说明: -bf B帧数目控制,-g 关键帧间隔控制,-s 分辨率控制 4.视频封装 ffmpeg –i video_file –i audio_file –vcodec –acodec output_file 5.视频剪切 ffmpeg –i test.avi –r 1 –f image2 image-%3d.jpeg //提取图片 ffmpeg -ss 0:1:30 -t 0:0:20 -i input.avi -vcodec -acodec output.avi //剪切视频//-r 提取图像的频率,-ss 开始时间,-t 持续时间 6.视频录制 ffmpeg –i rtsp://192.168.3.205:5555/test –vcodec out.avi 7、利用ffmpeg视频切片 主要把视频源切成若干个.ts格式的视频片段然后生成一个.m3u8的切片文件索引提供给html5的video做hls直播源 命令如下: ffmpeg -i 视频源地址 -strict -2 -c:v libx264 -c:a aac -f hls m3u8文件输出地址 8、ffmpeg缩放视频 假设原始视频尺寸是 1080p(即 1920×1080 px,16:9),使用下面命令可以缩小到 480p: 命令如下: ffmpeg -i 视频源地址 -vf scale=853:480 -acodec aac -vcodec h264 视频输出地址(如:out.mp4) 各个参数的含义:-i a.mov 指定待处理视频的文件名-vf scale=853:480 vf 参数用于指定视频滤镜,其中 scale 表示缩放,后面的数字表示缩放至 853×480 px,其中的 853px 是计算而得,因为原始视频的宽高比为 16:9,所以为了让目标视频的高度为 480px,则宽度 = 480 x 9 / 16 = 853-acodec aac 指定音频使用 aac 编码。注:因为 ffmpeg 的内置 aac 编码目前(写这篇文章时)还是试验阶段,故会提示添加参数 “-strict -2” 才能继续,尽管添加即可。又或者使用外部的 libfaac(需要重新编译 ffmpeg)。-vcodec h264 指定视频使用 h264 编码。注:目前手机一般视频拍摄的格式(封装格式、文件格式)为 mov 或者 mp4,这两者的音频编码都是 aac,视频都是 h264。out.mp4 指定输出文件名上面的参数 scale=853:480 当中的宽度和高度实际应用场景中通常只需指定一个,比如指定高度为 480 或者 720,至于宽度则可以传入 “-1” 表示由原始视频的宽高比自动计算而得。即参数可以写为:scale=-1:480,当然也可以 scale=480:-1 9、ffmpeg裁剪 有时可能只需要视频的正中一块,而两头的内容不需要,这时可以对视频进行裁剪(crop),比如有一个竖向的视频 1080 x 1920,如果指向保留中间 1080×1080 部分命令如下:ffmpeg -i 视频源地址 -strict -2 -vf crop=1080:1080:0:420 视频输出地址(如:out.mp4) 其中的 crop=1080:1080:0:420 才裁剪参数,具体含义是 crop=width:height:x:y,其中 width 和 height 表示裁剪后的尺寸,x:y 表示裁剪区域的左上角坐标。比如当前这个示例,我们只需要保留竖向视频的中间部分,所以 x 不用偏移,故传入0,而 y 则需要向下偏移:(1920 – 1080) / 2 = 420 10. 转视频格式 ffmpeng -i source.mp4 -c:v libx264 -crf 24 destination.flv 其中 -crf 很重要,是控制转码后视频的质量,质量越高,文件也就越大。 此值的范围是 0 到 51:0 表示高清无损;23 是默认值(如果没有指定此参数);51 虽然文件最小,但效果是最差的。 值越小,质量越高,但文件也越大,建议的值范围是 18 到 28。而值 18 是视觉上看起来无损或接近无损的,当然不代表是数据(技术上)的转码无损。 第二组 1.ffmpeg 把文件当做直播推送至服务器 (RTMP + FLV) ffmpeg – re -i demo.mp4 -c – f flv rtmp://w.gslb.letv/live/streamid 2.将直播的媒体保存到本地 ffmpeg -i rtmp://r.glsb.letv/live/streamid -c streamfile.flv 3.将一个直播流,视频改用h264压缩,音频改用faac压缩,送至另一个直播服务器 ffmpeg -i rtmp://r.glsb.letv/live/streamidA -c:a libfaac -ar 44100 -ab 48k -c:v libx264 -vpre slow -vpre baseline -f flv rtmp://w.glsb.letv/live/streamb 4.提取视频中的音频,并保存为mp3 然后输出 ffmpeg -i input.avi -b:a 128k output.mp3 第三组 1.获取视频的信息 ffmpeg -i video.avi 2.将图片序列合成视频 ffmpeg -f image2 -i image%d.jpg video.mpg 上面的命令会把当前目录下的图片(名字如:image1.jpg. image2.jpg. 等…)合并成video.mpg 3.将视频分解成图片序列 ffmpeg -i video.mpg image%d.jpg 上面的命令会生成image1.jpg. image2.jpg. … 支持的图片格式有:PGM. PPM. PAM. PGMYUV. JPEG. GIF. PNG. TIFF. SGI 4.为视频重新编码以适合在iPod/iPhone上播放 ffmpeg -i source_video.avi input -acodec aac -ab 128kb -vcodec mpeg4 -b 1200kb -mbd 2 -flags +4mv+trell -aic 2 -cmp 2 -subcmp 2 -s 320×180 -title X final_video.mp4 5.为视频重新编码以适合在PSP上播放 ffmpeg -i source_video.avi -b 300 -s 320×240 -vcodec xvid -ab 32 -ar 24000 -acodec aac final_video.mp4 6.从视频抽出声音.并存为Mp3 ffmpeg -i source_video.avi -vn -ar 44100 -ac 2 -ab 192 -f mp3 sound.mp3 7.将wav文件转成Mp3 ffmpeg -i son_origine.avi -vn -ar 44100 -ac 2 -ab 192 -f mp3 son_final.mp3 8.将.avi视频转成.mpg ffmpeg -i video_origine.avi video_finale.mpg 9.将.mpg转成.avi ffmpeg -i video_origine.mpg video_finale.avi 10.将.avi转成gif动画(未压缩) ffmpeg -i video_origine.avi gif_anime.gif 11.合成视频和音频 ffmpeg -i son.wav -i video_origine.avi video_finale.mpg 12.将.avi转成.flv ffmpeg -i video_origine.avi -ab 56 -ar 44100 -b 200 -r 15 -s 320×240 -f flv video_finale.flv 13.将.avi转成dv ffmpeg -i video_origine.avi -s pal -r pal -aspect 4:3 -ar 48000 -ac 2 video_finale.dv 或者: ffmpeg -i video_origine.avi -target pal-dv video_finale.dv 14.将.avi压缩成divx ffmpeg -i video_origine.avi -s 320×240 -vcodec msmpeg4v2 video_finale.avi 15.将Ogg Theora压缩成Mpeg dvd ffmpeg -i film_sortie_cinelerra.ogm -s 720×576 -vcodec mpeg2video -acodec mp3 film_terminate.mpg 16.将.avi压缩成SVCD mpeg2 NTSC格式: ffmpeg -i video_origine.avi -target ntsc-svcd video_finale.mpg PAL格式: ffmpeg -i video_origine.avi -target pal-dvcd video_finale.mpg 17.将.avi压缩成VCD mpeg2 NTSC格式: ffmpeg -i video_origine.avi -target ntsc-vcd video_finale.mpg PAL格式: ffmpeg -i video_origine.avi -target pal-vcd video_finale.mpg 18.多通道编码 ffmpeg -i fichierentree -pass 2 -passlogfile ffmpeg2pass fichiersortie-2 19.从flv提取mp3 ffmpeg -i source.flv -ab 128k dest.mp3 第四组 1、将文件当做直播送至live ffmpeg -re -i localFile.mp4 -c -f flv rtmp://server/live/streamName 2、将直播媒体保存至本地文件 ffmpeg -i rtmp://server/live/streamName -c mp.flv 3、将其中一个直播流,视频改用h264压缩,音频不变,送至另外一个直播服务流 ffmpeg -i rtmp://server/live/originalStream -c:a -c:v libx264 -vpre slow -f flv rtmp://server/live/h264Stream 4、将其中一个直播流,视频改用h264压缩,音频改用faac压缩,送至另外一个直播服务流 ffmpeg -i rtmp://server/live/originalStream -c:a libfaac -ar 44100 -ab 48k -c:v libx264 -vpre slow -vpre baseline -f flv rtmp://server/live/h264Stream 5、将其中一个直播流,视频不变,音频改用faac压缩,送至另外一个直播服务流 ffmpeg -i rtmp://server/live/originalStream -acodec libfaac -ar 44100 -ab 48k -vcodec -f flv rtmp://server/live/h264_AAC_Stream 6、将一个高清流,复制为几个不同视频清晰度的流重新发布,其中音频不变 ffmpeg -re -i rtmp://server/live/high_FMLE_stream -acodec -vcodec x264lib -s 640×360 -b 500k -vpre medium -vpre baseline rtmp://server/live/baseline_500k -acodec -vcodec x264lib -s 480×272 -b 300k -vpre medium -vpre baseline rtmp://server/live/baseline_300k -acodec -vcodec x264lib -s 320×200 -b 150k -vpre medium -vpre baseline rtmp://server/live/baseline_150k -acodec libfaac -vn -ab 48k rtmp://server/live/audio_only_AAC_48k 7、功能一样,只是采用-x264opts选项 ffmpeg -re -i rtmp://server/live/high_FMLE_stream -c:a -c:v x264lib -s 640×360 -x264opts bitrate=500:profile=baseline:preset=slow rtmp://server/live/baseline_500k -c:a -c:v x264lib -s 480×272 -x264opts bitrate=300:profile=baseline:preset=slow rtmp://server/live/baseline_300k -c:a -c:v x264lib -s 320×200 -x264opts bitrate=150:profile=baseline:preset=slow rtmp://server/live/baseline_150k -c:a libfaac -vn -b:a 48k rtmp://server/live/audio_only_AAC_48k 8、将当前摄像头及音频通过DSSHOW采集,视频h264、音频faac压缩后发布 ffmpeg -r 25 -f dshow -s 640×480 -i video=”video source name”:audio=”audio source name” -vcodec libx264 -b 600k -vpre slow -acodec libfaac -ab 128k -f flv rtmp://server/application/stream_name 9、将一个JPG图片经过h264压缩循环输出为mp4视频 ffmpeg.exe -i INPUT.jpg -an -vcodec libx264 -coder 1 -flags +loop -cmp +chroma -subq 10 -qcomp 0.6 -qmin 10 -qmax 51 -qdiff 4 -flags2 +dct8x8 -trellis 2 -partitions +parti8x8+parti4x4 -crf 24 -threads 0 -r 25 -g 25 -y OUTPUT.mp4 10、将普通流视频改用h264压缩,音频不变,送至高清流服务(新版本FMS live=1) ffmpeg -i rtmp://server/live/originalStream -c:a -c:v libx264 -vpre slow -f flv “rtmp://server/live/h264Stream live=1〃 文/骚之哈塞给(作者)
7. ffmpeg使用方法
FFmpeg程序把-i参数指定的若干文件内容读入到内存,按照输入的参数或者程序默认的参数来处理并且把结果写入到若干的文件中。输入和输出文件可以是计算机文件、管道、网络流、捕获设备等。
8. 如何使 ffmpeg 推流帧率5
这个是视频模块,空间应该不支持,除非你自己买vps