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. 对PDO的认识

    1.PDO(PHP Data Object)扩展为PHP定义了一个访问数据库的轻量.持久的接口.实现PDO接口的每一种数据库驱动都能以正则扩展的形式把各自的特色表现出来. 主要:PDO扩展只是一个抽象 ...

  2. django 在python 3中提示 无法找到 MySQLDB

    一直百思不得其解,为什么会建立表失败,知道我看到了这个回答... I had luck with simply pip install mysqlclient in my python3.4 virt ...

  3. Shiro的认证原理(Subject#login的背后故事)

    登录操作一般都是我们触发的: Subject subject = SecurityUtils.getSubject(); AuthenticationToken authenticationToken ...

  4. ExtJs之组件(window)

    Ext.create('Ext.window.Window',{    title:'',    width:400,    height:300,    constrain:true,//限制窗口不 ...

  5. Java的锁研究

    Lock和synchronized     JDK1.5以后,在锁机制方面引入了新的锁-Lock,在网上的说法都比较笼统,结合网上的信息和我的理解这里做个总结.     java现有的锁机制有两种实现 ...

  6. [Lydsy1806月赛] 超速摄像头

    题面在这里! 可以证明只要叶子两两路径满足条件即可,于是便可以贪心啦,从最外圈(叶子)开始一层一层选,选出前 k/2 层. 如果k是奇数的话,还可以多选一个不是前 k/2 层的点. #include& ...

  7. ARC-100 C - Linear Approximation

    题面在这里! 可以看成点集{a[i]-i}和b之间距离的和,于是找到中位数就可以直接算了2333. #include<bits/stdc++.h> #define ll long long ...

  8. 【计算几何】【极角排序】【二分】Petrozavodsk Summer Training Camp 2016 Day 6: Warsaw U Contest, XVI Open Cup Onsite, Sunday, August 28, 2016 Problem J. Triangles

    平面上给你n(不超过2000)个点,问你能构成多少个面积在[A,B]之间的Rt三角形. 枚举每个点作为直角顶点,对其他点极角排序,同方向的按长度排序,然后依次枚举每个向量,与其对应的另一条直角边是单调 ...

  9. Java中的文件操作(一)RandomAccessFile

    今天,学到的是java中的文件操作. Java.IO.File Java中操作文件用到RandomAccessFile类,既可以读取文件内容,也可以向文件输出数据,但不同与普通输入/输出流的是Rand ...

  10. Linux使用pyVLfeat库做Dense sift提示段错误(segmentation fault)详细分析

    pyVLfeat是著名的图像处理库VLFeat在python上的接口包.在linux环境下使用该库提示“段错误”.百度后得知: 所谓的段错误就是指访问的内存超出了系统所给这个程序的内存空间 意思其实就 ...