首页 > 其他分享 >视频转换容器格式

视频转换容器格式

时间:2024-03-19 20:12:26浏览次数:18  
标签:容器 container 视频 frame packet 格式

容器格式
视频容器格式是一种封装格式,用于存储在单一文件中的多种类型的数据,这通常包括视频和音频轨道、元数据(比如标题、作者等信息)、字幕和其他可能的数据流。容器格式定义了如何封装这些数据,但它不定义这些数据的编码方式。编码由视频和音频编解码器决定,而容器格式负责存储编码后的数据和同步信息,确保视频和音频的播放同步。

常见的视频容器格式包括:

  • AVI (Audio Video Interleave):由微软开发的早期视频容器格式,兼容性良好,但对于现代编码格式的支持有限。
  • MP4 (MPEG-4 Part 14):目前最流行的视频容器格式之一,支持各种视频和音频编码,包括H.264和AAC,适用于网络传输和流媒体。
  • MKV (Matroska Video):一个开源格式,支持存储几乎所有现代视频和音频编码,以及多语言字幕和丰富的元数据,非常适合存储高清影片。
  • MOV (QuickTime File Format):由苹果公司开发,原本是QuickTime播放器的默认格式,支持复杂的视频编辑特性,如多轨音频和文字。
  • FLV (Flash Video):曾经是互联网视频共享的主流格式,主要用于Adobe Flash Player内的视频播放,随着HTML5和其他技术的兴起,其流行度已大大减少。

容器格式的选择取决于使用场景、兼容性需求和特定功能(如支持章节、字幕等)。由于容器仅封装数据,并不影响数据本身的质量,因此理论上,相同编码和质量的视频,不论封装在哪种容器中,播放效果应该是一致的。
以下是简单的视频格式转换的操作:
转换步骤 基于pyav
1.打开输入容器(也就是需要被转化的源视频文件)
2.打开输出容器(转换后输出的文件),一般伴随open,不存在的输出文件会被创建。比如pyav(封装了ffmpeg的python包)
` # 打开输入容器
input_container = av.open(input_path, format=input_format)

    # 打开输出容器并设置格式
    output_container = av.open(output_path + "\\" + out_file_name + '.' + output_format, 'w',
                               format=output_format)`

3.检查输入容器中存在的流,为输出容器对应添加(你需要转换的格式)。比如说mp4视频,其中有一个音频流采用aac编解码器,你需要转换的容器格式是avi,它不支持aac,而是支持ac3,那么输出容器需要的就是ac3编解码器的音频流
if input_container.streams.audio: audio_stream = output_container.add_stream(codec_name_audio)
4.解析数据和转换编码:视频一般都会含有基本的音频流和视频流,有的还有字幕流等。这些流都被封装在一个视频容器中,也就是常说的mp4,mkv类型的容器,不同的容器格式对应了不同的编解码器。要做到转换视频格式(容器格式),首先要做的就是将压缩数据解析成原始数据。由于是多个流封装,所以第一步是将其解复用,将所有的流拿出来单独出来。
for packet in input_container.demux():#这里第一步是做的解复用,解析出容器中所有的流 if packet.stream.type == 'video': for frame in packet.decode():#解码流,返回的是一个迭代器,遍历流的所有帧 frame.pts = None # 清除时间戳,强制重新计算 for encoded_packet in video_stream.encode(frame):#使用输出容器的流即将其重新编码 output_container.mux(encoded_packet)#将数据封装到输出容器 logger.info(frame.index) elif packet.stream.type == 'audio' and 'audio_stream' in locals(): for frame in packet.decode(): frame.pts = None for encoded_packet in audio_stream.encode(frame): output_container.mux(encoded_packet) # wx.CallAfter(dialog.m_gauge1.UpdateProgress, i) elif packet.stream.type == 'subtitles' and 'subtitle_stream' in locals(): for frame in packet.decode(): frame.pts = None encoded_packet = subtitle_stream.encode(frame) output_container.mux(encoded_packet) # wx.CallAfter(dialog.m_gauge1.UpdateProgress, i)
5.关闭容器
input_container.close()
output_container.close()
注意:因为没有细致的处理,所以可能有一些警告信息

