我想用ffmpeg命令行转换一个视频文件,视、音频编码格式不变,只是将画面旋转90度,请问命令行该如何写

我想用ffmpeg命令行转换一个视频文件,视、音频编码格式不变,只是将画面旋转90度,请问命令行该如何写,第1张

在你的转码命令里面添加上-vf rotate=PI/2或者-vf rotate=3PI/2,例如

ffmpeg -i E:\ffmpeg\testmp4 -y -vf rotate=PI/2 E:\ffmpeg\dest1mp4

ffmpeg在做音视频编解码时非常方便,所以很多场景下转码使用的是ffmpeg,通过ffmpeg –-help可以看到ffmpeg常见的命令大概分为六部分:

命令格式如下:

下面罗列一些ffmpeg常用的信息查询命令:

1、查询版本信息

2、ffmpeg查询是否支持对应的视频文件格式

使用ffmpeg转吗,有时候可能会遇到无法解析的视频文件或者无法生成视频文件,报错提示不支持生成对应的视频文件,这时候就需要查看当前使用的ffmpeg是否支持对应的视频文件格式,需要使用ffmpeg -formats参数来查看:

根据上面输出的信息可以看到,输出的内容分为3个部分,具体如下。

输出信息中包含了三部分内容,具体如下。

输出信息的内容分为四列,具体如下。

从输出的帮助信息中可以看到,FLV的muxer的信息包含两大部分,具体如下。

从输出的帮助信息可以看到,FLV的demuxer的信息包含两大部分:

从帮助信息可以看到,H264(AVC)的编码参数包含两大部分,具体如下。

从帮助信息可以看到,H264(AVC)的解码参数查看包括两大部分,具体如下:

从帮助信息可以看到,colorkey滤镜查看信息包含两大部分,具体如下。

ffmpeg的封装转换(转封装)功能包含在AVFormat模块中,通过libavformat库进行Mux和Demux *** 作;多媒体文件的格式有很多种,这些格式中的很多参数在Mux与Demux的 *** 作参数中是公用的,下面来详细介绍一下这些公用的参数。

通过查看ffmpeg --help full信息,找到AVFormatContext参数部分,该参数下的所有参数均为封装转换可使用的参数。下表列出了ffmpeg AVFormatContext的主要参数及说明。

这些都是通用的封装、解封装 *** 作时使用的参数,后续章节中介绍转封装 *** 作、解封装 *** 作、封装 *** 作时,上述参数可以与对应的命令行参数搭配使用。

ffmpeg编解码部分的功能主要是通过模块AVCodec来完成的,通过libavcodec库进行Encode与Decode *** 作。多媒体编码格式的种类有很多,但是还是有很多通用的基本 *** 作参数设置,下面来详细介绍这些公用的参数。

通过命令ffmpeg --help full可以看到AVCodecContext参数列表信息。该选项下面的所有参数均为编解码可以使用的参数。

ffmpeg还有一些更细化的参数,本节中并未详细提及,可以根据本节中提到的查看方法查看ffmpeg的帮助文件以查看更多的内容,本节中介绍的是重点及常用的通用参数,后续章节中介绍编码 *** 作时,上述参数可以配合对应的例子使用。

ffmpeg工具的主要用途为编码、解码、转码以及媒体格式转换,ffmpeg常用于进行转码 *** 作,使用ffmpeg转码的主要原理如图

通过之前介绍的参数,可以设置转码的相关参数,如果转码 *** 作频涉及封装的改变,则可以通过设置AVCodec与AVFormat的 *** 作参数进行封装与编码的改变,下面示例:

从输出信息中可以看到,以上输出的参数中使用了前面介绍过的参数,具体如下。

在 FFmpeg套件中,除了ffmpeg作为多媒体处理工具之外,还有ffprobe多媒体信息查看工具,ffprobe主要用来查看多媒体文件的信息,下面就来看一下ffprobe中常见的基本命令。

usage: ffprobe [OPTIONS] [INPUT_FILE] the other

