当前位置: 首页 > news >正文

网站目标人群网站设计高端网站制作

网站目标人群,网站设计高端网站制作,网页传奇排行,网页版传奇复古安装 python ffmpy3与ffmpeg的安装 https://blog.csdn.net/qq_40962368/article/details/90748852 ffmpy3的介绍#xff1a; https://ffmpy3.readthedocs.io/en/latest/ ffmpy3是一个用于FFmpeg的Python包装器#xff0c;最初是从ffmpy项目派生出来的。它根据提供的参数及…安装 python ffmpy3与ffmpeg的安装 https://blog.csdn.net/qq_40962368/article/details/90748852 ffmpy3的介绍 https://ffmpy3.readthedocs.io/en/latest/ ffmpy3是一个用于FFmpeg的Python包装器最初是从ffmpy项目派生出来的。它根据提供的参数及其各自的选项编译FFmpeg命令行并使用Python的子进程执行它。 ffmpy3类似于FFmpeg使用的命令行方法。它可以读取任意数量的输入“文件”(常规文件、管道、网络流、抓取设备等)并写入任意数量的输出“文件”。有关FFmpeg命令行选项和参数如何工作的详细信息请参阅FFmpeg文档。 ffmpy3支持FFmpeg的管道协议。这意味着可以将输入数据传递到stdin并从stdout获得输出数据。 目前ffmpy3已经为ffmpeg和ffprobe命令提供了包装器但是应该可以用它运行其他ffmpeg工具(例如ffserver)。 FFmpeg的简单使用 一、格式转换 最简单的用法例子是将媒体从一种格式转换为另一种格式(在本例中是从MP4转换为MPEG传输流)同时保留所有其他属性: from ffmpy3 import FFmpeg ff FFmpeg(inputs{test.mp4: None},outputs{output.ts: None}) print(ff.cmd) ff.run() 二、转码 如果同时我们想用不同的解码器重新编码视频和音频我们必须指定额外的输出选项: 下面的例子将音频编码为mp2格式将视频编码为mpeg2video模式 from ffmpy3 import FFmpeg # 这里a就是指audiov就是指video ff FFmpeg(inputs{test.mp4: None},outputs{output.ts: -c:a mp2 -c:v mpeg2video}) print(ff.cmd) ff.run() ffmpeg -i test.mp4 -c:a mp2 -c:v mpeg2video output.tsInput #0, ogg, from test.mp4:Stream #0:1: Video: theora, yuv420p, 320x176, 25 fps, 25 tbr, 25 tbn, 25 tbcStream #0:2: Audio: vorbis, 48000 Hz, stereo, fltp, 160 kb/sStream mapping:Stream #0:1 - #0:0 (theora (native) - mpeg2video (native))Stream #0:2 - #0:1 (vorbis (native) - mp2 (native))Output #0, mpegts, to output.ts:Stream #0:0: Video: mpeg2video (Main), yuv420p, 320x176, q2-31, 200 kb/s, 25 fps, 90k tbn, 25 tbcStream #0:1: Audio: mp2, 48000 Hz, stereo, s16, 384 kb/s 三、多路分解 一个更复杂的使用示例是将MPEG传输流解复用为单独的基本(音频和视频)流并将它们保存在保存编解码器的MP4容器中(注意这里如何使用列表作为选项): 实现的效果就是音频与视频分离音频放入了audio.mp4文件视频在video.mp4文件 from ffmpy3 import FFmpeg ff FFmpeg(inputs{input.ts: None},outputs{video.mp4: [-map, 0:0, -c:a, copy, -f, mp4],audio.mp4: [-map, 0:1, -c:a, copy, -f, mp4]}) print(ff.cmd) ff.run() ffmpeg -i input.ts -map 0:0 -c:a copy -f mp4 video.mp4 -map 0:1 -c:a copy -f mp4 audio.mp4Output #1, mp4, to audio.mp4:Stream #1:0: Audio: mp2 (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 384 kb/sOutput #0, mp4, to video.mp4:Stream #0:0: Video: h264 (libx264) (avc1 / 0x31637661), yuv420p, 320x176 [SAR 1:1 DAR 20:11], q-1--1, 25 fps, 12800 tbn, 25 tbc 注意不能混合选项的表达式格式也就是说不能有包含空格字符串的列表除非不含有列表将命令行作为一个整体字符串即[-map, 0:0, -c:a, copy, -f, mp4] 或 -map 0:0 -c:a copy -f mp4 四、多路复用 将多路视频和音频重新编码回MPEG传输流即音频与视频的合成 from ffmpy3 import FFmpeg ff FFmpeg(inputs{video.mp4: None, audio.mp4: None},outputs{output.ts: -c:v h264 -c:a ac3}) print(ff.cmd) ff.run() Stream mapping:Stream #0:0 - #0:0 (h264 (native) - h264 (libx264))Stream #1:0 - #0:1 (mp3 (mp3float) - ac3 (native)) 在某些情况下必须保留输入和输出的顺序(例如使用FFmpeg -map选项时)。在这些情况下使用常规Python字典将不起作用因为它不能保持顺序。相反,使用OrderedDict。例如我们希望将一个视频和两个音频流多路复用到一个MPEG传输流中使用不同的编解码器对两个音频流进行重新编码。这里我们使用OrderedDict来保存输入的顺序以便它们匹配输出选项中的流的顺序: from ffmpy3 import FFmpeg from collections import OrderedDict inputs OrderedDict([(video.mp4, None), (audio_1.mp3, None), (audio_2.mp3, None)]) outputs {output.ts: -map 0 -c:v h264 -map 1 -c:a:0 ac3 -map 2 -c:a:1 mp2} ff FFmpeg(inputsinputs, outputsoutputs) print(ff.cmd) ff.run() 简化输出后的结果为  ffmpeg -i video.mp4 -i audio_1.mp3 -i audio_2.mp3 -map 0 -c:v h264 -map 1 -c:a:0 ac3 -map 2 -c:a:1 mp2 output.tsInput #0, mov,mp4,m4a,3gp,3g2,mj2, from video.mp4:Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 320x176 [SAR 1:1 DAR 20:11], 241 kb/s, 25 fps, 25 tbr, 12800 tbn, 50 tbc (default)Input #1, mov,mp4,m4a,3gp,3g2,mj2, from audio_1.mp3:Stream #1:0(und): Audio: mp3 (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 384 kb/s (default)Input #2, mov,mp4,m4a,3gp,3g2,mj2, from audio_2.mp3:Stream #2:0(und): Audio: mp3 (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 384 kb/s (default)Stream mapping:Stream #0:0 - #0:0 (h264 (native) - h264 (libx264))Stream #1:0 - #0:1 (mp3 (mp3float) - ac3 (native))Stream #2:0 - #0:2 (mp3 (mp3float) - mp2 (native))Output #0, mpegts, to output.ts:Stream #0:0(und): Video: h264 (libx264), yuv420p(progressive), 320x176 [SAR 1:1 DAR 20:11], q-1--1, 25 fps, 90k tbn, 25 tbc (default)Stream #0:1(und): Audio: ac3, 48000 Hz, stereo, fltp, 192 kb/s (default)Stream #0:2(und): Audio: mp2, 48000 Hz, stereo, s16, 384 kb/s (default) 五、使用管道协议 ffmpy3可以从STDIN(standard input)读取输入并将输出写入STDOUT(standard output)。这可以通过使用FFmpeg管道协议来实现。下面的示例从包含RGB格式原始视频帧的文件中读取数据并通过STDIN将其传递给ffmpy3;ffmpy3将用H.264编码原始帧数据并将其打包到一个MP4容器中将输出传递给STDOUT(注意必须使用子进程将STDOUT重定向到管道中。管道为stdout值否则输出将丢失): from ffmpy3 import FFmpeg import subprocess ff FFmpeg(inputs{pipe:0: -f rawvideo -pix_fmt rgb24 -s:v 640x480},outputs{pipe:1: -c:v h264 -f mp4}) print(ff.cmd) stdout, stderr ff.run(input_dataopen(rawvideo, rb).read(), stdoutsubprocess.PIPE) 六、异步执行 在某些情况下您可能不希望运行FFmpeg并阻塞等待结果或者在应用程序中引入多线程。在这种情况下使用asyncio进行异步执行是可能的。 也可以在不使用多线程或阻塞的情况下处理FFmpeg输出。 七、复杂命令行 FFmpeg命令行选项可能非常复杂比如在使用过滤时。因此理解使用ffmpy3构建命令行的一些规则非常重要。如果一个选项包含引号则必须在没有引号的选项列表中作为单独的项指定。但是如果选项使用一个字符串则必须将被引用的选项的引号保存在字符串中: from ffmpy3 import FFmpeg ff FFmpeg(inputs{input.ts: None},outputs{output.ts: [-vf, adif0:-1:0, scaleiw/2:-1]}) print(ff.cmd) ff FFmpeg(inputs{input.ts: None},outputs{output.ts: -vf adif0:-1:0, scaleiw/2:-1}) print(ff.cmd) ffmpeg -i input.ts -vf adif0:-1:0, scaleiw/2:-1 output.ts ffmpeg -i input.ts -vf adif0:-1:0, scaleiw/2:-1 output.tsProcess finished with exit code 0 一个更复杂的例子是命令行它将时间码烧录成视频: ffmpeg -i input.ts -vf drawtextfontfile/Library/Fonts/Verdana.ttf: timecode09\:57\:00\:00: r25: x(w-tw)/2: yh-(2*lh): fontcolorwhite: box1: boxcolor0x000000001 -an output.ts 在ffmpy3中可以表示为: from ffmpy3 import FFmpeg ff FFmpeg(inputs{input.ts: None},outputs{output.ts: [-vf, drawtextfontfile/Library/Fonts/Verdana.ttf: timecode09\:57\:00\:00: r25: x(w-tw)/2: yh-(2*lh): fontcolorwhite: box1: boxcolor0x000000001, -an]}) print(ff.cmd) 相同的命令行可以编译通过传递输出选项作为一个字符串同时保留引号: from ffmpy3 import FFmpeg ff FFmpeg(inputs{input.ts: None},outputs{output.ts: -vf \drawtextfontfile/Library/Fonts/Verdana.ttf: timecode09\:57\:00\:00: r25: x(w-tw)/2: yh-(2*lh): fontcolorwhite: box1: boxcolor0x000000001\ -an}) print(ff.cmd)
http://www.zqtcl.cn/news/15295/

