我最近遇到了同样的问题,因为我想把我的图书馆服务于浏览器。令人惊讶的是,通过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. 把阿里jar包安装到本地,供pom引用
  2. 第十三章:位图(三)
  3. mysql的默认sid_默认实例(SID)已经设置,空实例默认连接时却连接不上?
  4. 超键、候选键、主键、外键、联合主键、复合主键
  5. Centos7环境安装Kibana5.2.2
  6. 用linux mail命令发送邮件时指定发送人
  7. el-amap 第一次正常第二次报错_flutter run: build tools revision 报错解决
  8. LeetCode:Remove Duplicates from Sorted List I II
  9. Ubuntu进入pycharm创建的虚拟环境的方法(以及如果你安装了anaconda等其它修改了环境变量的东西该怎么进)
  10. Loadrunner关联
  11. centos7 升级最新版内核
  12. SAP中计划策略的后台配置框架分析解读
  13. 坚果pro2刷原生android,坚果Pro2普通版(U3 Pro)魔趣OS 安卓10 纯净完美 原生极简 纯净推荐...
  14. .bat文件批处理命令语法格式ech,goto,set,for,call,choise,at,set,定时关机命令
  15. linux usb lpt,Linux安装Composer
  16. ctfshow 做题 萌新 模块(1)
  17. ad16 导入dwg_AD16怎样精确导入CAD文件
  18. RC电路(积分电路,微分电路)
  19. Springboot 基于CXF构建WebService服务
  20. mysql jail_ubuntu – 为chrooted jail设置PHP / MYSQL(jailkit)

热门文章

  1. [2018.10.25 T3] 旅程
  2. [2018.10.13 T2] 工作计划
  3. [2018.10.10 T3] 三米诺
  4. vue学习笔记-9-tab选项卡小案例
  5. 监听程序不支持服务 linux,ORA-12520: TNS: 监听程序无法为请求的服务器类型找到可用的处理程序...
  6. appium+python环境搭建_想学习自动化测试,已经学习了appium+python环境搭建和python的简单内容,下面该怎么做?...
  7. 蕊动矿机linux cpu超频,蚂蚁l3矿机超频方法!最佳超频参数!  |  呆毛网
  8. 2 多贝西小波_【原创】土超:安卡拉高古VS贝西克塔斯
  9. Springboot的工作机制:5 总结
  10. calico/node is not ready: BIRD is not ready: BGP not established with 172.19.77.23