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

注册一个logo需要多少钱威海优化联系电话

注册一个logo需要多少钱,威海优化联系电话,东山县建设官方网站,wordpress搭建完成后前言 在Android音视频开发中#xff0c;网上知识点过于零碎#xff0c;自学起来难度非常大#xff0c;不过音视频大牛Jhuster提出了《Android 音视频从入门到提高 - 任务列表》。本文是Android音视频任务列表的其中一个#xff0c; 对应的要学习的内容是#xff1a;如何使…前言 在Android音视频开发中网上知识点过于零碎自学起来难度非常大不过音视频大牛Jhuster提出了《Android 音视频从入门到提高 - 任务列表》。本文是Android音视频任务列表的其中一个 对应的要学习的内容是如何使用FFmpeg命令行进行媒体格式的转封装 音视频任务列表 音视频任务列表: 点击此处跳转查看. 目录 1 音视频文件转MP4格式 1.1 MP4格式简介 当谈到MP4格式时我们通常指的是MPEG-4 Part 14它是一种常用的数字多媒体容器格式。容器格式是一种可以将不同类型的数据如音频、视频、字幕和图片等合并在一个文件中的技术。MP4是一种非常流行的容器格式几乎所有设备和平台都支持它。 用通俗易懂的话来解释MP4格式 想象MP4文件就像是一个箱子。这个箱子里可以装进各种东西比如音乐、电影和照片。每种东西都有自己的特点就像音乐有旋律电影有画面照片有图像。MP4文件可以像一个大箱子一样把这些东西打包在一起让你可以一次性携带和传输多种媒体内容。 MP4文件里通常会包含以下几种东西 视频流这是电影或视频的画面部分。MP4文件可以包含一个或多个视频流以便支持不同的画面品质或多个角度。音频流这是声音部分比如音乐或角色的对话。和视频一样MP4文件可以包含多个音频流使得你可以切换不同的语言或音效。字幕这是显示在视频上方或下方的文字用于展示对话或说明。MP4文件允许添加不同语言或样式的字幕让不同地区的观众都能理解内容。其他数据MP4文件还可以包含其他类型的数据比如封面图片、元数据信息等。这些数据能够让你在播放时获得更多信息或者在设备上显示电影封面。 总的来说MP4格式是一个方便、灵活的数字媒体容器让你能够轻松地存储、传输和播放多种类型的媒体内容。它已经成为互联网上分享视频和音乐的主流格式之一。无论是在手机、电脑、平板还是电视上你都可以放心地使用MP4文件来欣赏你喜爱的娱乐内容。 1.2 音视频文件转mp4格式 要将音频或视频文件转换为MP4格式你可以使用FFmpeg的命令行工具。下面是一个常见的命令示例 ffmpeg -i input.mp4 -c:v libx264 -c:a aac output.mp4上述命令中的参数含义如下 -i input.mp4: 这是输入文件的路径和名称。在这个例子中input.mp4是你要转换的原始音频或视频文件。-c:v libx264: 这是视频编码器选项。这里我们使用libx264编码器它是H.264视频编码器广泛支持且具有较好的压缩效率和质量。-c:a aac: 这是音频编码器选项。我们使用AAC音频编码器它是一种高质量的音频压缩技术。output.mp4: 这是输出文件的路径和名称。在这个例子中output.mp4是你转换后生成的MP4文件。 使用上述命令FFmpeg会将输入文件进行重新编码并将其保存为MP4格式的输出文件。请注意此过程可能需要一些时间具体时间取决于输入文件的大小和计算机性能。 如果你希望调整视频或音频的参数比如分辨率、比特率、帧率等可以在命令中添加其他选项。不过在实际使用时请注意保持合适的视频和音频参数以确保输出文件的质量和大小符合你的需求。 最后记得在命令行中指定FFmpeg的正确路径或确保FFmpeg已正确地安装在你的计算机上。 1.2.1 视频编码器选项 除了-c:v libx264FFmpeg还支持许多其他视频编码器你可以根据你的需求选择合适的编码器。以下是一些常见的视频编码器选项 libx264: H.264视频编码器高效且广泛支持。libx265: H.265/HEVC视频编码器具有更好的压缩性能但可能需要更长的编码时间。libvpx: VP8和VP9视频编码器VP9是开放式WebM视频格式的常用编码器。mpeg4: MPEG-4 Part 2视频编码器比H.264和H.265更旧但仍然在某些场景中使用。libaom-av1: AV1视频编码器具有出色的压缩性能但编码时间可能较长。copy: 使用此选项时FFmpeg将直接拷贝输入视频流不进行重新编码。这对于只想改变容器格式而不重新压缩视频的情况很有用。 使用其他视频编码器的示例命令类似于之前的例子只需将-c:v选项后的编码器名称替换为你想要使用的编码器即可。例如使用libvpx编码器 ffmpeg -i input.mp4 -c:v libvpx -c:a aac output.webm在这个例子中我们将输入文件转换为WebM格式并使用libvpx编码器进行视频编码音频仍然使用AAC编码器。 请注意不同的视频编码器具有不同的特性和效率选择适合你需求的编码器很重要。同时编码过程的速度和输出文件的质量也可能因所选编码器而异。 1.2.2 音频编码器选项 除了-c:a aacFFmpeg还支持许多其他音频编码器你可以根据你的需求选择合适的编码器。以下是一些常见的音频编码器选项 aac: 使用Advanced Audio Coding (AAC)编码器广泛用于高质量音频压缩特别适用于MP4格式。libmp3lame: 使用LAME MP3编码器用于将音频编码为MP3格式是MP3压缩的常用工具。libopus: 使用Opus编码器支持低延迟音频传输和高质量音频编码。libvorbis: 使用Vorbis编码器用于将音频编码为Ogg Vorbis格式。pcm_s16le: 无损音频编码器直接使用16位有符号PCM编码。copy: 使用此选项时FFmpeg将直接拷贝输入音频流不进行重新编码。这对于只想改变容器格式而不重新压缩音频的情况很有用。 使用其他音频编码器的示例命令类似于之前的例子只需将-c:a选项后的编码器名称替换为你想要使用的编码器即可。例如使用libmp3lame编码器 ffmpeg -i input.wav -c:a libmp3lame output.mp3在这个例子中我们将输入的WAV音频文件转换为MP3格式并使用libmp3lame编码器进行音频编码。 1.3 MP4文件中的Demuxer 1.3.1 MP4文件中的Demuxer是什么? 在FFmpeg中MP4文件的Demuxer是一个解复用器Demultiplexer它负责从MP4容器文件中提取视频、音频、字幕等各种媒体流。Demuxer的作用是将这些流分离出来以便后续的处理器如解码器、滤镜等可以单独处理这些媒体数据。 MP4文件是一种容器格式可以包含多个媒体流通常包括以下几种 视频流包含视频数据如电影或视频片段的画面。音频流包含音频数据如音乐或角色的对话。字幕流包含字幕数据用于显示视频中的文字。其他元数据MP4文件还可以包含其他类型的数据如封面图片、艺术家信息等。 Demuxer在解析MP4文件时会读取文件的结构找到并识别其中的各种媒体流并将它们提取出来。一旦这些流被提取它们就可以被传递给相应的解码器进行解码或者进一步处理比如转码、剪辑、添加滤镜等。 使用MP4文件的Demuxer功能可以将MP4文件拆分成单独的视频、音频和字幕文件这样就可以对它们进行独立处理或者重新封装成其他容器格式。这在视频编辑、转码和处理等应用中非常有用。 总之MP4文件的Demuxer是FFmpeg中的一个模块它能够解析MP4容器文件并从中提取各种媒体流为后续处理器提供方便。 1.3.2 ffmpeg命令行查看mp4文件的Demuxer信息 你可以使用FFmpeg命令行工具来查看MP4文件的Demuxer信息。在命令行中运行以下命令 ffmpeg -i input.mp4将input.mp4替换为你要查看的MP4文件的路径。 运行上述命令后FFmpeg会解析输入的MP4文件并显示相关的信息包括视频流、音频流、字幕流以及其他元数据信息。在输出结果中你可以找到以下信息 Stream #x:xx: 这些行显示了每个流的详细信息。其中x是流的索引号从0开始xx是流的类型比如Video表示视频流Audio表示音频流Subtitle表示字幕流等。Codec: 这一行显示了每个流所使用的编解码器信息。Duration: 这一行显示了每个流的时长。Bitrate: 这一行显示了每个流的比特率即每秒传输的比特数。Resolution: 这一行显示了视频流的分辨率。Audio: 这一行显示了音频流的采样率和声道数。Subtitle: 这一行显示了字幕流的语言信息。Metadata: 这一部分显示了文件中可能包含的其他元数据信息如标题、作者、封面图片等。 通过查看这些信息你可以了解MP4文件中包含的媒体流以及与之相关的详细信息。这对于检查文件属性、诊断问题以及了解媒体内容非常有用。 下面是一个具体的案例 假设你有一个名为example.mp4的MP4文件位于你当前工作目录下。现在你想要查看该文件中的媒体流和其他相关信息。 打开终端或命令提示符Windows输入以下命令 ffmpeg -i example.mp4然后按下回车键运行该命令。 FFmpeg会解析example.mp4文件并显示相关的媒体流信息以及其他元数据信息。输出结果可能类似于以下内容 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from example.mp4:Metadata:major_brand : mp42minor_version : 0compatible_brands: isommp42creation_time : 2023-08-03T23:34:56.000000ZDuration: 00:03:45.56, start: 0.000000, bitrate: 1758 kb/sStream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709/bt709/bt709), 1280x720 [SAR 1:1 DAR 16:9], 1624 kb/s, 25 fps, 25 tbr, 90k tbn, 50 tbc (default)Metadata:creation_time : 2023-08-03T23:34:56.000000Zhandler_name : VideoHandlerStream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 127 kb/s (default)Metadata:creation_time : 2023-08-03T23:34:56.000000Zhandler_name : SoundHandler在这个例子中输出提供了以下信息 文件格式mov,mp4,m4a,3gp,3g2,mj2元数据信息主要品牌、次要版本、兼容品牌、创建时间等视频流编码器为h264分辨率为1280x720帧率为25 fps比特率为1624 kb/s音频流编码器为AACLC采样率为44100 Hz声道数为立体声比特率为127 kb/s 通过解析这些信息你可以了解到example.mp4文件的基本信息以及其中包含的视频和音频流的详细参数。 1.4 MP4文件中的Muxer 1.4.1 MP4文件中的Muxer是什么? 在MP4文件中Muxer复用器或合复用器是用于合成Multiplexing不同类型媒体流到单个MP4容器文件中的程序或模块。MP4文件是一种数字多媒体容器格式它可以包含视频、音频、字幕和其他数据流。Muxer的主要作用是将这些来自不同来源的媒体流合并到一个MP4文件中使它们可以同时存储、传输和播放。 简单来说MP4文件的Muxer就像是合并不同媒体内容的容器将视频、音频、字幕等流放入其中构建一个统一的文件。这样你可以在一个单独的MP4文件中同时包含视频、音频、字幕和其他相关内容。 具体来说MP4文件的Muxer会完成以下任务 打开新文件首先Muxer会创建一个新的MP4文件并打开它准备向其中写入数据。合并媒体流Muxer会将来自不同来源的媒体流比如视频、音频和字幕流合并到MP4文件中。它会根据MP4文件的规范将这些流正确地放置在文件的指定位置。写入媒体数据Muxer会从各个媒体流中读取数据并按照特定的格式将这些数据写入到MP4文件中。这样每个媒体流的数据都能被正确地放入容器中。重新封装在一些情况下Muxer可能还会对媒体数据进行重新封装以满足特定的要求或优化文件结构。关闭文件当所有媒体数据都写入到MP4文件中后Muxer会关闭文件完成合成过程。 总的来说MP4文件的Muxer在媒体处理工具中扮演着重要的角色它负责将来自不同来源的媒体流合并到一个MP4容器文件中。这使得MP4文件成为一种方便的多媒体容器可以同时存储、传输和播放多种类型的媒体内容如视频、音频、字幕和其他元数据。 1.4.2 ffmpeg命令行查看mp4文件的Muxer信息 在FFmpeg中命令行可以用于查看MP4文件的Muxer信息但实际上查看Muxer信息并不是FFmpeg的主要功能之一因为Muxer是用于合成Multiplexing多个媒体流到容器文件的过程而通常情况下我们是在处理单个媒体文件或者进行媒体转码等操作。 然而如果你想查看MP4文件的一般信息包括媒体流、元数据等可以使用以下命令 ffmpeg -i input.mp4将input.mp4替换为你要查看的MP4文件的路径。 运行这个命令后FFmpeg会解析输入的MP4文件并显示相关的信息包括视频流、音频流、字幕流以及其他元数据信息。在输出结果中你可以找到以下信息 Stream #x:xx: 这些行显示了每个流的详细信息。其中x是流的索引号从0开始xx是流的类型比如Video表示视频流Audio表示音频流Subtitle表示字幕流等。Codec: 这一行显示了每个流所使用的编解码器信息。Duration: 这一行显示了每个流的时长。Bitrate: 这一行显示了每个流的比特率即每秒传输的比特数。Resolution: 这一行显示了视频流的分辨率。Audio: 这一行显示了音频流的采样率和声道数。Subtitle: 这一行显示了字幕流的语言信息。Metadata: 这一部分显示了文件中可能包含的其他元数据信息如标题、作者、封面图片等。 通过查看这些信息你可以了解MP4文件中包含的媒体流以及与之相关的详细参数。请注意这些信息并不直接涉及Muxer的具体细节因为在大多数情况下FFmpeg会自动选择合适的Muxer进行输出而不需要手动查看或指定Muxer信息。 下面是一个具体的案例 假设你有一个名为example.mp4的MP4文件位于你当前工作目录下。现在你想要查看该文件中的媒体流和其他相关信息。 打开终端或命令提示符Windows输入以下命令 ffmpeg -i example.mp4然后按下回车键运行该命令。 FFmpeg会解析example.mp4文件并显示相关的媒体流信息以及其他元数据信息。输出结果可能类似于以下内容 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from example.mp4:Metadata:major_brand : mp42minor_version : 0compatible_brands: isommp42creation_time : 2023-08-03T23:34:56.000000ZDuration: 00:03:45.56, start: 0.000000, bitrate: 1758 kb/sStream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709/bt709/bt709), 1280x720 [SAR 1:1 DAR 16:9], 1624 kb/s, 25 fps, 25 tbr, 90k tbn, 50 tbc (default)Metadata:creation_time : 2023-08-03T23:34:56.000000Zhandler_name : VideoHandlerStream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 127 kb/s (default)Metadata:creation_time : 2023-08-03T23:34:56.000000Zhandler_name : SoundHandler在这个例子中输出提供了以下信息 文件格式mov,mp4,m4a,3gp,3g2,mj2元数据信息主要品牌、次要版本、兼容品牌、创建时间等视频流编码器为h264分辨率为1280x720帧率为25 fps比特率为1624 kb/s音频流编码器为AACLC采样率为44100 Hz声道数为立体声比特率为127 kb/s 通过解析这些信息你可以了解到example.mp4文件的基本信息以及其中包含的视频和音频流的详细参数。 2 视频文件转FLV 2.1 FLV格式简介 当我们谈论FLV格式时它是一种视频文件格式FLV代表“Flash Video”。FLV是Adobe公司开发的一种流行的视频容器格式最初用于在互联网上传输和播放视频内容特别是在Flash播放器中。虽然现在已经有更先进的视频格式出现但FLV仍然在一些应用中广泛使用。 FLV格式的简洁之处在于它是一种容器格式可以包含不同编码和分辨率的视频、音频和字幕流。这意味着你可以把视频和音频合并在一个FLV文件中然后通过网络传输它并使用Flash播放器来播放。 由于FLV文件通常较小所以在互联网上传输和共享视频时非常有用。在过去许多视频网站都使用FLV格式因为它可以通过Flash插件在各种浏览器上播放。 然而随着技术的发展HTML5视频和其他更先进的视频编解码技术逐渐取代了Flash和FLV格式。现在主流视频网站已经转向更现代的视频格式如MP4、WebM等因为它们在各种设备上的兼容性更好并支持更高质量的视频。 总而言之FLV格式是一种过去常用的视频容器格式适用于Flash播放器和早期的视频网站。虽然它在一些应用中仍然有用但随着技术的发展它的使用逐渐减少让位给更现代的视频格式。 2.2 视频文件转FLV 要将视频文件转换为FLV格式你可以使用FFmpeg的命令行工具。下面是一个常见的命令示例 ffmpeg -i input.mp4 -c:v libx264 -c:a aac output.flv上述命令中的参数含义如下 -i input.mp4: 这是输入文件的路径和名称。在这个例子中input.mp4是你要转换的原始视频文件。-c:v libx264: 这是视频编码器选项。这里我们使用libx264编码器它是H.264视频编码器广泛支持且具有较好的压缩效率和质量。-c:a aac: 这是音频编码器选项。我们使用AAC音频编码器它是一种高质量的音频压缩技术。output.flv: 这是输出文件的路径和名称。在这个例子中output.flv是你转换后生成的FLV文件。 使用上述命令FFmpeg会将输入的视频文件进行重新编码并将其保存为FLV格式的输出文件。请注意此过程可能需要一些时间具体时间取决于输入文件的大小和计算机性能。 2.3 FFmpeg生成带关键索引的 FLV 要使用FFmpeg生成带有关键索引keyframe index的FLV文件你需要添加-g参数来设置关键帧间隔。关键索引可以提高视频文件的随机访问性能让视频在网络传输和播放过程中更加稳定和高效。 以下是一个生成带关键索引的FLV文件的命令行示例 ffmpeg -i input.mp4 -c:v libx264 -c:a aac -g 30 output.flv上述命令中的参数含义如下 -i input.mp4: 这是输入文件的路径和名称。在这个例子中input.mp4是你要转换的原始视频文件。-c:v libx264: 这是视频编码器选项。这里我们使用libx264编码器它是H.264视频编码器广泛支持且具有较好的压缩效率和质量。-c:a aac: 这是音频编码器选项。我们使用AAC音频编码器它是一种高质量的音频压缩技术。-g 30: 这是设置关键帧间隔的选项。在这个例子中我们将关键帧间隔设置为30帧。你可以根据需要调整这个值通常使用视频帧率的两倍作为关键帧间隔是一个合理的选择。output.flv: 这是输出文件的路径和名称。在这个例子中output.flv是你生成的带有关键索引的FLV文件。 运行上述命令后FFmpeg会读取input.mp4文件并使用libx264视频编码器和AAC音频编码器重新编码视频和音频并生成一个带有关键索引的FLV格式的输出文件output.flv。 除了使用-g参数设置关键帧间隔外还有其他一些与关键帧相关的参数可以在FFmpeg中使用以便更好地控制视频编码和生成关键索引的FLV文件。以下是一些常见的关键帧相关的参数 使用-bf参数设置B帧数 假设我们有一个名为input.mp4的视频文件现在我们想要将其转换为FLV格式并设置两个B帧。我们可以使用以下命令 ffmpeg -i input.mp4 -c:v libx264 -c:a aac -bf 2 output.flv在这个命令中-bf 2表示设置两个B帧。 使用-keyint_min参数设置最小关键帧间隔 如果我们希望强制使关键帧更频繁可以设置最小关键帧间隔为30帧。命令如下 ffmpeg -i input.mp4 -c:v libx264 -c:a aac -g 60 -keyint_min 30 output.flv在这个命令中-g 60表示设置关键帧间隔为60帧-keyint_min 30表示设置最小关键帧间隔为30帧。 使用-force_key_frames参数强制指定关键帧的时间戳 假设我们希望在视频的第10秒和第30秒位置生成关键帧可以使用以下命令 ffmpeg -i input.mp4 -c:v libx264 -c:a aac -force_key_frames 10,30 output.flv在这个命令中-force_key_frames 10,30表示在时间戳10秒和30秒位置生成关键帧。 使用-x264opts keyint参数设置关键帧间隔libx264编码器 如果我们使用libx264编码器可以使用-x264opts keyint参数来设置关键帧间隔。例如设置关键帧间隔为30帧的命令如下 ffmpeg -i input.mp4 -c:v libx264 -c:a aac -x264opts keyint30 output.flv以上四个案例分别演示了如何使用不同参数来控制关键帧的生成和间隔以及如何影响视频编码和生成带有关键索引的FLV文件。请根据你的具体需求选择适合的参数设置。 请注意生成关键索引可能会导致输出文件稍微增大一些但它可以显著改善视频的随机访问性能。这在视频网络传输和流媒体播放中非常有用特别是对于长时间的视频文件。 3 视频文件转M3U8 3.1 M3U8格式简介 M3U8是一种简单易懂的文本文件格式用于描述多媒体播放列表。它是一种基于文本的文件通常用于流媒体服务和在线视频播放。 M3U8文件的内容非常简单它包含一系列URL地址这些地址指向不同的媒体文件片段或流。这些媒体文件片段通常是视频或音频的分段每个片段都是一小段连续的媒体内容。通过将这些片段按顺序组合在一起就可以实现流畅的媒体播放。 M3U8文件的结构如下 #EXTM3U #EXT-X-VERSION:3 #EXT-X-TARGETDURATION:10 #EXT-X-MEDIA-SEQUENCE:0#EXTINF:10.0, https://example.com/media/segment-0.ts #EXTINF:10.0, https://example.com/media/segment-1.ts #EXTINF:10.0, https://example.com/media/segment-2.ts#EXT-X-ENDLIST#EXTM3U: 这是M3U8文件的头部标记表示这是一个M3U8文件。#EXT-X-VERSION:3: 这是一个可选标记用于指定M3U8文件的版本。#EXT-X-TARGETDURATION:10: 这是一个必需标记用于指定每个媒体片段的最大持续时间以秒为单位。这个值告诉播放器在请求下一个片段之前等待的最长时间。#EXT-X-MEDIA-SEQUENCE:0: 这是一个必需标记用于指定第一个媒体片段的序列号。随着播放序列号会逐渐递增。#EXTINF:10.0,: 这是一个必需标记用于指定下一个媒体片段的持续时间以秒为单位。在逗号后面指定的时间是片段的持续时间。https://example.com/media/segment-0.ts: 这是一个媒体片段的URL地址它是实际视频或音频内容所在的位置。播放器会根据这些URL逐个加载和播放媒体片段。#EXT-X-ENDLIST: 这是一个可选标记表示M3U8文件中不再有其他片段播放到这里就结束了。 M3U8文件允许播放器动态地加载并播放媒体片段从而实现了流媒体的连续播放。这在实时直播和点播等场景中非常有用。 3.2 FFmpeg转HLS参数以及举例 HLSHTTP Live Streaming是一种流媒体传输协议它是由Apple公司开发的并被广泛用于实时直播和点播服务。M3U8是HLS使用的一种播放列表文件格式用于描述HLS媒体流的切片和播放顺序。 HLS协议将媒体文件切片成小段通常是10秒左右的TSTransport Stream分片然后将这些分片以M3U8文件的形式组织成一个播放列表。M3U8文件是一个简单的文本文件其中包含了一系列URL地址每个地址指向一个TS分片。播放器根据M3U8文件中的信息按顺序加载和播放这些分片从而实现流畅的媒体播放。 在FFmpeg中你可以使用一些特定的参数来将视频转换为HLS格式并生成M3U8播放列表文件。 以下是一些常见的FFmpeg参数用于将视频转换为HLS格式 -i input.mp4: 这是输入文件的路径和名称。在这个例子中input.mp4是你要转换为HLS的原始视频文件。-c:v libx264: 这是视频编码器选项。这里我们使用libx264编码器它是H.264视频编码器广泛用于HLS。-c:a aac: 这是音频编码器选项。我们使用AAC音频编码器因为它是HLS所支持的常用音频格式。-hls_time 10: 这是设置HLS切片时长的选项以秒为单位。在这个例子中我们将切片时长设置为10秒。-hls_list_size 0: 这是设置HLS播放列表中切片数量的选项。0表示生成无限大小的播放列表。-hls_segment_filename “output_%03d.ts”: 这是设置HLS切片文件名的选项。在这个例子中切片文件名将以output_001.ts、output_002.ts等格式命名。output.m3u8: 这是输出HLS播放列表文件的名称。在这个例子中我们将HLS播放列表保存为output.m3u8。 综合起来完整的FFmpeg命令如下 ffmpeg -i input.mp4 -c:v libx264 -c:a aac -hls_time 10 -hls_list_size 0 -hls_segment_filename output_%03d.ts output.m3u8运行上述命令后FFmpeg会读取input.mp4文件并将其转换为HLS格式生成HLS播放列表文件output.m3u8和对应的媒体切片文件output_001.ts、output_002.ts等等。这样就可以通过HTTP服务器或其他支持HLS的平台进行流媒体播放。 4 视频文件切片 4.1 FFmpeg切片segment参数 在FFmpeg中切片segment是指将输入视频或音频文件切分为多个固定长度的小段每个小段称为一个切片。切片在流媒体传输中非常有用可以实现平滑的播放和快速的随机访问。FFmpeg提供了一些参数来控制切片的生成。 下面是常见的切片相关参数 -segment_time duration: 这是设置每个切片的时长的选项以时间值duration表示。例如-segment_time 10表示每个切片的时长为10秒。-segment_time_delta duration: 这是设置切片时长的偏差的选项以时间值duration表示。默认情况下切片时长是固定的但使用这个选项可以让切片的时长在一定范围内浮动。例如-segment_time_delta 2表示切片的时长可以在10秒上下浮动2秒。-segment_format format: 这是设置切片文件格式的选项。可以使用mp4、avi、ts等格式。例如-segment_format ts表示生成TS格式的切片文件。-segment_list file: 这是设置输出切片列表文件的选项。切片列表文件是一个M3U8格式的文本文件包含所有切片文件的URL地址。例如-segment_list playlist.m3u8表示生成名为playlist.m3u8的切片列表文件。-segment_list_type type: 这是设置切片列表文件的类型的选项。可以使用m3u8或mpegts。m3u8表示生成HLS播放列表文件mpegts表示生成MPEG-TS格式的切片列表文件。-segment_list_size size: 这是设置切片列表文件的最大大小的选项。如果切片列表文件的大小超过这个值将重新生成一个新的切片列表文件。例如-segment_list_size 10M表示切片列表文件的最大大小为10MB。 这些参数可以根据你的需求来调整切片的生成方式。通过合理设置切片参数你可以实现适合不同应用场景的切片策略从而更好地控制生成的切片文件。 4.2 FFmpeg切片segment举例 假设你有一个名为input.mp4的视频文件并且你希望将它切片为每个切片时长为10秒的TS格式文件并生成一个HLS播放列表文件。 你可以使用以下命令来实现 ffmpeg -i input.mp4 -c:v libx264 -c:a aac -segment_time 10 -segment_format mpegts -segment_list output.m3u8 output_%03d.ts解释一下这个命令 -i input.mp4: 这是输入文件的路径和名称表示要切片的原始视频文件。-c:v libx264: 这是视频编码器选项我们使用libx264编码器进行H.264视频编码。-c:a aac: 这是音频编码器选项我们使用AAC音频编码器。-segment_time 10: 这是设置每个切片的时长的选项这里我们将切片时长设置为10秒。-segment_format mpegts: 这是设置切片文件格式的选项我们选择生成MPEG-TS格式的切片文件。-segment_list output.m3u8: 这是设置输出切片列表文件的选项我们将切片列表保存为output.m3u8。output_%03d.ts: 这是设置切片文件名的模板%03d表示使用三位数的数字递增命名切片文件。例如生成的切片文件名可能是output_001.ts、output_002.ts等等。 运行这个命令后FFmpeg会读取input.mp4文件并将其切片为每个时长为10秒的TS格式文件。同时它会生成一个名为output.m3u8的HLS播放列表文件其中包含了所有切片文件的URL地址。切片文件会以output_001.ts、output_002.ts等格式存储在同一目录中。 你可以将生成的切片文件和output.m3u8播放列表文件部署在支持HLS播放的HTTP服务器上然后就可以通过HLS协议进行流媒体播放。播放器将根据output.m3u8中的信息逐个加载和播放这些切片文件实现流畅的视频播放和随机访问。 4.3 FFmpeg使用ss与t参数进行切片 在FFmpeg中你可以使用-ss参数来指定从输入文件的哪个时间点开始切片使用-t参数来指定切片的持续时间。 以下是一个示例命令假设你有一个名为input.mp4的视频文件你想从第10秒开始切片并切片10秒钟的内容然后保存为一个新的文件output.mp4 ffmpeg -ss 00:00:10 -i input.mp4 -t 10 -c:v copy -c:a copy output.mp4解释一下这个命令 -ss 00:00:10: 这是指定从第10秒开始切片的参数。00:00:10表示时间点为10秒。-i input.mp4: 这是输入文件的路径和名称表示要切片的原始视频文件。-t 10: 这是指定切片的持续时间的参数这里我们设置切片持续时间为10秒。-c:v copy: 这是视频编码器选项copy表示直接复制视频流而不重新编码。因为我们只是进行简单的切片操作所以不需要重新编码视频。-c:a copy: 这是音频编码器选项copy表示直接复制音频流而不重新编码。同样由于我们只是进行切片不需要重新编码音频。output.mp4: 这是输出文件的路径和名称表示保存切片后的内容为新的文件output.mp4。 运行这个命令后FFmpeg会从input.mp4文件的第10秒开始切片10秒钟的内容并将结果保存为output.mp4文件。 请注意使用-ss参数进行切片时FFmpeg会尽可能地寻找最近的关键帧I帧作为切片的起始点以确保切片的质量和准确性。如果你需要更精确的切片起始点可以使用-ss参数和-i参数的顺序调换即将-ss参数放在输入文件之前这样可以更精确地控制切片起始时间点。​ 5 音视频文件音视频流抽取 5.1 FFmpeg抽取音视频文件中的AAC音频流 要从音视频文件中抽取AAC音频流你可以使用FFmpeg并指定输出的音频编码器为AAC。 以下是一个示例命令假设你有一个名为input.mp4的视频文件并且你希望从中抽取AAC音频流并保存为一个独立的音频文件output.aac ffmpeg -i input.mp4 -vn -c:a copy -strict -2 output.aac解释一下这个命令 -i input.mp4: 这是输入文件的路径和名称表示要从中抽取音频流的原始视频文件。-vn: 这是禁止视频流选项表示不处理视频流只处理音频流。-c:a copy: 这是音频编码器选项copy表示直接复制音频流而不重新编码。由于我们只是抽取AAC音频流不需要重新编码。-strict -2: 这是一个可选选项用于设置编码器的严格程度。在此情况下我们设置为-2表示允许实验性的非标准AAC编码器。output.aac: 这是输出文件的路径和名称表示保存抽取的AAC音频流为output.aac文件。 运行这个命令后FFmpeg会从input.mp4文件中抽取AAC音频流并将结果保存为output.aac文件。 如果你需要重新编码音频流为其他格式或调整音频参数可以使用不同的音频编码器和选项。在上述示例中我们选择了copy选项这适用于直接复制原始的AAC音频流。如果需要进行其他音频处理可以选择不同的音频编码器并调整相应参数。 5.2 FFmpeg抽取音视频文件中的H.264视频流 要从音视频文件中抽取H.264视频流你可以使用FFmpeg并指定输出的视频编码器为H.264。 以下是一个示例命令假设你有一个名为input.mp4的视频文件并且你希望从中抽取H.264视频流并保存为一个独立的视频文件output.h264 ffmpeg -i input.mp4 -c:v copy -an output.h264解释一下这个命令 -i input.mp4: 这是输入文件的路径和名称表示要从中抽取视频流的原始视频文件。-c:v copy: 这是视频编码器选项copy表示直接复制视频流而不重新编码。由于我们只是抽取H.264视频流不需要重新编码。-an: 这是禁止音频流选项表示不处理音频流只处理视频流。output.h264: 这是输出文件的路径和名称表示保存抽取的H.264视频流为output.h264文件。 运行这个命令后FFmpeg会从input.mp4文件中抽取H.264视频流并将结果保存为output.h264文件。 如果你需要重新编码视频流为其他格式或调整视频参数可以使用不同的视频编码器和选项。在上述示例中我们选择了copy选项这适用于直接复制原始的H.264视频流。如果需要进行其他视频处理可以选择不同的视频编码器并调整相应参数。 5.3 FFmpeg抽取音视频文件中的H.265数据 要从音视频文件中抽取H.265也称为HEVC视频数据你可以使用FFmpeg并指定输出的视频编码器为H.265。 以下是一个示例命令假设你有一个名为input.mp4的视频文件并且你希望从中抽取H.265视频数据并保存为一个独立的视频文件output.h265 ffmpeg -i input.mp4 -c:v copy -an output.h265解释一下这个命令 -i input.mp4: 这是输入文件的路径和名称表示要从中抽取视频数据的原始视频文件。-c:v copy: 这是视频编码器选项copy表示直接复制视频流而不重新编码。由于我们只是抽取H.265视频数据不需要重新编码。-an: 这是禁止音频流选项表示不处理音频流只处理视频流。output.h265: 这是输出文件的路径和名称表示保存抽取的H.265视频数据为output.h265文件。 运行这个命令后FFmpeg会从input.mp4文件中抽取H.265视频数据并将结果保存为output.h265文件。 请注意H.265是一种视频编码标准它可以用于多种封装格式比如MP4、MKV等。上述命令中使用的-c:v copy选项表示直接复制原始视频流而不重新编码因此输出的output.h265文件中的数据将与原始视频的H.265数据一致。如果你需要将H.265数据重新封装到其他格式或进行其他视频处理可以使用不同的视频编码器和选项。 ​
http://www.yayakq.cn/news/6291/