ffprobe常用的参数比较多,可以通过ffprobe --help来查看详细的帮助信息。

这些输出的帮助信息既是ffprobe常用的 *** 作参数,也是ffrpobe的基础参数。例如查看log,查看每一个音频数据包信息或者视频数据包信息,查看节目信息,查看流信息,查看每一个流有多少帧以及每一个流有多少个音视频包,查看视频像素点的格式等。下面就来根据以上的输出参数重点列举几个例子。

1)使用下面的命令,查看多媒体数据包信息:

通过show_packets查看的多媒体数据包信息使用PACKET标签括起来,其中包含的信息主要如下:

2)除了以上字段和信息之外,还可以通过如下的组合参数来查看包中的具体数据:

和上面的比起来多了一个data字段,具体如下

[PACKET]

codec_type=video

stream_index=0

pts=379904

pts_time=24733333

dts=379904

dts_time=24733333

duration=512

duration_time=0033333

size=2010

pos=3272564

flags=__

data=

00000000: 0000 07d6 419a cc21 3ffa 5800 0031 9893 A!X1

00000010: d7e7 0641 039b 27c5 e0f8 5175 1abc 0e4f A'QuO

00000020: d710 f401 3224 0093 a2e5 c07e 9c30 0003 2$~0

略过一大段数据

00000770: 1ebe 840a 5ac2 4f9a 614c 5697 8eab fef8 ZOaLV

00000780: 0b59 9647 cc6d 8a4b f8c0 89e8 798e f569 YGmKyI

00000790: 2aca ec22 e1f5 d2e5 31b1 010e 7725 e127 "1w%'

000007a0: c5f4 7051 f07b 8449 649f 3fab 6a3d 3913 pQ{Idj=9

000007b0: d9e4 bdd6 0f22 fa77 2b32 35f5 f4f7 5393 "w+25S

000007c0: 1c9d fe72 1550 ba41 c774 5031 96d5 aef5 rPAtP1

000007d0: f1b9 77a7 ad54 0800 010f wT

[/PACKET]

从输出的内容中可以看到多媒体包中包含的数据,那么我们可以根据上述输出内容中的pos,也就是文件偏移位置来查看,pos的值为3272564,将其转换为十六进制位置为0x31EF74,这就是这个包在flv文件中的偏移量,可以使用Linux下的xxd 1mp4命令进行查看:

0031ef70: 0000 000e 0000 07d6 419a cc21 3ffa 5800 A!X

0031ef80: 0031 9893 d7e7 0641 039b 27c5 e0f8 5175 1A'Qu

0031ef90: 1abc 0e4f d710 f401 3224 0093 a2e5 c07e

0031efa0: 9c30 0003 389a 06b7 f211 fb06 362c 95a9 086,

0031efb0: 0020 8f32 e280 6773 015e 78d2 87a3 e114 2gs^x

0031efc0: f3b3 9d2d ffd7 b202 2233 923f 3d42 bc7f -"3=B

可以看到从0x31EF74开始的数据和上面一致:0000 07d6 419a cc21 3ffa 5800。

通过ffprobe读取packets来进行对应的数据分析,使用show_packets与show_data配合可以进行更加精确的分析。

3)除了packets与data之外,ffprobe还可以分析多媒体的封装格式,其使用FORMAT标签括起来显示:

[FORMAT]

filename=1mp4

nb_streams=2

nb_programs=0

format_name=mov,mp4,m4a,3gp,3g2,mj2

format_long_name=QuickTime / MOV

start_time=0000000

duration=25704000

size=3307949

bit_rate=1029551

probe_score=100

TAG:major_brand=isom

TAG:minor_version=512

TAG:compatible_brands=isomiso2avc1mp41

TAG:encoder=Lavf5533100

[/FORMAT]

下面是对输出信息关键字段的说明:

4)使用下面的命令可以查看视频文件的帧信息,输出的帧信息将使用FRAME标签括起来:

[FRAME]

media_type=video

stream_index=0

key_frame=1

