个人博客 地址:https://www.wenhaofan.com/a/20190430144809

下载安装MP4Box

命令行下执行以下指令安装MP4Box

  sudo apt-get install gpac

代码

核心代码为使用 os.system 模块通过调用系统命令使用MP4Box将H264格式的视频转为MP4

import os
import random
import time
import ctcmsconf #初始化文件夹
def init_video_folder():
    exist=os.path.exists(ctcmsconf.H264_PATH)
    if not exist:
        os.makedirs(H264_PATH)
    
    exist=os.path.exists(ctcmsconf.MP4_PATH)
    if not exist:
        os.makedirs(ctcmsconf.MP4_PATH) #将h264视频转为mp4
def convert_to_mp4(source_path,target_path):
    cmod='MP4Box -fps '+str(ctcmsconf.MP4_FPS)+' -add '+source_path+' '+target_path;
    execute_state = os.system('MP4Box -fps '+str(ctcmsconf.MP4_FPS)+' -add '+source_path+' '+target_path);
    print(cmod)
    print(execute_state)
    if execute_state==0:
        return True
    else:
        return False #判断文件是否存在
def check_is_exist(path,suffix):
    return os.path.exists(path+'.'+suffix) #生成mp4文件保存路径
def gen_mp4_filepath(filename=''):
     if filename=='':
        filename=gen_random_filename(ctcmsconf.MP4_PATH+'record-'+format_currrenttime('%Y%m%d%H%m%s'))
     else:
        filename=gen_random_filename(filename)
        
     if check_is_exist(filename,'mp4'):
        return gen_mp4_filepath(filename)
     else:
        return filename+'.mp4'
#生成h264文件保存路径
def gen_h264_filepath(filename=''):
    if filename=='':
        filename=gen_random_filename(ctcmsconf.H264_PATH+'record-'+format_currrenttime('%Y%m%d%H%m%s'))
    else:
        filename=gen_random_filename(filename)
        
    if check_is_exist(filename,'h264'):
        return gen_mp4_filepath(filename)
    else:
        return filename+'.h264' #生成随机文件名
def gen_random_filename(filename):
    return filename+str(random.randint(0,10))
#格式化时间
def format_currrenttime(format='%Y-%m-%d %H:%M:%S'):
    return time.strftime(format,time.localtime(time.time()))

ctcmsconf.py

H264_PATH='/home/pi/ctcms/record/h264/'; #将该路径修改为你本地h264文件的存储路径
MP4_PATH='/home/pi/ctcms/record/mp4/'; #将该路径修改为你本地mp4文件的存储路径
MP4_FPS=15; # FPS 视频帧率,该值越大视频所占空间也会越大,相应的会更流畅

树莓派环境下使用python将h264格式的视频转为mp4的更多相关文章

  1. Sublime Text3配置在可交互环境下运行python快捷键

    安装插件 在Sublime Text3下面写代码感觉很不错,但是写Python的时候遇到了一些问题. 用Sublime Text3打开python文件,或者在Sublime Text3下写好pytho ...

  2. 4.1. 如何在Windows环境下开发Python

    4.1. 如何在Windows环境下开发Python 4.1. 如何在Windows环境下开发Python 4.1.1. Python的最原始的开发方式是什么样的 4.1.1.1. 找个文本编辑器,新 ...

  3. Linux 环境下安装python相关

    目录 Linux 环境下安装python相关 linux软件包管理工具之yum工具(如同pip3工具) yum源理解 下载阿里云的.repo仓库文件 ,放到/etc/yum.repos.d/ yum安 ...

  4. Centos7.4环境下搭建Python开发环境(虚拟机安装+python安装+pycharm安装)

    目录 一.安装 Centos7.4虚拟机 二.安装 python3.6.7 三.安装 pycharm 一般情况下,大家都是在 Windows平台下进行 Python开发,软件安装和环境搭建都非常&qu ...

  5. 尚学python课程---11、linux环境下安装python注意

    尚学python课程---11.linux环境下安装python注意 一.总结 一句话总结: 准备安装依赖包:zlib.openssl:yum install zlib* openssl*:pytho ...

  6. 尚学linux课程---10、linux环境下安装python

    尚学linux课程---10.linux环境下安装python 一.总结 一句话总结: 直接在官网下载python的源码包即可,然后在linux下安装 linux下安装软件优先想到的的确是yum,但是 ...

  7. 从零开始Windows环境下安装python+tensorflow

    从零开始Windows环境下安装python+tensorflow 2017年07月12日 02:30:47 qq_16257817 阅读数:29173 标签: windowspython机器学习te ...

  8. Docker环境下运行python+selenium+chrome

    Docker环境下运行python+selenium+chrome docker运行时占用的资源非常少,而且能将环境进行有效的隔离,可以快速的进行部署,因此可以将docker与selenium结合实现 ...

  9. Win10 + VS2017 15.5.6 环境下解决 Python 3.6 环境无法刷新DB的问题

    作为宇宙第一IDE,VS2017对Python的支持还算可以,虽然和PyCharm等Python专用IDE相比还有些差距,但是经过后续的更新升级,我相信VS2017将越来越完善.由于本人一直都是使用V ...

