C# 调用FFmpeg处理音视频的示例

FFmpeg 开源、跨平台、体积小、功能强大,提供了录制、转换以及流化音视频的完整解决方案。

官网:https://www.ffmpeg.org/

百科:https://baike.baidu.com/item/ffmpeg/2665727?fr=aladdin

FFmpeg 应用非常广泛,可以用来播放本地视频甚至网络视频,查看音视频信息,还可以用于从视频中提取音频,转换音视频文件格式等等,本文主要介绍如何调用 FFmpeg 来查看音视频信息、从视频中提取音频、转换音视频格式等。

1. 调用FFmpeg

调用原理相当于打开控制台输入命令,只不过在程序中将命令参数进行组合封装,以下是启动代码:

/// <summary>
    /// 初始化命令、参数,启动线程
    /// </summary>
    /// <param name="args"></param>
    /// <param name="finishiEvent"></param>
    public static void Start(string args, EventHandler finishiEvent)
    {
      LogHelper.LogInfoFormat("开始执行命令, 参数:{0}", args);
      FinishiEvent = finishiEvent;
      // ffmpeg.exe组件文件路径
      string ffmpegPath = FFmpegBinariesHelper.RegisterFFmpegBinaries();
      string cmdType = args.Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries)[0];
      ProcessStartInfo startInfo = new ProcessStartInfo(Path.Combine(ffmpegPath, cmdType));
      startInfo.WindowStyle = ProcessWindowStyle.Normal;
      startInfo.Arguments = args.Substring(cmdType.Length);
      startInfo.UseShellExecute = false;
      startInfo.CreateNoWindow = true;
      startInfo.RedirectStandardInput = true;
      startInfo.RedirectStandardOutput = true;
      startInfo.RedirectStandardError = true;// ffmpeg信息输出是error事件
      p.StartInfo = startInfo;
      p.OutputDataReceived += P_OutputDataReceived; // ffmpeg信息输出事件
      p.ErrorDataReceived += P_OutputDataReceived;
      Thread thread = new Thread(startffmpeg);
      thread.Start();
    }

运行界面:

2. 查看音视频信息

命令如下(注:pcm文件不适用以下命令):

命令:ffprobe -print_format json -loglevel quiet -show_streams "您的文件"

示例:ffprobe -print_format json -loglevel quiet -show_streams "F:\mp4\3.TF以及地图构建.mp4"

以下是输出的文件格式等信息:

{
  "streams": [
    {
      "index": 0,
      "codec_name": "h264",
      "codec_long_name": "H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10",
      "profile": "High",
      "codec_type": "video",
      "codec_time_base": "1046271/31388000",
      "codec_tag_string": "avc1",
      "codec_tag": "0x31637661",
      "width": 960,
      "height": 640,
      "coded_width": 960,
      "coded_height": 640,
      "has_b_frames": 0,
      "sample_aspect_ratio": "1:1",
      "display_aspect_ratio": "3:2",
      "pix_fmt": "yuv420p",
      "level": 31,
      "chroma_location": "left",
      "refs": 1,
      "is_avc": "true",
      "nal_length_size": "4",
      "r_frame_rate": "15/1",
      "avg_frame_rate": "15694000/1046271",
      "time_base": "1/90000",
      "start_pts": 0,
      "start_time": "0.000000",
      "duration_ts": 188328780,
      "duration": "2092.542000",
      "bit_rate": "358855",
      "bits_per_raw_sample": "8",
      "nb_frames": "31388",
      "disposition": {
        "default": 1,
        "dub": 0,
        "original": 0,
        "comment": 0,
        "lyrics": 0,
        "karaoke": 0,
        "forced": 0,
        "hearing_impaired": 0,
        "visual_impaired": 0,
        "clean_effects": 0,
        "attached_pic": 0,
        "timed_thumbnails": 0
      },
      "tags": {
        "creation_time": "2020-09-04T01:03:03.000000Z",
        "language": "und",
        "encoder": "JVT/AVC Coding"
      }
    },
    {
      "index": 1,
      "codec_name": "aac",
      "codec_long_name": "AAC (Advanced Audio Coding)",
      "profile": "LC",
      "codec_type": "audio",
      "codec_time_base": "1/48000",
      "codec_tag_string": "mp4a",
      "codec_tag": "0x6134706d",
      "sample_fmt": "fltp",
      "sample_rate": "48000",
      "channels": 1,
      "channel_layout": "mono",
      "bits_per_sample": 0,
      "r_frame_rate": "0/0",
      "avg_frame_rate": "0/0",
      "time_base": "1/48000",
      "start_pts": 0,
      "start_time": "0.000000",
      "duration_ts": 100440014,
      "duration": "2092.500292",
      "bit_rate": "64000",
      "max_bit_rate": "66584",
      "nb_frames": "98086",
      "disposition": {
        "default": 1,
        "dub": 0,
        "original": 0,
        "comment": 0,
        "lyrics": 0,
        "karaoke": 0,
        "forced": 0,
        "hearing_impaired": 0,
        "visual_impaired": 0,
        "clean_effects": 0,
        "attached_pic": 0,
        "timed_thumbnails": 0
      },
      "tags": {
        "creation_time": "2020-09-04T01:03:03.000000Z",
        "language": "und"
      }
    }
  ]
}