pts=0

pts_time=0000000

pkt_dts=0

pkt_dts_time=0000000

best_effort_timestamp=0

best_effort_timestamp_time=0000000

pkt_duration=512

pkt_duration_time=0033333

pkt_pos=22995

pkt_size=1888

width=720

height=1280

pix_fmt=yuv420p

sample_aspect_ratio=N/A

pict_type=I

coded_picture_number=0

display_picture_number=0

interlaced_frame=0

top_field_first=0

repeat_pict=0

color_range=tv

color_space=bt709

color_primaries=bt709

color_transfer=bt709

chroma_location=left

[/FRAME]

通过-show-frames参数可以查看每一帧的信息,下面就来介绍一下其中重要的信息,

在Windows下常用的Elecard StreamEye工具中打开查看MP4时,会很直观地看到帧类型显示,用ffprobe的pict_type同样可以看到视频的帧是I帧,P帧或者B帧;每一帧的大小同样也可以通过ffprobe的pkt_size查看到。

5)通过-show_streams参数可以查看到多媒体文件中的流信息,流的信息将使用STREAM标签括起来:

[STREAM]

index=0

codec_name=h264

codec_long_name=H264 / AVC / MPEG-4 AVC / MPEG-4 part 10

profile=Main

codec_type=video

codec_tag_string=avc1

codec_tag=0x31637661

width=720

height=1280

coded_width=720

coded_height=1280

closed_captions=0

film_grain=0

has_b_frames=0

sample_aspect_ratio=N/A

display_aspect_ratio=N/A

pix_fmt=yuv420p

level=42

color_range=tv

color_space=bt709

color_transfer=bt709

color_primaries=bt709

chroma_location=left

field_order=progressive

refs=1

is_avc=true

nal_length_size=4

id=0x1

r_frame_rate=30/1

avg_frame_rate=30/1

time_base=1/15360

start_pts=0

start_time=0000000

duration_ts=388608

duration=25300000

bit_rate=964695

max_bit_rate=N/A

bits_per_raw_sample=8

nb_frames=759

nb_read_frames=N/A

nb_read_packets=N/A

extradata_size=39

DISPOSITION:default=1

DISPOSITION:dub=0

DISPOSITION:original=0

DISPOSITION:comment=0

DISPOSITION:lyrics=0

DISPOSITION:karaoke=0

DISPOSITION:forced=0

DISPOSITION:hearing_impaired=0

DISPOSITION:visual_impaired=0

DISPOSITION:clean_effects=0

DISPOSITION:attached_pic=0

DISPOSITION:timed_thumbnails=0

DISPOSITION:captions=0

DISPOSITION:descriptions=0

DISPOSITION:metadata=0

DISPOSITION:dependent=0

DISPOSITION:still_image=0

TAG:language=und

TAG:handler_name=VideoHandler

TAG:vendor_id=[0][0][0][0]

[/STREAM]

如以上输出内容所示,从中可以看到流的信息,具体属性及说明如下表

fprobe 使用前面的参数可以获得key-value格式的显示方式,但是阅读起来因为习惯不同,可能有的人会认为方便,有的人认为不方便;如果要进行格式化的显示,这样就需要用到ffprobe -print_format 或者 ffprobe -of 参数来进行相应的格式输出,而-print_format 支持多种格式输出,包括XML,INI,JSON,CSV,FLAT等。下面列举几种常见的格式输出的例子

<xml version="10" encoding="UTF-8">

<ffprobe>

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '1mp4':

Metadata:

major_brand : isom

minor_version : 512

compatible_brands: isomiso2avc1mp41

encoder : Lavf5533100

Duration: 00:00:2570, start: 0000000, bitrate: 1029 kb/s

Stream #0:0 0x1 : Video: h264 (Main) (avc1 / 0x31637661), yuv420p(tv, bt709, progressive), 720x1280, 964 kb/s, 30 fps, 30 tbr, 15360 tbn (default)

Metadata:

handler_name : VideoHandler

vendor_id : [0][0][0][0]

