我最近遇到了同样的问题,因为我想把我的图书馆服务于浏览器。令人惊讶的是,通过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 /和实时转码相关推荐

  1. ffmpeg视频压缩速度_使用ffmpeg修改视频速度

    ffmpeg视频压缩速度 I watch a lot of sports and recently I've become fascinated with some of the methodolog ...

  2. python ffmpeg剪辑视频_用ffmpeg快速剪切和合并视频

    如果直接找视频剪切和合并视频的软件,通常出来的都是大的视频编辑软件或者是有图形界面的剪切软件,大型一点的功能太多安装麻烦,小型一点的功能可能不齐全. 只是简单的剪切或者一下合并一下,还是ffmpeg这 ...

  3. ffmpeg h265编码_基于ffmpeg库mp4编码记录。

    要讨论的话题主要为以下: 话题1:音频流选用aac编码格式需要注意的地方. 话题2:音频流视频流同步需要注意的地方. 基本模式如下所示: 关于话题1部分,背景工作于基于海思平台35XX系列的SDK开发 ...

  4. ffmpeg webm 提取_使用 FFmpeg 对 webp转png , webm转mp4或者gif等进行操作

    最近浏览一些网站发现这些网站的图片格式为 webp .视频格式为 webm .相信对于一些喜欢收藏并且分享的人 或者 内容搬运工来说,这两个格式都不是一个比较好的选择.将它们转换为 png 或者 jp ...

  5. ffmpeg webm 提取_使用ffmpeg将webm转换为mp4

    当我尝试将webm文件转换为mp4时,输出非常不连贯,并且似乎ffmpeg丢弃了许多帧 我使用以下命令进行转换 ffmpeg -i movie.webm movie.mp4 ffmpeg -i mov ...

  6. python检测屏幕亮点_图像处理之坏点校正及源码实现

    1 坏点介绍 图像坏点(Bad pixel) : 图像传感器上光线采集点(像素点)所形成的阵列存在工艺上的缺陷,或光信号进行转化为电信号的过程中出现错误,从而会造成图像上像素信息错误,导致图像中的像素 ...

  7. python idle怎么使用_[森林]手把手教你如何使用作弊码

    P.S.封面的图被我P过 首先你需要进入标题画面标题画面 在使用控制台命令(作弊码)之前,你需要在选项--游戏玩法中打开允许作弊(必须)如图,允许作弊处于打开状态 然后返回标题画面,关闭输入法(必须) ...

  8. python括号匹配问题_支持通配符的括号匹配问题源码+详细流程代码(python)

    问题: 判断一个有左括号和右括号.以及其他ASCII字符组成的表达式是合法. 判断条件是左括号-右括号数目.次序配对,可多层嵌套.如果有*,则*可作为0个或者1个右括号,如果匹配则输出ok,不匹配则输 ...

  9. 哈希值 哈希码_什么是哈希? 哈希码如何工作-带有示例

    哈希值 哈希码 哈希简介 (Introduction to hashing) Hashing is designed to solve the problem of needing to effici ...

  10. java 执行字节码_深入理解java:1.2. 字节码执行引擎

    执行引擎是Java虚拟机的核心组成部分之一. 首先,想想C++和Java在编译和运行时到底有啥不一样? 下图左边,C++发布的就是机器指令, 而下图右边Java发布的是字节码,字节码在运行时通过JVM ...

最新文章

  1. linux下的c socket编程(4)--server端的继续研究
  2. 【Android 高性能音频】Oboe 开发流程 ( 创建并设置 AudioStreamCallback 对象 | 打开 Oboe 音频流 | 日志封装 logging_macros.h )
  3. Ubuntu 下连接Github
  4. 009 Android之ContentProvider
  5. matlab中利用princomp实现PCA降维
  6. SpringBoot maven打包源码发布到仓库配置
  7. 滨河新区(黄河楼)夜景
  8. Dubbo-gok8s注册中心设计方案与实现
  9. 仿拉钩app(一)---爬虫数据准备
  10. 不可重复读和幻读的区别_图解脏写、脏读、不可重复读、幻读
  11. qt程序使用多行linux命令,开发Qt应用程序的基本方法总结
  12. Linux下C语言进程通讯编程
  13. 安装SQL server2017提示无法打开注册表项:“Software\Microsoft\MicrosoftsQL Server\140\Bootstrap“,注册表可能已损环。
  14. LOJ #10155. 「一本通 5.2 例 3」数字转换
  15. 认证模式之Digest模式
  16. 系统调用中断(EINTR)与SIGCHLD信号的处理
  17. 【转】光通信主要会议和期刊总结
  18. 福州本科计算机有哪些专业,福州大学自考计算机本科,福大自考本科有哪些专业...
  19. 计算机体系结构:不同方案的机器性能比较例题(1.6)
  20. TensorFlow(keras)入门课程--06 CNN用于猫狗数据集

热门文章

  1. [线筛五连]线筛莫比乌斯函数
  2. [图论] 树剖LCA
  3. python指令查询_Python命令行实现—查全国7天天气
  4. 负载均衡的几种方式_负载均衡的几种类型
  5. java 怎么调用clojure_从java调用Clojure时Clojure状态的范围
  6. python game编写后为什么是一闪而过_《Python编程初学者指南》——1.6 回到Game Over程序...
  7. mysql拼装字段_Mysql 实现字段拼接的三个函数
  8. birt字体 linux,linux下birt 图表中文乱码问题
  9. 抗锯齿_《战地V》深度学习抗锯齿性能测试:对它最友好的竟然是4K
  10. No module named ‘gym‘