个人博客 地址: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. 从linux命令行分享文件:bashupload.com和transfer.sh

    背景 传输文件是一个常见的需求,简单的做法是通过即时通讯工具,邮件,网盘完成. 但当分享或接收的一端为远程服务器,只有命令行可以操作时,一个能支持在命令行完成分享和下载的工具,就会省下不少麻烦. 下面 ...

  2. jmeter接口测试(登录、注册)

    Jmeter 进行接口测试流程: Jmeter 的下载地址:http://jmeter.apache.org/download_jmeter.cgi 下面举例说明使用流程,有两种参数传递的方式,我们以 ...

  3. 使用 pyenv 管理不同的 Python 版本

    1. pyenv 的安装 $ yum install git -y $ yum install gcc make patch gdbm-devel openssl-devel sqlite-devel ...

  4. 【Java并发工具类】原子类

    前言 为保证计数器中count=+1的原子性,我们在前面使用的都是synchronized互斥锁方案,加锁独占访问的方式未免太过霸道,于是我们来介绍另一种解决原子性问题的无锁方案:原子变量.在正式介绍 ...

  5. Java高级项目实战03:CRM系统数据库设计

    接上一篇:Java高级项目实战02:客户关系管理系统CRM系统模块分析与介绍 欢迎点击回顾,接下来我们说说 CRM系统数据库设计. 我们根据产品的原型搞以及UI组的设计稿, 接下来就要设计数据库, 一 ...

  6. centos6.8 安装.net core2.1 sdk 或 .net core2.1 runtime

    前段时间看.net core 更更更新了,大家反应都挺好,想有机会也学习一下,正好这两天要写一个简单的服务在centos上面跑,于是决定放弃使用java,直接.net core走起来,事情进行的非常顺 ...

  7. Javascript 基础学习(七)常用内置对象

    Array 定义 数组也是一个对象,是一个用来存储数据的对象.和Object类似,但是它的存储效率比普通对象要高.数组中保存的内容我们称为元素.数组使用索引(index)来操作元素.索引指由0开始的整 ...

  8. Happycorp:1 Vulnhub Walkthrough

    靶机链接: https://www.vulnhub.com/entry/happycorp-1,296/ 网络主机扫描::: 主机端口扫描: NFS文件系统,尝试挂载试试 mount -t nfs 1 ...

  9. JS中let、var、const的区别

    先看let和var: 1. console.log(a); // undefined var a = 3; console.log(a); // Uncaught ReferenceError: Ca ...

  10. Bash脚本编程学习笔记06:条件结构体

    简介 在bash脚本编程中,条件结构体使用if语句和case语句两种句式. if语句 单分支if语句 if TEST; then CMD fi TEST:条件判断,多数情况下可使用test命令来实现, ...