python ffmpeg转码_使用FFMPEG进行HTML5 /和实时转码
我最近遇到了同样的问题,因为我想把我的图书馆服务于浏览器。令人惊讶的是,通过ffmpeg发送流并在飞行中传送的想法效果非常好。主要问题是支持寻求…
以下,您在Python中使用Flask找到代码sniplet来解决问题:
我们需要一个功能来流式传输内容:
@app.route('/media/.ogv')
def media_content_ogv(path):
d= os.path.abspath( os.path.join( config.media_folder,path ) )
if not os.path.isfile( d ): abort(404)
start= request.args.get("start") or 0
def generate():
cmdline= list()
cmdline.append( config.ffmpeg )
cmdline.append( "-i" )
cmdline.append( d );
cmdline.append( "-ss" )
cmdline.append( str(start) );
cmdline.extend( config.ffmpeg_args )
print cmdline
FNULL = open(os.devnull,'w')
proc= subprocess.Popen( cmdline,stdout=subprocess.PIPE,stderr=FNULL )
try:
f= proc.stdout
byte = f.read(512)
while byte:
yield byte
byte = f.read(512)
finally:
proc.kill()
return Response(response=generate(),status=200,mimetype='video/ogg',headers={'Access-Control-Allow-Origin': '*',"Content-Type":"video/ogg","Content-Disposition":"inline","Content-Transfer-Enconding":"binary"})
那么我们需要一个函数来返回持续时间:
@app.route('/media/.js')
def media_content_js(path):
d= os.path.abspath( os.path.join( config.media_folder,path ) )
if not os.path.isfile( d ): abort(404)
cmdline= list()
cmdline.append( config.ffmpeg )
cmdline.append( "-i" )
cmdline.append( d );
duration= -1
FNULL = open(os.devnull,'w')
proc= subprocess.Popen( cmdline,stderr=subprocess.PIPE,stdout=FNULL )
try:
for line in iter(proc.stderr.readline,''):
line= line.rstrip()
#Duration: 00:00:45.13,start: 0.000000,bitrate: 302 kb/s
m = re.search('Duration: (..):(..):(..)\...',line)
if m is not None: duration= int(m.group(1)) * 3600 + int(m.group(2)) * 60 + int(m.group(3)) + 1
finally:
proc.kill()
return jsonify(duration=duration)
最后,我们使用videojs将其侵入HTML5:
var video= videojs('video');
video.src("media/testavi.avi.ogv");
// hack duration
video.duration= function() { return video.theDuration; };
video.start= 0;
video.oldCurrentTime= video.currentTime;
video.currentTime= function(time)
{
if( time == undefined )
{
return video.oldCurrentTime() + video.start;
}
console.log(time)
video.start= time;
video.oldCurrentTime(0);
video.src("media/testavi.avi.ogv?start=" + time);
video.play();
return this;
};
$.getJSON( "media/testavi.avi.js",function( data )
{
video.theDuration= data.duration;
});
德罗
python ffmpeg转码_使用FFMPEG进行HTML5 /和实时转码相关推荐
- ffmpeg视频压缩速度_使用ffmpeg修改视频速度
ffmpeg视频压缩速度 I watch a lot of sports and recently I've become fascinated with some of the methodolog ...
- python ffmpeg剪辑视频_用ffmpeg快速剪切和合并视频
如果直接找视频剪切和合并视频的软件,通常出来的都是大的视频编辑软件或者是有图形界面的剪切软件,大型一点的功能太多安装麻烦,小型一点的功能可能不齐全. 只是简单的剪切或者一下合并一下,还是ffmpeg这 ...
- ffmpeg h265编码_基于ffmpeg库mp4编码记录。
要讨论的话题主要为以下: 话题1:音频流选用aac编码格式需要注意的地方. 话题2:音频流视频流同步需要注意的地方. 基本模式如下所示: 关于话题1部分,背景工作于基于海思平台35XX系列的SDK开发 ...
- ffmpeg webm 提取_使用 FFmpeg 对 webp转png , webm转mp4或者gif等进行操作
最近浏览一些网站发现这些网站的图片格式为 webp .视频格式为 webm .相信对于一些喜欢收藏并且分享的人 或者 内容搬运工来说,这两个格式都不是一个比较好的选择.将它们转换为 png 或者 jp ...
- ffmpeg webm 提取_使用ffmpeg将webm转换为mp4
当我尝试将webm文件转换为mp4时,输出非常不连贯,并且似乎ffmpeg丢弃了许多帧 我使用以下命令进行转换 ffmpeg -i movie.webm movie.mp4 ffmpeg -i mov ...
- python检测屏幕亮点_图像处理之坏点校正及源码实现
1 坏点介绍 图像坏点(Bad pixel) : 图像传感器上光线采集点(像素点)所形成的阵列存在工艺上的缺陷,或光信号进行转化为电信号的过程中出现错误,从而会造成图像上像素信息错误,导致图像中的像素 ...
- python idle怎么使用_[森林]手把手教你如何使用作弊码
P.S.封面的图被我P过 首先你需要进入标题画面标题画面 在使用控制台命令(作弊码)之前,你需要在选项--游戏玩法中打开允许作弊(必须)如图,允许作弊处于打开状态 然后返回标题画面,关闭输入法(必须) ...
- python括号匹配问题_支持通配符的括号匹配问题源码+详细流程代码(python)
问题: 判断一个有左括号和右括号.以及其他ASCII字符组成的表达式是合法. 判断条件是左括号-右括号数目.次序配对,可多层嵌套.如果有*,则*可作为0个或者1个右括号,如果匹配则输出ok,不匹配则输 ...
- 哈希值 哈希码_什么是哈希? 哈希码如何工作-带有示例
哈希值 哈希码 哈希简介 (Introduction to hashing) Hashing is designed to solve the problem of needing to effici ...
- java 执行字节码_深入理解java:1.2. 字节码执行引擎
执行引擎是Java虚拟机的核心组成部分之一. 首先,想想C++和Java在编译和运行时到底有啥不一样? 下图左边,C++发布的就是机器指令, 而下图右边Java发布的是字节码,字节码在运行时通过JVM ...
最新文章
- linux下的c socket编程(4)--server端的继续研究
- 【Android 高性能音频】Oboe 开发流程 ( 创建并设置 AudioStreamCallback 对象 | 打开 Oboe 音频流 | 日志封装 logging_macros.h )
- Ubuntu 下连接Github
- 009 Android之ContentProvider
- matlab中利用princomp实现PCA降维
- SpringBoot maven打包源码发布到仓库配置
- 滨河新区(黄河楼)夜景
- Dubbo-gok8s注册中心设计方案与实现
- 仿拉钩app(一)---爬虫数据准备
- 不可重复读和幻读的区别_图解脏写、脏读、不可重复读、幻读
- qt程序使用多行linux命令,开发Qt应用程序的基本方法总结
- Linux下C语言进程通讯编程
- 安装SQL server2017提示无法打开注册表项:“Software\Microsoft\MicrosoftsQL Server\140\Bootstrap“,注册表可能已损环。
- LOJ #10155. 「一本通 5.2 例 3」数字转换
- 认证模式之Digest模式
- 系统调用中断(EINTR)与SIGCHLD信号的处理
- 【转】光通信主要会议和期刊总结
- 福州本科计算机有哪些专业,福州大学自考计算机本科,福大自考本科有哪些专业...
- 计算机体系结构:不同方案的机器性能比较例题(1.6)
- TensorFlow(keras)入门课程--06 CNN用于猫狗数据集
热门文章
- [线筛五连]线筛莫比乌斯函数
- [图论] 树剖LCA
- python指令查询_Python命令行实现—查全国7天天气
- 负载均衡的几种方式_负载均衡的几种类型
- java 怎么调用clojure_从java调用Clojure时Clojure状态的范围
- python game编写后为什么是一闪而过_《Python编程初学者指南》——1.6 回到Game Over程序...
- mysql拼装字段_Mysql 实现字段拼接的三个函数
- birt字体 linux,linux下birt 图表中文乱码问题
- 抗锯齿_《战地V》深度学习抗锯齿性能测试:对它最友好的竟然是4K
- No module named ‘gym‘