ffmpeg与TS

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()

原文地址:https://www.cnblogs.com/jingzhishen/p/3667994.html