Stream #0:1 0x2 : Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 72 kb/s (default)

Metadata:

handler_name : SoundHandler

vendor_id : [0][0][0][0]

<streams>

<stream index="0" codec_name="h264" codec_long_name="H264 / AVC / MPEG-4 AVC / MPEG-4 part 10" profile="Main" codec_type="video" codec_tag_string="avc1" codec_tag="0x31637661" width="720" height="1280" coded_width="720" coded_height="1280" closed_captions="0" film_grain="0" has_b_frames="0" pix_fmt="yuv420p" level="42" color_range="tv" color_space="bt709" color_transfer="bt709" color_primaries="bt709" chroma_location="left" field_order="progressive" refs="1" is_avc="true" nal_length_size="4" id="0x1" r_frame_rate="30/1" avg_frame_rate="30/1" time_base="1/15360" start_pts="0" start_time="0000000" duration_ts="388608" duration="25300000" bit_rate="964695" bits_per_raw_sample="8" nb_frames="759" extradata_size="39">

<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" captions="0" descriptions="0" metadata="0" dependent="0" still_image="0"/>

<tag key="language" value="und"/>

<tag key="handler_name" value="VideoHandler"/>

<tag key="vendor_id" value="[0][0][0][0]"/>

</stream>

<stream index="1" codec_name="aac" codec_long_name="AAC (Advanced Audio Coding)" profile="LC" codec_type="audio" codec_tag_string="mp4a" codec_tag="0x6134706d" sample_fmt="fltp" sample_rate="44100" channels="2" channel_layout="stereo" bits_per_sample="0" id="0x2" r_frame_rate="0/0" avg_frame_rate="0/0" time_base="1/44100" start_pts="0" start_time="0000000" duration_ts="1133511" duration="25703197" bit_rate="72863" nb_frames="1107" extradata_size="2">

<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" captions="0" descriptions="0" metadata="0" dependent="0" still_image="0"/>

<tag key="language" value="und"/>

<tag key="handler_name" value="SoundHandler"/>

<tag key="vendor_id" value="[0][0][0][0]"/>

</stream>

</streams>

</ffprobe>

从输出的内容可以看到,输出的内容格式为XML格式,如果原有的业务本身就可以解析XML格式,那么就不需要更改解析引擎,直接将输出内容输出为XML格式即可,解析引擎解析Packet信息是会更方便。

输出INI格式:

输出FLAT格式:

输出JSON格式:

输出CSV格式:

通过各种格式的输出,可以使用对应的绘图方式绘制出可视化图形。

CSV格式输出后可以使用Excel打开表格形式

可以在命令行中自行输出,输出的frame信息全部为视频相关的信息。

使用ffprobe还可以查看很多信息,我们可以通过本节介绍的help方法查看更多更详细的信息

在FFmpeg中通常使用ffplay作为播放器,其实ffplay同样也可作为很多音视频的图形化分析工具,通过ffplay可以看到视频图像的运动估计方向、音频数据的波形等,以下将介绍更多参数并举例说明。

1)ffplay常用参数

ffplay不仅仅是播放器,同时也是测试ffmpeg的codec引擎、format引擎,以及filter引擎的工具,并且还可以进行可视化的媒体参数分析。其可以通过ffplay --help进行查看:

Simple media player

usage: ffplay [options] input_file

Main options:

-L show license

-h topic show help

- topic show help

-help topic show help

--help topic show help

-version show version

-buildconf show build configuration

-formats show available formats

-muxers show available muxers

-demuxers show available demuxers

-devices show available devices

-codecs show available codecs

-decoders show available decoders

-encoders show available encoders

-bsfs show available bit stream filters

-protocols show available protocols

-filters show available filters

-pix_fmts show available pixel formats

-layouts show standard channel layouts

-sample_fmts show available audio sample formats

-dispositions show available stream dispositions

-colors show available color names

-loglevel loglevel set logging level

-v loglevel set logging level

-report generate a report

-max_alloc bytes set maximum size of a single allocated block