随机推荐

  1. 大神是如何学习 Go 语言之 Channel 实现原理精要

    转自: https://mp.weixin.qq.com/s/ElzD2dXWeldYkJmVVY6Djw 作者Draveness Go 语言中的管道 Channel 是一个非常有趣的数据结构,作为语 ...

  2. VFP日期时间转中文日期时间

    本函数原为VFP中取日期转中文日期方式,后增加日期时间处理,并改用Iif及ICase修改原代码.Function DateTime2CHNParameters pdDate,plTime*!* pdD ...

  3. lwip1.4.1需要的文件

    1.4.1版本一共必须25个文件,如下,接下来,要看如何将2.0.2用起来 以上是必须的lwip原始的文件, 此外,还需要一些其它文件 Keil uVision5包含路径配置:

  4. RPC(简单实现)

    笔者之前仅看过RPC这个单词,完全没有了解过,不想终于还是碰上了.起因:这边想提高并发量而去看kafka(最后折中使用了redis),其中kafka需要安装ZooKeeper,而ZooKeeper又与 ...

  5. C语言switch中case后跟随break语句

    1.case后面的常量表达式实际上只起语句标号作用,而不起条件判断作用,即“只是开始执行处的入口标号”.因此,一旦与switch后面圆括号中表达式的值匹配,就从此标号处开始执行:而且执行完一个case ...

  6. C#设计模式学习笔记:(12)代理模式

    本笔记摘抄自:https://www.cnblogs.com/PatrickLiu/p/7814004.html,记录一下学习过程以备后续查用. 一.引言 今天我们要讲结构型设计模式的第七个模式,也是 ...

  7. day1 对java的认识

    对java的认识 1.java是一门跨平台的语言,由jvm进行预编译,转换成类似伪代码一样的东西,最后再转换成机器语言. 2.程序是由数据结构和算法构成,其他所有的工具类,方法都是为数据结构或者算法服 ...

  8. Android中使用AlarmManager设置闹钟

    场景 设置闹钟 闹钟提醒 注: 博客: https://blog.csdn.net/badao_liumang_qizhi关注公众号 霸道的程序猿 获取编程相关电子书.教程推送与免费下载. 实现 新建 ...

  9. centos7系统启动流程

    前提:pc主机,MBR架构 第一步:post(power on system test)加电自检. pc机的主板上有个rom芯片(CMOS),加电后,cpu去找这个raw,然后读取里面的指令,检测机器 ...

  10. VSCode 完美整合前后端框架(angular2+.NET core)

    首先打开命令行查看本地.NET版本. 通过命令行安装模板. dotnet new --install Microsoft.AspNetCore.SpaTemplates::* 创建demo目录,并用v ...