标签:容器,container,视频,frame,packet,格式
From: https://www.cnblogs.com/yrrs/p/18083833

相关文章

  • TSINGSEE青犀数字化、智能化视频技术推动森林防火智慧监管
    一、背景分析中央网络安全和信息化委员会印发《“十四五”国家信息化规划》,明确指出“提升林草生态网络感知能力,完善生态系统保护成效数字化监测评估体系”。这为数字化系统建设引领了方向,中国林业信息化建设迈入了新的阶段,全国各地相继推出数字林业发展规划。2020年,国家林业和草......
  • GB28181视频汇聚平台EasyCVR接入Ehome设备,设备在线但视频无法播放的原因排查
    安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台可拓展性强、视频能力灵活、部署轻快,可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等,以及支持厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等。平台既具备传统安防视频监控的能力,也具备接入AI智能分析的......
  • vue使用JSWebrtc播放webrtc视频流
    1、下载JSWebrtc.min.js文件地址:https://github.com/kernelj/jswebrtc/tree/master/dist 或者再此路径下载 https://files.cnblogs.com/files/blogs/702532/jswebrtc.min.js?t=1710839018&download=true2、使用jswebrtc2.1文件放到public/static目录下,位置不能放错 2......
  • HarmonyOS应用开发实战 - Api9 拍照、拍视频、选择图片、选择视频、选择文件工具类
    鸿蒙开发过程中,经常会进行系统调用,拍照、拍视频、选择图库图片、选择图库视频、选择文件。今天就给大家分享一个工具类。1.话不多说,先展示样式2.设计思路根据官方提供的指南开发工具类,基础的拍照、拍视频、图库选照片、选文件不过多缀述,图库选择这里设计成集合形式,可返......
  • TSINGSEE青犀数字化、智能化视频技术推动森林防火智慧监管
    一、背景分析中央网络安全和信息化委员会印发《“十四五”国家信息化规划》,明确指出“提升林草生态网络感知能力,完善生态系统保护成效数字化监测评估体系”。这为数字化系统建设引领了方向,中国林业信息化建设迈入了新的阶段,全国各地相继推出数字林业发展规划。2020年,国家林业......
  • 如何在线就能将word转成pdf格式?
    word文档是我们日常编写电子文档使用最多的一种文档格式,但由于它容易被改动,版本不兼容也会导致排版乱,所以word转pdf也是一种最常见的文档处理。其中在线转换工具则是其中较为简单的一一种处理方式,既无需下载软件,其操作也简单,还提供了免费的转换。1、Zamza相信大部分小伙伴都Zamz......
  • AI新工具 终于来了! 华丽的风格转移! ;基于视频/网络摄像头的 AI 运动捕捉应用,可用于虚拟
    ✨1:MagnificAI终于来了!......
  • 在 Docker 容器中运行 ASP.NET Core 应用
    创建Docker支持生成Dockerfile文件在解决方案asp.netcore项目下右键添加Dockerfile支持、选择目标OS为Linux,生成Dockerfile文件#Seehttps://aka.ms/customizecontainertolearnhowtocustomizeyourdebugcontainerandhowVisualStudiousesthisDockerfiletobuild......
  • 有没有好的视频素材无水印素材网站?
       寻找无字幕、清爽干净的无水印短视频素材确实挺费劲的,但幸好,还是有不少好地方能帮到我们。以下这几个网站,是我个人在制作短视频时经常光顾的宝藏网站,不仅资源丰富,而且素材清晰、无字幕,完全符合创作需求。1,首先得说的是蛙学府   说实话,这个网站你能想到的几乎......
  • 哪里有视频素材无水印免费下载?这几个无水印素材网看看
      追寻高质量的无水印短视频素材,无疑是让你的短视频作品充满梦幻与科幻感的绝佳方式。如果你正困于寻找那些能让人瞬间沉醉的优质素材,别担心,这里有几个资源丰富的网站可以帮助你1,首先推荐的是蛙学府   这个网站可以说是短视频素材的集大成者。无论是银河、星云还是......