-sources device list sources of the input device

-sinks device list sinks of the output device

-x width force displayed width

-y height force displayed height

-s size set frame size (WxH or abbreviation)

-fs force full screen

-an disable audio

-vn disable video

-sn disable subtitling

-ss pos seek to a given position in seconds

-t duration play "duration" seconds of audio/video

-bytes val seek by bytes 0=off 1=on -1=auto

-seek_interval seconds set seek interval for left/right keys, in seconds

-nodisp disable graphical display

-noborder borderless window

-alwaysontop window always on top

-volume volume set startup volume 0=min 100=max

-f fmt force format

-window_title window title set window title

-af filter_graph set audio filters

-showmode mode select show mode (0 = video, 1 = waves, 2 = RDFT)

-i input_file read specified file

-codec decoder_name force decoder

-autorotate automatically rotate video

这只是Main options里面的部分,另外还有Advanced options,AVCodecContext AVOptions等等很多内容。就上述帮助信息的输出所示,有些是前面已经介绍过的参数,这里就不再一一赘述,一些未介绍的参数说明见下表

常见参数可以手动进行尝试,下面列举几个示例。

如果希望从视频的第5秒开始播放,播放5秒钟的文件,则可以使用如下命令

如果希望视频播放时播放器的窗口显示标题为自定义标题,则可以使用如下命令

如果希望使用ffplay打开网络直播流,则可以使用如下命令:

可以看出ffplay可以支持的协议有多种,ramp,rtmp,>

rtsp流在主流浏览器并不支持直接播放。比如大华的视频流:rtsp://admin:123456@

19216810129/cam/realmonitorchannel=1&subtype=0,用vlc可以直接播放。但在浏览器会报ERR_UNKNOWN_URL_SCHEME。那如何在浏览器中播放呢。

以下列出几种方案。

1、安装插件(chrome最新版基本都不支持)

类如:kurento,vlc插件(谷歌浏览器版本41以下),vgx插件(不支持高版本,chrome720版本可用)等。

2、安装软件(中间件,基本都付费)

类如:Appemit(调用vlc插件播放rtsp),可以免安装的,目前只能windows,免费版会有提示。

猿大师中间件(底层调用VLC的ActiveX控件,实现在主流浏览器网页中内嵌播放多路RTSP的实时视频流),中间件收费的。

PluginOK(牛插)中间件。底层调用ActiveX控件VlcOcxdll。(商业用途需付费使用)

3、服务器拉流转发及协议转换

示意图如下所示:

推流--------------服务器转发--------------拉流

方法一览:

a,vlc软件串流到>

一、FFmpeg推RTMP流准备工作

首先确保自已已经安装了nginx + rtmp服务器。

打开配置文件nginxconf

完成如下配置

nginx配置1

如果没有nginx + rtmp服务器,请阅读我的另一篇文章

Mac搭建nginx+rtmp服务器

二、FFmpeg推流

1推流MP4文件

视频文件地址:/Users/xu/Desktop/bangbangbangmp4

推流拉流地址:rtmp://localhost:1935/rtmplive/home

acc:RTMP的音频格式

flv: RTMP的视频格式

ffmpeg -re -i /Users/xu/Desktop/bangbangbangmp4-vcodec libx264 -acodec aac -f flv rtmp://localhost:1935/rtmplive/home

设置推流2

输入命令行后,暂时先不要点回车,等设置好本地拉流后,再进行推流。

2本地拉流MP4文件

打开VLC播放器

VLC3

设置播放地址

设置播放地址4

设置拉流地址

rtmp://localhost:1935/rtmplive/home

拉流地址5

开始推流,点击open后开始播放。

FFmpeg推流成功6

推流成功!

三、用ffmpeg推流桌面以及推流摄像头进行直播

1如果希望将桌面录制或者分享,可以使用命令行如下:

ffmpeg -f avfoundation -i "1" -vcodec libx264 -preset ultrafast -acodec libfaac -f flv rtmp://localhost:1935/rtmplive/home