相关文章:

  • 网站排名稳定后后期如何优化wordpress 通过电子邮件发布
  • 网站建设作品深圳少儿编程培训机构
  • 做个网站app吗网站建设推广公司
  • 网站建设对比分析天猫怎么开店铺
  • wordpress精简代码合肥百度推广优化排名
  • 部门网站集约化建设方案陕西seo
  • wordpress怎么调用外部主题网页seo资讯
  • 北苑网站建设网站如何做rss订阅
  • 做网站视频下载WordPress 云锁
  • wordpress 调用编辑器湖南正规关键词优化
  • 企业网站类型主要包括美业o2o平台有哪些
  • 上海浦东设计网站建设seo网络推广招聘
  • 设计导航网站大全see成都必去的地方排行
  • 网站建设全包公司推荐邢台网站建设联系电话
  • 扬中网站推广价格功能性质网站
  • 上海网站建设专家网站做分屏好不好
  • 广州市建设工程检测协会网站天安云谷网站建设
  • 网页设计报告详细设计西安网站seo优化公司
  • 烟台市两学一做网站分析网站推广和优化的原因
  • 全球网站访问量排名网页数据可视化设计案例
  • 南京做网站seo的重庆建设网站哪家好
  • 网站设计与程序方向google adsense
  • 昆仑万维做网站宝塔面板一键部署wordpress打不开
  • 现在推广网站最好的方式网站备案拍照点
  • 备案的网站可以改域名吗wap网站和internet网站
  • 网站默认中文字体台州seo网站推广费用
  • wap网站 微信小程序域名注册需要多少钱
  • 网站升级建设中做游戏陪玩网站
  • 专业的网站建设服务交易平台哈尔滨网络公司案例
  • 网站后台购买网上政务服务平台入口