streams 输入信息,如果一个文件中有多个音频或视频,将以数组形式输出,常用参数有: codec_name 表示编码, codec_type 类型, sample_rate 采样率, channels 声道, duration 时长(秒)

3.从视频中提取音频文件

命令:ffmpeg -i "您的视频文件路径" -vn -ar 采样率 "音频文件输出路径"

示例:ffmpeg -i "F:\mp4\3.TF以及地图构建.mp4" -vn -ar 8000 "F:\mp4\3.TF以及地图构建_201215172919_8k.m4a"

以下是处理过程输出信息:

ffmpeg version git-2020-04-17-889ad93 Copyright (c) 2000-2020 the FFmpeg developers
 built with gcc 9.3.1 (GCC) 20200328
 configuration: --disable-static --enable-shared --enable-gpl --enable-version3 --enable-sdl2 --enable-fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-libdav1d --enable-libbluray --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libsrt --enable-libtheora --enable-libtwolame --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable-libvidstab --enable-libvmaf --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa --enable-libspeex --enable-libxvid --enable-libaom --disable-w32threads --enable-libmfx --enable-ffnvcodec --enable-cuda-llvm --enable-cuvid --enable-d3d11va --enable-nvenc --enable-nvdec --enable-dxva2 --enable-avisynth --enable-libopenmpt --enable-amf
 libavutil   56. 42.102 / 56. 42.102
 libavcodec   58. 80.100 / 58. 80.100
 libavformat  58. 42.100 / 58. 42.100
 libavdevice  58. 9.103 / 58. 9.103
 libavfilter   7. 77.101 / 7. 77.101
 libswscale   5. 6.101 / 5. 6.101
 libswresample  3. 6.100 / 3. 6.100
 libpostproc  55. 6.100 / 55. 6.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'F:\mp4\3.TF浠ュ強鍦板浘鏋勫缓.mp4':
 Metadata:
  major_brand   : mp42
  minor_version  : 0
  compatible_brands: mp42isom
  creation_time  : 2020-09-04T01:03:03.000000Z
 Duration: 00:34:52.54, start: 0.000000, bitrate: 425 kb/s
  Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 960x640 [SAR 1:1 DAR 3:2], 358 kb/s, 15 fps, 15 tbr, 90k tbn, 30 tbc (default)
  Metadata:
   creation_time  : 2020-09-04T01:03:03.000000Z
   encoder     : JVT/AVC Coding
  Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, mono, fltp, 64 kb/s (default)
  Metadata:
   creation_time  : 2020-09-04T01:03:03.000000Z
Stream mapping:
 Stream #0:1 -> #0:0 (aac (native) -> aac (native))
Press [q] to stop, [?] for help
[aac @ 042107c0] Too many bits 8832.000000 > 6144 per frame requested, clamping to max
Output #0, ipod, to 'F:\mp4\3.TF浠ュ強鍦板浘鏋勫缓_201215172919_8k.m4a':
 Metadata:
  major_brand   : mp42
  minor_version  : 0
  compatible_brands: mp42isom
  encoder     : Lavf58.42.100
  Stream #0:0(und): Audio: aac (LC) (mp4a / 0x6134706D), 8000 Hz, mono, fltp, 48 kb/s (default)
  Metadata:
   creation_time  : 2020-09-04T01:03:03.000000Z
   encoder     : Lavc58.80.100 aac