这个只能够推桌面。

2如果需要桌面+麦克风,比如一般做远程教育分享 命令行如下:

ffmpeg -f avfoundation -i "1:0" -vcodec libx264 -preset ultrafast -acodec libmp3lame -ar 44100 -ac 1 -f flv rtmp://localhost:1935/rtmplive/home

这个可以推桌面+麦克风。

3如果需要桌面+麦克风,并且还要摄像头拍摄到自己,比如一般用于互动主播,游戏主播,命令行如下

ffmpeg -f avfoundation -framerate 30 -i "1:0" \-f avfoundation -framerate 30 -video_size 640x480 -i "0" \-c:v libx264 -preset ultrafast \-filter_complex 'overlay=main_w-overlay_w-10:main_h-overlay_h-10' -acodec libmp3lame -ar 44100 -ac 1 -f flv rtmp://localhost:1935/rtmplive/home

这个可以推桌面+麦克风,并且摄像头把人头放在界面下面

Snip20160713_12png

四、FFmpeg常用基本命令

1分离视频音频流

ffmpeg -i input_file -vcodeccopy-an output_file_video//分离视频流ffmpeg -i input_file -acodeccopy-vn output_file_audio//分离音频流

2视频解复用

ffmpeg–itestmp4 –vcodeccopy–an–fm4vtest264ffmpeg –itestavi –vcodeccopy–an–fm4vtest264

3视频转码

ffmpeg –i testmp4 –vcodec h264 –s352278–an –f m4v test264//转码为码流原始文件ffmpeg –i testmp4 –vcodec h264 –bf0–g25–s352278–an –f m4v test264//转码为码流原始文件

ffmpeg –i testavi -vcodec mpeg4 –vtag xvid –qsame test_xvidavi//转码为封装文件

-bf B帧数目控制

-g 关键帧间隔控制

-s 分辨率控制

4视频封装

ffmpeg –i video_file –i audio_file –vcodeccopy–acodeccopyoutput_file

5视频剪切

ffmpeg –i testavi –r1–f image2 image-%3djpeg//提取ffmpeg -ss0:1:30-t0:0:20-i inputavi -vcodec copy -acodec copy outputavi//剪切视频

-r 提取图像的频率

-ss 开始时间

-t 持续时间

6视频录制

ffmpeg –i rtsp://1921683205:5555/test –vcodec copy outavi

7YUV序列播放

ffplay -f rawvideo -video_size1920x1080 inputyuv

8YUV序列转AVI

ffmpeg–swh–pix_fmtyuv420p–iinputyuv –vcodecmpeg4outputavi

9常用参数说明:

主要参数:

i 设定输入流

f 设定输出格式

ss 开始时间

视频参数:

b 设定视频流量,默认为200Kbit/s-r 设定帧速率,默认为25

s 设定画面的宽与高-aspect 设定画面的比例

vn 不处理视频-vcodec 设定视频编解码器,未设定时则使用与输入流相同的编解码器

音频参数:

ar 设定采样率

ac 设定声音的Channel数

acodec 设定声音编解码器,未设定时则使用与输入流相同的编解码器an 不处理音频

import javaioFile;

import javautilArrayList;

import javautilCalendar;

import javautilList;

