zoukankan      html  css  js  c++  java
  • [转载]FFmpeg完美入门[3]

    ffplay对多媒体的支持能力验证

    一、视频3gp 177X144 支持播放,在windows下播放正常,但是在linux下面偶有BUG 如果发现画面无法显示而声音可以播放的情况下可以试着切换全屏或者切换分辨率。

    AVI 208X176 支持 320X240 支持 720X400 支持 720X576 支持

    DAT 352X288 支持

    DiVX 720X576 支持

    MKV 320X240 支持352X288 支持 704X304 支持 720X576 支持

    MP4 320X240 支持 352X288 支持 720X400 支持

    MPG 320X240 支持 352X288 支持 480X576 支持 720X576 支持 720X480 支持

    VOB 352X288 支持

    XVID 720X576 支持

    MOV 支持

    RMVB 支持

    二、音频

    AC3 48KHZ 支持

    APE 11KHZ 支持 22KHZ 支持 44KHZ 支持 48KHZ 支持

    MP3 32KHZ 64Kbps 支持 32KHZ 128KbpS 支持 32KHZ 160Kbps 支持 32KHZ 192Kbps 支持 32KHZ 320Kbps 支持 44KHZ 64Kbps 支持 44KHZ 128Kbps 支持 44KHZ 160Kbps 支持 44KHZ 192Kbps 支持 44KHZ 320Kbps 支持 48KHZ 64Kbps 支持 48KHZ 128Kbps 支持 48KHZ 160Kbps 支持 48KHZ 192Kbps 支持 48KHZ 320Kbps 支持

    OGG 32KHZ 128Kbps 支持 32KHZ 192Kbps 支持 44KHZ 64Kbps 支持44KHZ 128Kbps 支持 44KHZ 192Kbps 支持 48KHZ 64Kbps 支持 44KHZ 128Kbps 支持 44KHZ 192Kbps 支持

    WAV 11KHZ 支持 22KHZ 16Kbps 支持 44KHZ 16Kbps 支持 48KHZ 16Kbps 支持

    WMA 8KHZ 16Kbps 支持 11KHZ 16Kbps 支持 16KHZ 16Kbps 支持 22KHZ 16Kbps 支持 44KHZ 16Kbps 支持 48KHZ 16Kbps 支持

    三、图像

    PNG 支持

    JPG 支持

    JPEG 支持

    GIF 支持

    BMP 支持

    2 FFmpeg格式转换

    第一步:准备媒体前面已经讲的很清楚了,ffmpeg如何安装不在赘述。准备好相应的文件,如图2-1所示。

    第二步:启动ffmpeg 由于做的是格式转换,在ffserver上不能直观的看见结果,故我是在linux下进行的。打开终端,值得一提的是格式转换需要超级用户才能进行,故在 命令行输入:su,<回车>,输入密码进入超级用户,本例中,以FFmpeg将test.avi转换为test.mpg。在命令行中输 入:./ffmpeg –i test.avi –r 25 –s 720x400 test.mpg<回车>。其中原格式分辨率为320x240,将转为720x400,-r前面已经解释其含义,表示设置帧频为25。转换成 功后如图2-2所示,前后两种格式播放效果如图2-3所示。相应的,转换为其他格式做相应的变化即可。同时还可以在转换格式时进行强制的音视频转换,如 –vcodec + 格式,将会强制将视频按指定格式编码,-acodec +格式,将会强制按指定格式编码音频信息。在转换中有很多其他参数可以指定,如码率、分辨率、帧率等,具体按照ffmpeg的参数说明指定参数即可。但有 一条转低不转高的原则需要注意,即品质差的音视频转换不建议转换到品质好的音视频。

    再说说如何在转换视频的时候将音频合成到视频中,且覆盖其原来的音频。这个现在摸索出两种方法。

    方法一:需要两条命令实现,先在命令行中输入: ./ffmpeg –i test.avi -an –r 25 test.mpg <回车> 此时将生成一个没有声音的test.mpg视频,再在命令行中输入: ./ffmpeg –i test.mpg –i test.mp3 –r 25 test1.mpg<回车> 此时将会生成一个名为test1.mpg的视频。该视频播放时视频为test.avi的视频,但音频变为了test.mp3的音频了。

    方法二:只要一条指令即可实现。在命令行中输入: ./ffmpeg –i test.avi –i test.mp3 –vcodec copy –acodec copy –r 25 test2.mpg<回车> 此时将会生成一个名为test2.mpg的视频,播放时其视频为test.avi的视频,音频为test.mp3。–vcodec copy为force video codec(‘copy’ to copy stream)。有一点需要注意,文件命名不能有空格,否则会导致编译时不能通过。另外,-an为不能使音频记录。

    第三步:播放媒体播放我们转换的媒体,看看是否满足我们当初的愿望,不出什么差错的话,是完全能够满足我们的要求的。

    3 FFmpeg视频截图
    截取一张300x200尺寸大小的格式为jpg的一张图片: ./ffmpeg –i test.avi –y –f image2 –t 0.001 –s 300x200 test.jpg 要截取指定时间的图片,如5秒之后的: ./ffmpeg –i test.avi –y –f image2 –ss 5 –t 0.001 –s 300x200 test.jpg 其中,-ss后的单位为秒,也可写成:-ss 00:00:05。
    把视频的前30帧转换为一个动态的gif图。需要说明的是,转换成功之后,如果用ffplay播放是看不出效果的,建议换成其他图片播放器播放。其转换命 令为: ./ffmpeg –i test.avi –vframes 30 –pix_fmt rgb24–y –f gif test.gif 也可以从视频中的第10秒开始截取后面的5秒内容转换为一个无限重播的动态gif图。其命令为: ./ffmpeg –i test.avi –pix_fmt rgb24 –ss 10 –t 5 –y –f gif test.gif 上面两种动态gif都是只播一次,想让其一直播,可再加一个参数:-loop_output 0。

    4 FFmpeg屏幕录制
    屏幕录制其命令为: ./ffmpeg -f x11grab -r 25 -s wxga -i :0.0 /tmp/outputFile.mpg 其他相关参数可自行添加。需要说明的是,各个版本的ffmpeg对屏幕录制的命令不一。如果你只想录制一个应用程序窗口或者桌面上的一个固定区域,那么可 以指定偏移位置和区域大小。使用xwininfo -frame命令可以完成查找上述参数。 注:ffmpeg的屏幕录制功能只能在Linux环境下有效。并且在配置时需要添加 –enable-x11grub 指令,默认关闭。

    5 FFmpeg音视频采集
    把摄像头的实时视频录制下来,存储为文件./ffmpeg -f video4linux -s 320x240 -r 10 -i /dev/video0 test.asf 录音,其命令为: ./ffmpeg –i /dev/dsp -f oss test.mp3

  • 相关阅读:
    SpringBoot2.0 整合 QuartJob ,实现定时器实时管理
    SpringBoot2.0 整合 Swagger2 ,构建接口管理界面
    SpringBoot 2.0 整合sharding-jdbc中间件,实现数据分库分表
    基于 CODING 轻松搞定持续集成
    CODING 受邀参与 DevOps 标准体系之系统和工具&技术运营标准技术专家研讨会
    CODING 受邀参加《腾讯全球数字生态大会》
    CODING 告诉你硅谷的研发项目管理之道系列(6)
    CODING 告诉你硅谷的研发项目管理之道(3)
    CODING 告诉你硅谷项目经理的项目管理之道(2)
    CODING 签约天津大学,助力高校“产学”接轨
  • 原文地址:https://www.cnblogs.com/shines77/p/3500352.html
Copyright © 2011-2022 走看看