size=   256kB time=00:01:42.40 bitrate= 20.5kbits/s speed= 204x
size=   512kB time=00:03:28.64 bitrate= 20.1kbits/s speed= 208x
size=   768kB time=00:05:12.19 bitrate= 20.2kbits/s speed= 208x
size=  1280kB time=00:06:59.84 bitrate= 25.0kbits/s speed= 210x
size=  1536kB time=00:08:38.52 bitrate= 24.3kbits/s speed= 207x
size=  1792kB time=00:10:20.41 bitrate= 23.7kbits/s speed= 206x
size=  2304kB time=00:12:11.77 bitrate= 25.8kbits/s speed= 209x
size=  2560kB time=00:13:55.32 bitrate= 25.1kbits/s speed= 209x
size=  2816kB time=00:15:40.41 bitrate= 24.5kbits/s speed= 209x
size=  3072kB time=00:17:30.36 bitrate= 24.0kbits/s speed= 210x
size=  3584kB time=00:19:17.12 bitrate= 25.4kbits/s speed= 210x
size=  3840kB time=00:20:57.85 bitrate= 25.0kbits/s speed= 209x
size=  4096kB time=00:22:44.73 bitrate= 24.6kbits/s speed= 210x
size=  4608kB time=00:24:15.61 bitrate= 25.9kbits/s speed= 208x
size=  4864kB time=00:25:52.63 bitrate= 25.7kbits/s speed= 207x
size=  5120kB time=00:27:26.20 bitrate= 25.5kbits/s speed= 205x
size=  5376kB time=00:29:04.38 bitrate= 25.2kbits/s speed= 205x
size=  5632kB time=00:30:40.12 bitrate= 25.1kbits/s speed= 204x
size=  6144kB time=00:32:20.47 bitrate= 25.9kbits/s speed= 204x
size=  6400kB time=00:34:38.07 bitrate= 25.2kbits/s speed= 207x
size=  6558kB time=00:34:52.54 bitrate= 25.7kbits/s speed= 209x
video:0kB audio:6493kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.997352%
[aac @ 042107c0] Qavg: 65535.836

4.转换音频格式:

命令:ffmpeg -i "源音频文件" -acodec pcm_s16le -f s16le -ar 目标音频采样率 "目标音频路径"

示例:ffmpeg -i "F:\mp4\3.TF以及地图构建_201215172919_8k.m4a" -acodec pcm_s16le -f s16le -ar 8000 "F:\mp4\3.TF以及地图构建_201215172919_8k_201215173520_8k.pcm"

处理过程输出信息:

ffmpeg version git-2020-04-17-889ad93 Copyright (c) 2000-2020 the FFmpeg developers
 built with gcc 9.3.1 (GCC) 20200328
 configuration: --disable-static --enable-shared --enable-gpl --enable-version3 --enable-sdl2 --enable-fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-libdav1d --enable-libbluray --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libsrt --enable-libtheora --enable-libtwolame --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable-libvidstab --enable-libvmaf --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa --enable-libspeex --enable-libxvid --enable-libaom --disable-w32threads --enable-libmfx --enable-ffnvcodec --enable-cuda-llvm --enable-cuvid --enable-d3d11va --enable-nvenc --enable-nvdec --enable-dxva2 --enable-avisynth --enable-libopenmpt --enable-amf
 libavutil   56. 42.102 / 56. 42.102
 libavcodec   58. 80.100 / 58. 80.100
 libavformat  58. 42.100 / 58. 42.100
 libavdevice  58. 9.103 / 58. 9.103
 libavfilter   7. 77.101 / 7. 77.101
 libswscale   5. 6.101 / 5. 6.101
 libswresample  3. 6.100 / 3. 6.100
 libpostproc  55. 6.100 / 55. 6.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'F:\mp4\3.TF浠ュ強鍦板浘鏋勫缓_201215172919_8k.m4a':
 Metadata:
  major_brand   : M4A
  minor_version  : 512
  compatible_brands: M4A isomiso2
  encoder     : Lavf58.42.100
 Duration: 00:34:52.63, start: 0.000000, bitrate: 25 kb/s
  Stream #0:0(und): Audio: aac (LC) (mp4a / 0x6134706D), 8000 Hz, mono, fltp, 25 kb/s (default)
  Metadata:
   handler_name  : SoundHandler