相关文章:

  • 优秀flash网站欣赏全国企业注册官方网
  • 免费wap网站建设办营业执照要多少钱
  • 桓台建设局网站网站续费查询
  • 网站标题在哪里修改公司网站在哪备案
  • 网站开发流程电话免费空间访问
  • 珠海新盈科技网站建设红色为主的网站
  • 云南网站建设公司有官网建手机网站吗
  • 钢笔工具网站旅游后台网站
  • 响应式网站开发报价最新资讯热点
  • 东莞常平建网站公司泉州网站开发建设
  • 帮人做网站收费合法吗wordpress影视模板
  • 内乡微网站建设怎么样建设网站网站
  • 网站建设 目的 意义 政策青岛开发区建网站公司
  • 武夷山市网站建设wordpress多个边栏
  • 打开自己的网站是别人的域创意图案设计网站
  • 厦门it做网站最强怎么做百度网页推广
  • 郑州高端定制建设网站wordpress整站下载
  • 如何做二级网站网页制作个人主页模板
  • 怎样给网站做竞价推广企业名称核准查询系统
  • 青海省网站建设高端高邮城乡建设局 网站
  • 网站快速排名工具1营销型网站建设
  • 网站技术维护想做分销商有什么平台
  • spring mvc 网站开发大品牌设计公司
  • 如何加强旅游电子商务网站的建设什么软件下载软件最全
  • 做app护肤网站视频制作网站怎么做
  • 故城建设银行网站大连网站开发平台
  • 洛阳seo网站教育在线网站怎样做直播
  • 网站建设 南宁网站开发发展和前景
  • 股票网站建设wordpress微信接口
  • 网站建设与开发专业美御品牌推广