http://blog.csdn.net/shuyong1999/article/details/7176329

一个不错的音视频博客

0. 简介

FFmpeg是一个集录制、转换、音/视频编码解码功能为一体的完整的开源解决方案。FFmpeg的开发是基于Linux操作系统,但是可以在大多数操作 系统中编译和使用。FFmpeg支持MPEG、DivX、MPEG4、AC3、DV、FLV等40多种编码,AVI、MPEG、OGG、 Matroska、ASF等90多种解码.TCPMP, VLC, MPlayer等开源播放器都用到了FFmpeg。
       
FFmpeg主目录下主要有libavcodec、libavformat和libavutil等子目录。其中libavcodec用于存放各个
encode/decode模块,libavformat用于存放muxer/demuxer模块,libavutil用于存放内存操作等辅助性模块

        以flash movie的flv文件格式为例,
muxer/demuxer的flvenc.c和flvdec.c文件在libavformat目录下,encode/decode的
mpegvideo.c和h263de.c在libavcodec目录下。

1.准备ffmpeg-0.9

2.目录

ffmpeg-0.9
|-- avconv.c
|-- Changelog
|-- cmdutils.c
|-- cmdutils_common_opts.h
|-- cmdutils.h
|-- common.mak
|-- configure
|-- COPYING.GPLv2
|-- COPYING.GPLv3
|-- COPYING.LGPLv2.1
|-- COPYING.LGPLv3
|-- CREDITS
|-- doc
|-- Doxyfile
|-- ffmpeg.c
|-- ffplay.c
|-- ffpresets
|-- ffprobe.c
|-- ffserver.c
|-- INSTALL
|-- libavcodec
|-- libavdevice
|-- libavfilter
|-- libavformat
|-- libavutil
|-- libpostproc
|-- libswresample
|-- libswscale
|-- LICENSE
|-- MAINTAINERS
|-- Makefile
|-- mt-work
|-- presets
|-- README
|-- RELEASE
|-- subdir.mak
|-- tests
|-- tools
|-- VERSION
`-- version.sh

3.目录解析

libavcodec用于存放各个encode/decode模块,CODEC其实是Coder/Decoder的缩写,也就是编码解码器;用于各种类型声音/图像编解码。

libavformat用于存放muxer/demuxer模块,对音频视频格式的解析;用于各种音视频封装格式的生成和解析,包括获取解码所需信息以生成解码上下文结构和读取音视频帧等功能;

其中库 libavcodec,libavformat用于对媒体文件进行处理,如格式的转换;

libavutil集项工具,包含一些公共的工具函数;用于存放内存操作等辅助性模块,是一个通用的小型函数库,该库中实现了CRC校验码的产生,128位整数数学,最大公约数,整数开方,整数取对数,内存分配,大端小端格式的转换等功能

libavdevice:对输出输入设备的支持;

libpostproc:用于后期效果处理;

libswscale:用于视频场景比例缩放、色彩映射转换

ffmpeg软件包经编译过后将生成三个可执行文件,ffmpeg,ffserver,ffplay。其中ffmpeg用于对媒体文件进行处理,ffserver是一个http的流媒体服务器,ffplay是一个基于SDL的简单播放器。

5.配置编译

./configure --enable-shared --disable-static

make

妈呀,支持好多的库啊

6.使用ffmpeg+ffserver+ffplay实现视频点播

6.0准备

6.0.1ffmpeg

sudo apt-get install ffmpeg

采用debian6自带的ffmpeg,ffmpeg-0.9自编译的ffmpeg工具采集音频时不支持alsa参数(还没找到问题)

6.0.2罗技C270无驱摄像头

debian6对C270的支持,就参照上一篇文章

6.1节目源

USB摄像头:罗技C270,无驱。

6.1.1对视频的支持:/dev/video0

6.1.2对音频的支持状态:cat /dev/sndstat

Sound Driver:3.8.1a-980706 (ALSA v1.0.21 emulation code)
Kernel: Linux debian 2.6.32-5-686 #1 SMP Thu Nov 3 04:23:54 UTC 2011 i686
Config options: 0
Installed drivers:
Type 10: ALSA emulation
Card config:
HDA Intel at 0xf9ff8000 irq 22
USB Device 0x46d:0x825 at usb-0000:00:1a.0-1.2, high speed
HDA NVidia at 0xfbc00000 irq 16
Audio devices: NOT ENABLED IN CONFIG
Synth devices: NOT ENABLED IN CONFIG
Midi devices: NOT ENABLED IN CONFIG
Timers:
31: system timer

6.1.3 对音频设备支持的设备节点

controlC1可能就是对应的音频设备文件(推测)

6.1.4 对音频设备MIC的音频采集

请参照其他的文章!(还没做)

6.2视频服务器启动

6.2.1服务器配置:ffmpeg-0.9/tests/ffserver.conf

6.2.1.1
#File tests/feed1.ffm
File /home/shuyong/feed1.ffm

6.2.2启动:ffserver -f ffmpeg-0.9/tests/ffserver.conf

6.2视频采集发往服务器ffmpeg -i test1.mpg http://<server name or ip>:8090/feed1.ffm

6.2.1发往网络  sudo ffmpeg -f video4linux2 -s 320*240 -r 10 -i /dev/video0 http://127.0.0.1:8090/feed1.ffm

ffmpeg -f video4linux2 -s 320*240 -r 10 -i /dev/video0 -f alsa -ab
16 -ar 22050 -ac 1 -f mp3 -f flv    http://127.0.0.1:8090/feed1.ffm

6.2.2保存为本地数据:sudo ffmpeg -f video4linux2 -s 320*240 -r 10 -i /dev/video0 test.asf

6.2.3采集音视频数据: ffmpeg -f alsa -ab 32 -i pulse -f video4linux2 -s qcif -i /dev/video0 out.mpg

6.2.4采集音视频数据

If you specify the input format and device then ffmpeg can grab videoand audio directly.

 
ffmpeg -f oss -i /dev/dsp -f video4linux2 -i /dev/video0 /tmp/out.mpg

Or with an ALSA audio source (mono input, card id 1) instead of OSS:

 
ffmpeg -f alsa -ac 1 -i hw:1 -f video4linux2 -i /dev/video0 /tmp/out.mpg

Note that you must activate the right video source and channel beforelaunching ffmpeg with any TV viewer such asxawtv by Gerd Knorr. You alsohave to set the audio recording levels correctly with astandard mixer.

6.2.4Linux下用 FFMPEG 采集 usb摄像头视频 和 摄像头内置麦克风音频 到RTMP服务

ffmpeg -f video4linux2 -qscale 10 -r 12 -s 640x480 -i /dev/video0 -f
alsa -i hw:1 -ab 16 -ar 22050 -ac 1 -f mp3 -f flv
rtmp://127.0.0.1/rtmpsvr/rtmp1

ffmpeg -f video4linux2 -s 320*240 -r 10 -i /dev/video0 -f alsa -ab
16 -ar 22050 -ac 1 -f mp3 -f flv    http://127.0.0.1:8090/feed1.ffm

6.4客户端视频播放:ffplay http://localhost:8090/test1.mpg

ffplay http://127.0.0.1:8090/test1.mpg

7.libavformat

5.1av_register_all()

ffmpeg与TS的更多相关文章

  1. 分析ffmpeg解析ts流信息的源码

    花费一些时间,然后全部扔了.为了不忘记和抛砖引玉,特发此贴. ffmpeg解析ts流 1.目的     打算软件方式解析出pat,pmt等码流信息 2.源代码所在位置         下载ffmpeg ...

  2. ffmpeg解析TS流

    介绍:  MPEG的系统层编码为不同的应用场景设计了两种格式:  TS(Transport Stream) 和PS(Program Stream), 它们两者之间不具有层级关系, 在逻辑上,它们两者都 ...

  3. ffmpeg把ts文件转m3u8并切片

    Linux_x86_64流媒体环境:nginx + EasyDarwin-master 客户端播放器:VLC media player 下载windows下的ffmepg二进制版本,请进网站http: ...

  4. ffmpeg 视频ts切片生成m3u8

    下面几种转换方式是不同版本和方法 新版本ffmpeg转视频直接可以切边并生成 m3u8(目前用的方式,也可以用选项 segment ): ffmpeg -i '源文件.mp4' -c:v h264 - ...

  5. ffmpeg h264+ts +(sdl)显示方式

    网友: 明月惊鹊(357161826) 2014-1-16 10:07:00ffmpeg + sdl一米阳光(740053660) 2014-1-16 10:08:29Simple DirectMed ...

  6. ffmpeg h264+ts +udp传输

    http://bbs.csdn.net/topics/370246456 http://1229363.blog.163.com/blog/static/19743427201001244711137 ...

  7. 转:Nginx+ffmpeg的HLS开源服务器搭建配置及开发详解

    转:http://itindex.net/detail/51186-nginx-ffmpeg-hls 本文概述: 至目前为止,HLS 是移动平台上非常重要并十分流行的流媒体传输协议.做移动平台的流媒体 ...

  8. 使用ffmpeg搭建HLS直播系统

    [时间:2018-04] [状态:Open] [关键词:流媒体,stream,HLS, ffmpeg,live,直播,点播, nginx, ssegment] 0 引言 本文作为HLS综述的后续文章. ...

  9. FFmpeg多媒体文件格式探测

    FFmpeg版本:3.4 在FFmpeg中,每一种文件容器格式都对应一种AVInputFormat 结构,位于源码中libavformat文件夹中.当调用avformat_open_input的时候, ...

随机推荐

  1. 2018 ACM-ICPC 北京网络赛

    Problem A 最短路,跑一下dij就可以了. Problem B Problem C 按照题意模拟,不过坑点很多 1.注意字典序: 2.注意挑战的时候失败的那个人要把当前所有桌子上的牌都拿走 P ...

  2. 【容斥原理】【分解质因数】poj1091 跳蚤

    题意转化为求一个线性组合a1*x1+a2*x2+...+an*xn+m*xn+1=1在什么时候可以有解.(ai在1~m的范围内任取) 易得当且仅当gcd(a1,a2,...,an)=1时可能有解. 然 ...

  3. 【二分图匹配】BZOJ1562-[NOI2009] 变换序列

    [题目大意] 对于0,1,…,N-1的N个整数,给定一个距离序列D0,D1,…,DN-1,定义一个变换序列T0,T1,…,TN-1使得每个i,Ti的环上距离等于Di.一个合法的变换序列应是0,1,…, ...

  4. [POI2008]Triangles

    题目大意: 平面直角坐标系上有n个点,问以这n个点为顶点的不同的三角形的面积和是多少? 思路: 很容易想到一个O(n^3)的暴力,枚举三个点,用海龙公式求一下面积和即可,这样做是40分. 标算的复杂度 ...

  5. Codeforces Round #127 (Div. 1) E. Thoroughly Bureaucratic Organization 二分 数学

    E. Thoroughly Bureaucratic Organization 题目连接: http://www.codeforces.com/contest/201/problem/E Descri ...

  6. 使用Git代替FTP进行虚拟主机的代码管理

    为什么要使用Git代替FTP的原因: 由于本人菜鸟+穷屌,玩不起VPS和其他大牌的云主机,所以呢就只能在景安(这不是广告..)申请了免费的虚拟主机,就想着自己玩玩而已,免费的嘛,空间流量什么的就不讨论 ...

  7. 查看mysql服务器连接

    查看服务器连接,排查连接过多,查看连接状态时特别有用! 命令: show full processlist 作用: 显示当前运行的线程以及状态,也可以根据该命令来查看服务器状态. Id: 连接Id.U ...

  8. 【maven】pom.xml文件没错,但是项目有小红叉,Problems中可以看到错误:“Dynamic Web Module 3.0 requires Java 1.6 or newer.”

    解决方法: 1.将 <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>m ...

  9. Oracle的sqlnet.ora文件配置

    DBA对这个文件一定不会陌生,大家了解最多的也一定是sqlnet.ora用来决定oracle怎么解析一个连接中出现的字符串,例如: sqlplus sys/oracle@orcl 那么这个orcl怎么 ...

  10. iview2.x版本升级3.x版本icon修改清单

    当前公司使用有一个旧项目的前端组件库是iview2.x,入职以来维护该项目过程中碰到2.x版本无数的坑. 最近需求不多,闲来无事把2.x升级到3.x版本了. 新版本除了网上轻易可查到的button组件 ...