Stream mapping:
 Stream #0:0 -> #0:0 (aac (native) -> pcm_s16le (native))
Press [q] to stop, [?] for help
Output #0, s16le, to 'F:\mp4\3.TF浠ュ強鍦板浘鏋勫缓_201215172919_8k_201215173520_8k.pcm':
 Metadata:
  major_brand   : M4A
  minor_version  : 512
  compatible_brands: M4A isomiso2
  encoder     : Lavf58.42.100
  Stream #0:0(und): Audio: pcm_s16le, 8000 Hz, mono, s16, 128 kb/s (default)
  Metadata:
   handler_name  : SoundHandler
   encoder     : Lavc58.80.100 pcm_s16le
size=  32696kB time=00:34:52.54 bitrate= 128.0kbits/s speed=8.63e+03x
video:0kB audio:32696kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.000000%

5. 软件包下载(以上调用过程和参数已经封装处理,软件目的是调用百度音频识别API将视频中的音频转化为文字)

软件开源代码地址(项目集成文字识别、语音合成、语音识别):https://gitee.com/bidev_admin/river-int-ai.git

运行软件包下载地址(.Net Framework 4.5): https://pan.baidu.com/s/1z-WFDGHhEP8tqLqwp9I0Mw  提取码:  r3sk

作者:沐汐 Vicky
出处:http://www.cnblogs.com/EasyInvoice

以上就是C# 调用FFmpeg处理音视频的示例的详细内容,更多关于c# 处理音视频的资料请关注我们其它相关文章!

(0)

