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. 转:攻击JavaWeb应用[1]-javaEE基础

    http://www.cnblogs.com/oh3o/p/3224562.html JSP: 全名为java server page,其根本是一个简化的Servlet. Servlet:Servle ...

  2. 关于 Unity WebGL 的探索(二)

    关于 Unity WebGL 的探索(二) 上一篇博客记录了关于 WebGL 移植的第一步:部分 C/C++ 插件的编译,目前项目中的部分插件使用该方法通过,接下来比较大的一部分工作量是网络模块 We ...

  3. Single Number III(LintCode)

    Single Number III Given 2*n + 2 numbers, every numbers occurs twice except two, find them. Example G ...

  4. 解决vscode按下ctrl+S的时候自动格式化

    按下ctrl+S的时候自动格式化 为什么需要这种操作? 优点: 保存的时候格式化,让我们的代码自动格式化,减少人工调整. 缺点: 有一些打好包的JS有时候修改一下,但不需要格式化,因为打好包就是要压缩 ...

  5. 进入bios后没有usb启动项怎么办

    开机按DEL进入BIOS(现在还这么说吧,不同的主板进入方法不太一样),找到BOOT选项. 选择Boot mood:legacy support(引导模式,逻辑支持) boot priorty:leg ...

  6. CodeForces - 1000E We Need More Bosses

    题面在这里! 依然一眼题,求出割边之后把图缩成一棵树,然后直接求最长链就行了2333 #include<bits/stdc++.h> #define ll long long using ...

  7. 【最短路】【dijkstra】【二进制拆分】hdu6166 Senior Pan

    题意:给你一张带权有向图,问你某个点集中,两两结点之间的最短路的最小值是多少. 其实就是dijkstra,只不过往堆里塞边的时候,要注意塞进去它是从集合中的哪个起始点过来的,然后在更新某个点的答案的时 ...

  8. 【递推】【组合数】【容斥原理】UVA - 11806 - Cheerleaders

    http://www.cnblogs.com/khbcsu/p/4245943.html 本题如果直接枚举的话难度很大并且会无从下手.那么我们是否可以采取逆向思考的方法来解决问题呢?我们可以用总的情况 ...

  9. 小H的硬币游戏

    题目大意: 有n个物品排成一排,每个物品都有自己的价值,你每次可以从中挑选两个距离为k的物品取走,问最大的收益. (如果原来两个物品中间有物品被取走,距离不变) 思路: 贪心. 先按照每个物品的位置m ...

  10. c语言下的变量类型及计算

    源码 补码 反码 机器数:一个数在计算机中的二进制表示形式,  叫做这个数的机器数.机器数是带符号的,在计算机用一个数的最高位存放符号, 正数为0, 负数为1.   真值:第一位是符号位,将带符号位的 ...