public class ConvertVideo {

private final static String PATH = "c:\\ffmpeg\\input\\cmp4";

public static void main(String[] args) {

if (!checkfile(PATH)) {

Systemoutprintln(PATH + " is not file");

return;

}

if (process()) {

Systemoutprintln("ok");

}

}

private static boolean process() {

int type = checkContentType();

boolean status = false;

if (type == 0) {

Systemoutprintln("直接将文件转为flv文件");

status = processFLV(PATH);// 直接将文件转为flv文件

} else if (type == 1) {

String avifilepath = processAVI(type);

if (avifilepath == null)

return false;// avi文件没有得到

status = processFLV(avifilepath);// 将avi转为flv

}

return status;

}

private static int checkContentType() {

String type = PATHsubstring(PATHlastIndexOf("") + 1, PATHlength())

toLowerCase();

// ffmpeg能解析的格式:(asx,asf,mpg,wmv,3gp,mp4,mov,avi,flv等)

if (typeequals("avi")) {

return 0;

} else if (typeequals("mpg")) {

return 0;

} else if (typeequals("wmv")) {

return 0;

} else if (typeequals("3gp")) {

return 0;

} else if (typeequals("mov")) {

return 0;

} else if (typeequals("mp4")) {

return 0;

} else if (typeequals("asf")) {

return 0;

} else if (typeequals("asx")) {

return 0;

} else if (typeequals("flv")) {

return 0;

}

// 对ffmpeg无法解析的文件格式(wmv9,rm,rmvb等),

// 可以先用别的工具(mencoder)转换为avi(ffmpeg能解析的)格式

else if (typeequals("wmv9")) {

return 1;

} else if (typeequals("rm")) {

return 1;

} else if (typeequals("rmvb")) {

return 1;

}

return 9;

}

private static boolean checkfile(String path) {

File file = new File(path);

if (!fileisFile()) {

return false;

}

return true;

}

// 对ffmpeg无法解析的文件格式(wmv9,rm,rmvb等), 可以先用别的工具(mencoder)转换为avi(ffmpeg能解析的)格式

private static String processAVI(int type) {

List<String> commend = new ArrayList<String>();

commendadd("c:\\ffmpeg\\mencoder");

commendadd(PATH);

commendadd("-oac");

commendadd("lavc");

commendadd("-lavcopts");

commendadd("acodec=mp3:abitrate=64");

commendadd("-ovc");

commendadd("xvid");

commendadd("-xvidencopts");

commendadd("bitrate=600");

commendadd("-of");

commendadd("avi");

commendadd("-o");

commendadd("c:\\ffmpeg\\output\\aavi");

try {

ProcessBuilder builder = new ProcessBuilder();

buildercommand(commend);

builderstart();

return "c:\\ffmpeg\\output\\aavi";

} catch (Exception e) {

eprintStackTrace();

return null;

}

}

// ffmpeg能解析的格式:(asx,asf,mpg,wmv,3gp,mp4,mov,avi,flv等)

private static boolean processFLV(String oldfilepath) {

if (!checkfile(PATH)) {

Systemoutprintln(oldfilepath + " is not file");

return false;

}

// 文件命名

Calendar c = CalendargetInstance();

String savename = StringvalueOf(cgetTimeInMillis())+ Mathround(Mathrandom() 100000);

List<String> commend = new ArrayList<String>();

commendadd("c:\\ffmpeg\\ffmpeg");

commendadd("-i");

commendadd(oldfilepath);

commendadd("-ab");

commendadd("56");

commendadd("-ar");

commendadd("22050");

commendadd("-qscale");

commendadd("8");

commendadd("-r");

commendadd("15");

commendadd("-s");

commendadd("600x500");

commendadd("c:\\ffmpeg\\output\\aflv");

try {

Runtime runtime = RuntimegetRuntime();

Process proce = null;

String cmd = "";

String cut = " c:\\ffmpeg\\ffmpegexe -i "

+ oldfilepath

+ " -y -f image2 -ss 8 -t 0001 -s 600x500 c:\\ffmpeg\\output\\"

+ "ajpg";

String cutCmd = cmd + cut;

proce = runtimeexec(cutCmd);

ProcessBuilder builder = new ProcessBuilder(commend);

buildercommand(commend);

builderstart();

return true;

} catch (Exception e) {

eprintStackTrace();

return false;

}

}

}

以上就是关于我想用ffmpeg命令行转换一个视频文件,视、音频编码格式不变,只是将画面旋转90度,请问命令行该如何写全部的内容,包括:我想用ffmpeg命令行转换一个视频文件,视、音频编码格式不变,只是将画面旋转90度,请问命令行该如何写、FFmpeg工具、rtsp流浏览器播放方案等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9658382.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存