相关推荐

  • C#实现语音视频录制-附demo源码

    在很多语音视频软件系统中,经常有将实时的音频或视频录制为文件保存到磁盘的需求,比如,视频监控系统中录制监控到的视频.视频会议系统中录制整个会议的过程.语音通话系统中录制完整的对话内容.等等. MFile组件(Oraycn.MFile.dll)是傲瑞实用组件之一,它可以将原始的语音数据和视频数据按照指定的格式进行编码,并将它们写入到视频文件(如.mp4)中. 一.缘起 最近正在做的一个网络招聘平台的项目,其中有一个模块是这样的,应聘者可以通过该系统的客户端录制自己的视频(自我介绍)上传到服务器,而

  • 基于AForge实现C#摄像头视频录制功能

    本文为大家分享了AForge实现C#摄像头视频录制功能的具体方法,供大家参考,具体内容如下 1. 概述 最近由于兴趣学习了下在C#上使用AForge录制摄像头视频并压缩编码.总体上来说这个第三方.net视觉开发库还是比较稳定的(AForge lib下载.离线帮助文档下载).但是由于这个第三方库维护不怎么样,导致会出现不兼容的问题.这里将这些与大家分享,希望对您有帮助. 在使用AForge第三方库录制本地视频所要使用到的类主要有这几个:FilterInfoCollection.VideoCaptu

  • C#实现通过ffmpeg从flv视频文件中截图的方法

    本文实例讲述了C#实现通过ffmpeg从flv视频文件中截图的方法.分享给大家供大家参考.具体分析如下: 需要先下载ffmpeg,这是开源的,代码如下所示: 复制代码 代码如下: using System; using System.Configuration; public class PublicMethod:System.Web.UI.Page {     public PublicMethod()     {     }     //文件路径     public static stri

  • C# 使用WPF 用MediaElement控件实现视频循环播放

    在WPF里用MediaElement控件,实现一个循环播放单一视频的程序,同时可以控制视频的播放.暂停.停止. 一种方式,使用MediaElement.MediaEnded事件,在视频播放结束后,自动重新播放: 另一种方式,使用WPF定时器,在定时器事件里写入视频播放代码. 后者优点是可以控制循环时长,不必等到视频播放结束就可以开始下一次播放,比如:同时启动多个播放程序,使多个时长不同的视频同时播放,无限循环,如果采用第一种方式,累计多次自动播放后,视频内容就无法同步. 第一种方式: XAML:

  • C#实现基于ffmpeg加虹软的人脸识别的示例

    关于人脸识别 目前的人脸识别已经相对成熟,有各种收费免费的商业方案和开源方案,其中OpenCV很早就支持了人脸识别,在我选择人脸识别开发库时,也横向对比了三种库,包括在线识别的百度.开源的OpenCV和商业库虹软(中小型规模免费). 百度的人脸识别,才上线不久,文档不太完善,之前联系百度,官方也给了我基于Android的Example,但是不太符合我的需求,一是照片需要上传至百度服务器(这个是最大的问题),其次,人脸的定位需要自行去实现(捕获到人脸后上传进行识别). OpenCV很早以前就用过,

  • C#开发可播放摄像头及任意格式视频的播放器

    前言 本文主要讲述,在WPF中,借助Vlc.DotNet调用VLC类库,实现视频播功能,下面我们先来做开发前的准备工作. 准备工作 首先,我们创建一个项目WpfVLC,然后,进入Neget搜索Vlc.DotNet,得到如下界面: 我们选择Vlc.DotNet.Wpf,点击安装(这里我已经安装了,所以图中显示为卸载). 然后,我们去VLC官网,下载VLC播放器. VLC官网:http://www.videolan.org/ 因为我的电脑是64位的,所以我下载64位的VLC版本,如下图: 下载完成后

  • C# winform循环播放多个视频

    本文实例为大家分享了winform循环播放多个视频的具体代码,供大家参考,具体内容如下 环境: vs2015 +winform 首先,vs自带组件很方便,所以,用windowMediaplayer组件,如果做单曲循环播放的话,加个属性: axWindowsMediaPlayer1.settings.autoStart = true; //设置自动播放 axWindowsMediaPlayer1.settings.setMode("loop", true); //设置循环播放 言归正传:

  • C# 使用SDL2实现Mp4文件播放音视频操作

    播放音视频的关键:视频的格式是H264,音频的格式是AAC.使用ffmpeg探测流的方式来实现音视频流的解码播放. 数据处理逻辑:H264->YUV AAC->PCM. SDL2工具类 using SDL2; using System; using System.Collections.Generic; using System.Linq; using System.Runtime.InteropServices; using System.Text; using System.Threadi

  • C# 调用FFmpeg处理音视频的示例

    FFmpeg 开源.跨平台.体积小.功能强大,提供了录制.转换以及流化音视频的完整解决方案. 官网:https://www.ffmpeg.org/ 百科:https://baike.baidu.com/item/ffmpeg/2665727?fr=aladdin FFmpeg 应用非常广泛,可以用来播放本地视频甚至网络视频,查看音视频信息,还可以用于从视频中提取音频,转换音视频文件格式等等,本文主要介绍如何调用 FFmpeg 来查看音视频信息.从视频中提取音频.转换音视频格式等. 1. 调用FF

  • C#调用FFmpeg操作音视频的实现示例

    目录 项目背景 FFmpeg介绍 FFmpeg相关教程 博客示例源码 下载FFmpeg.exe安装包 C#进程调用FFmpeg操作音视频 项目背景 因为公司需要对音视频做一些操作,比如说对系统用户的发音和背景视频进行合成,以及对多个音视频之间进行合成,还有就是在指定的源背景音频中按照对应的规则在视频的多少秒钟内插入一段客户发音等一些复杂的音视频操作.本篇文章主要讲解的是使用C#进程(Process)调用FFmpeg.exe进行视频合并,音频合并,音频与视频合并成视频这几个简单的音视频操作,还有些

  • android采用FFmpeg实现音视频合成与分离

    上一篇文章谈到音频剪切.混音.拼接与转码,也详细介绍cMake配置与涉及FFmpeg文件的导入: android端采用FFmpeg进行音频混合与拼接剪切.现在接着探讨音视频的合成与分离. 1.音频提取 从多媒体文件中提取音频,关键命令为"-acodec copy -vn",其中"-acodec copy"是采用音频编码器拷贝音频流,"-vn"是去掉video视频流: /** * 使用ffmpeg命令行进行抽取音频 * @param srcFile

  • Qt利用ffmpeg实现音视频同步

    目录 一.前言 二.效果图 三.体验地址 四.相关代码 五.功能特点 5.1 基础功能 5.2 特色功能 5.3 视频控件 5.4 内核ffmpeg 一.前言 用ffmpeg来做音视频同步,个人认为这个是ffmpeg基础处理中最难的一个,无数人就卡在这里,怎么也不准,本人也是尝试过网上各种demo,基本上都是渣渣,要么仅仅支持极其少量的视频文件比如收到的数据包是一帧视频一帧音频的,要么根本没法同步歪七八糟的,要么进度跳过去直接蹦蹦蹦崩溃的,其实最完美的音视频同步处理demo就是ffplay,我亲

  • C语言结合ffmpeg打印音视频信息

    目录 一.通过此文可以得到什么 二.实现思路 三.实现效果 四.实现源代码  一.通过此文可以得到什么 通过此练习: 1.知道了如何计算一个音频和视频的播放时间: 2.知道了音视频解码的思路的大体流程,之后无非就是在这个流程上进行扩充细节: 3.知道了如何通过C语言或者C++编程语言结合ffmpeg拿到一些音视频的关键信息,例如:帧率等: 二.实现思路 三.实现效果 zhenghui@zh-pc:/data/project/VSCProject/ffmpegStudy$ make make al

  • Golang 实现 RTP音视频传输示例详解

    目录 引言 RTP 数据包头部字段 Golang 的相关实现 结尾 引言 在 Coding 之前我们先来简单介绍一下 RTP(Real-time Transport Protocol), 正如它的名字所说,用于互联网的实时传输协议,通过 IP 网络传输音频和视频的网络协议. 由音视频传输工作小组开发,1996 年首次发布,并提出了以下使用设想. 简单的多播音频会议 使用 IP 的多播服务进行语音通信.通过某种分配机制,获取多播组地址和端口对.一个端口用于音频数据的,另一个用于控制(RTCP)包,

  • Javacv使用ffmpeg实现音视频同步播放

    最近用javaCV的ffmpeg包的FFmpegFrameGrabber帧捕捉器对捕捉到的音频帧和视频帧做了同步的播放.采用的同步方法是视频向音频同步. 程序和源码 具体的思路如下: (1)首先介绍ffmpeg是如何捕捉视频文件的图像和声音的 FFmpegFrameGrabber fg = new FFmpegFrameGrabber("a video file path or a url); 得到帧捕捉器对象后,调用它的grab()方法就会返回捕捉到的Frame对象.这个Frame可以是视频帧

  • java调用ffmpeg实现转换视频

    最近由于项目需要把不同格式的视频转换为ts流,故研究了一下ffmpeg.在网上找了很多资料,主要参考了Java+Windows+ffmpeg实现视频转换功能. 期间也加了几个qq群,咨询了各大高手,其中在代码中关于ffmpeg的命令就是来自其中一个qq群里面的大神. 下载相关文件 ffmpeg地址,我下载是windows 64位static版本. xuggler下载地址 下面的代码我上传到了github,需要的可以下载下来看看. 步骤: 1.研究java如何调用外部程序 2.研究ffmpeg转换

  • PHP+FFMPEG实现将视频自动转码成H264标准Mp4文件

    配置php.ini文件 复制代码 代码如下: file_uploads = on ;//是否允许通过HTTP上传文件的开关.默认为ON即是开 upload_tmp_dir ;//文件上传至服务器上存储临时文件的地方,如果没指定就会用系统默认的临时文件夹 upload_max_filesize = 1024m ;//望文生意,即允许上传文件大小的最大值.默认为2M,我们设置为1G post_max_size = 1024m ;//指通过表单POST给PHP的所能接收的最大值,我们也设置为1G ma

  • python爬取youtube视频的示例代码

      这几天正在追剧,原名<大秦帝国之天下>的<大秦赋>,看着看着又想把前几部刷一遍了,但第一部<裂变>自己没有高清资源,搜了一波发现youtube上有个48集版的高清资源,有删减就有删减吧,就想着写个脚本批量下载一下,记录一下过程,主要是youtube1080p及以上的分辨率做了音视频分离,下载后需要用ffmpeg做一次音视频融合.参考了pytube模块. 1.下载音视频数据 pytube可以通过pip安装 $pip install pytube from pytube

随机推荐