自己动手写RTP服务器——传输所有格式的视频
“这也太简单了吧,不就是用UDP把TS文件发过去么?就这么几十行代码也算个大作业?”
“平时看的视频格式哪有TS的呀,不是avi就是mp4、rmvb什么的,根本不实用啊!”
- ffmpeg -i INPUTFILE.XXX OUTPUTFILE.ts
预备知识
我们是否可以调用别人的分流器或者解码器?
参考代码
第一步
- int main(){
改为
- int main(int argc, char **argv){
- FILE *ts_file = fopen("/home/baby/Videos/480p.ts", "r+");
改为
- if (argc != 2){
- puts("Usage: ./rtp_server INPUTFILE");
- return 0;
- }
- FILE *ts_file = fopen(argv[1], "r+");
可以看出我们这次不读取固定文件,而是根据用户自己的输入读取文件,这样就灵活了许多。
第二步
- #!/bin/sh
- mkfifo fifo.ts
- ffmpeg -i $1 -y fifo.ts &
- ./rtp_server fifo.ts
只有四行有木有,很简单有木有!
自己动手写RTP服务器——传输所有格式的视频的更多相关文章
- 自己动手写RTP服务器——用RTP协议传输TS流
上一篇文章我们介绍了关于RTP协议的知识,那么我们现在就自己写一个简单的传输TS流媒体的RTP服务器吧. 预备知识 关于TS流的格式:TS流封装的具体格式请参考文档ISO/IEC 13818-1.这里 ...
- 自己动手写RTP服务器——关于RTP协议
转自:http://blog.csdn.net/baby313/article/details/7353605 本文会带领着你一步步动手实现一个简单的RTP传输服务器,旨在了解RTP流媒体传输协议以及 ...
- 自己动手写http服务器——处理http连接(二)
关于http报文格式请看这篇文章 //http_conn.h #ifndef HTTPCONNECTION_H #define HTTPCONNECTION_H #include <unistd ...
- 自己动手写http服务器——主程序(三)
功能:目前只支持对资源的访问. 使用的模型:多线程加epoll,与传统的一个连接请求一个线程处理不同的是,这个模型只为那些需要服务的连接请求调用线程进行处理, 整个模型的大致流程 创建一个线程持对象, ...
- 自己动手写http服务器——线程池(一)
创建一个线程池,每有一个连接对象就将它添加到工作队列中,线程池中的线程通过竞争来取得任务并执行它(它是通过信号量实现的). //filename threadpool.h #ifndef THREAD ...
- 利用html 5 websocket做个山寨版web聊天室(手写C#服务器)
在之前的博客中提到过看到html5 的websocket后很感兴趣,终于可以摆脱长轮询(websocket之前的实现方式可以看看Developer Works上的一篇文章,有简单提到,同时也说了web ...
- 自己动手写处理器之第二阶段(1)——可编程逻辑器件与PLD电路设计流程
将陆续上传本人写的新书<自己动手写处理器>(尚未出版),今天是第五篇,我尽量每周四篇 通过上一章的介绍,读者应该知道CPU内部有一些主要的电路,比方:译码电路.运算电路.控 ...
- 自己动手写处理器之第二阶段(2)——Verilog HDL简单介绍
将陆续上传本人写的新书<自己动手写处理器>(尚未出版),今天是第六篇.我尽量每周四篇 2.3 Verilog HDL简单介绍 本书实现的OpenMIPS处理器是使用Verilog HDL编 ...
- RTSP/RTP 媒体传输和控制协议
1 前言 本文档主要描述了 NewStream Vision 系统中前端视频服务器(DVR, 网络摄像机), 中心转发服务器以及客户端之间的多媒体通信以及控制协议. 本协议主要基于标准的 IETE 的 ...
随机推荐
- mac os vim 乱码
yum -y groupinstall chinese-support vim /etc/sysconfig/i18n LANG="zh_CN.UTF-8" LANGUAGE=&q ...
- WEBGL 2D游戏引擎研发系列 第一章 <新的开始>
WEBGL 2D游戏引擎研发系列 第一章 <新的开始> ~\(≥▽≤)/~HTML5游戏开发者社区(群号:326492427) 转载请注明出处:http://html5gamedev.or ...
- 什么是Web前端,Web前端是做什么的?
什么是Web前端 Web前端,顾名思义是来做Web的前端的.而Web前端开发应该就是来开发基于Web前端的相关应用的或者说是来开发前端的.那么,前端又是什么呢?我们这里所说的前端泛指Web前端,也就是 ...
- linux shell 札记
shell 数组 数组索引: 单个元素索引: ${array[n]} 全部元素: ${array[*]} 或者 ${array[@]} 部分索引: ${array[2:]} 数组所有元素统一加 ...
- 中标麒麟6.0_ICE3.4.2编译+demo测试(CPP)
(菜鸟版)确保 gcc版本4.4.6(其他版本未测试),4.8不行 一.降级GCC到4.4.6 注意:gcc g++ c++命令都为4.4.6(可用gcc -v; g++ -v; c++ -v 命令查 ...
- 标准C编程-笔记全集
C语言的基本概念 编写一个简单的C程序,后缀名保存为c(本次文件名为a.c) gcc:对c程序进行编译和连接:gcc a.c ./a.out:运行程序,输出程序的结果:其中a是c程序的文件名 说明:其 ...
- 读配置文件 properties
/** * */package com.sprucetec.tms.fee.utils;import java.io.IOException;import java.util.ArrayList;im ...
- hdu 1210_(逻辑训练)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1210 #include<stdio.h> int main() { int n,t,sum ...
- 雕爷牛腩这样判断零售未来-搜狐IT
雕爷牛腩这样判断零售未来-搜狐IT 雕爷牛腩这样判断零售未来
- Effective C++ 条款11
在operator=中处理"自我赋值" 什么是自我赋值,非常明显. 就是自己的值赋值给了自己.以下的代码就是自我赋值: class Widget { public: Widget& ...