FFmpeg

ffmbc转码输出DVCPRO HD

使用ffmbc多线程转码输出DVCPRO HD。分辨率为1440x1080,隔行扫描。

#

将一个双声道音轨复制输出成两个单声道音轨

ffmbc -y -threads 8 -i 海外发行测试源文件0726.mp4  -target dvcprohd -tff -an 海外发行测试源文件0726-out.mxf  -acodec pcm_s24le -ar 48000 -ac 1 -newaudio -acodec pcm_s24le -ar 48000  -newaudio -acodec pcm_s24le  -ar 48000

#

将一个双声道音轨复制拆分成两个左右单声道音轨

...

XDCAM HD422 MXF

分别使用ffmpeg ffmbc 实现 输出XDCAM HD422 MXF文件

ffmpeg #

ffmpeg -i test.mov -pix_fmt yuv422p -vcodec mpeg2video -non_linear_quant 1 -flags +ildct+ilme -top 1 -dc 10 -intra_vlc 1 -qmax 3 -lmin "1*QP2LAMBDA" -vtag xd5c -rc_max_vbv_use 1 -rc_min_vbv_use 1 -g 12 -b:v 50000k -minrate 50000k -maxrate 50000k -bufsize 8000k -acodec pcm_s16le -ar 48000 -bf 2 -ac 2 -f mxf_d10 output.mxf

ffmbc #

ffmbc  -y -threads 8 -i 先导片.mp4 -target xdcamhd422 -tff -acodec pcm_s24le 先导片-out.mov

nginx+rtmp+hls直播推流

源码编译nginx+rtmp+hls,并附带nginx配置文件、推流的方式及播放方法。

nginx #

编译 #

wget http://nginx.org/download/nginx-1.14.0.tar.gz
wget https://github.com/arut/nginx-rtmp-module/archive/v1.2.1.tar.gz
wget http://zlib.net/zlib-1.2.11.tar.gz
wget
#全部解压并编译nginx
./configure --sbin-path=/usr/local/nginx/nginx --conf-path=/usr/local/nginx/nginx.conf --pid-path=/usr/local/nginx/nginx.pid --with-http_ssl_module --with-pcre=/opt/app/openet/oetal1/chenhe/pcre-8.37 --with-zlib=/opt/app/openet/oetal1/chenhe/zlib-1.2.8 --with-openssl=/opt/app/openet/oetal1/chenhe/openssl-1.0.1t --add-module=../nginx-rtmp-module

配置 #

worker_processes  auto;

error_log  logs/error.log debug;

events {
    worker_connections  1024;
}

rtmp {
    server {
        listen 1935;
        chunk_size 4000;

        application myapp {
            live on;
        }

        application hls {
            live on;
            hls on;
            hls_path /data/y/ngnix/hls;
            hls_playlist_length 1d;
            hls_sync 100ms;
            hls_continuous on;
            hls_fragment 8s;
        }
    }
}

http {
    server {
        listen      80;

        location / {
            root html;
        }

        location /stat {
            rtmp_stat all;
            rtmp_stat_stylesheet stat.xsl;
        }

        location /stat.xsl {
            root html;
        }

        location /hls {
            add_header Access-Control-Allow-Origin *;
            add_header Access-Control-Allow-Headers "Origin, X-Requested-With, Content-Type, Accept";
            add_header Access-Control-Allow-Methods "GET, POST, OPTIONS";
            #server hls fragments
            types{
                application/vnd.apple.mpegurl m3u8;
                video/mp2t ts;
            }
            alias /data/y/ngnix/hls;
            expires -1;
        }
    }
}

推流 #

#RTMP方式
/opt/ffmpeg/bin/ffmpeg -re -i "/home/1.mp4" -vcodec libx264 -vprofile baseline -acodec aac -ar 44100 -strict -2 -ac 1 -f flv -s 1280x720 -q 10 rtmp://127.0.0.1:1935/myapp/test1
#HTTP方式
/opt/ffmpeg/bin/ffmpeg -re -i "/home/2.mp4" -vcodec libx264 -vprofile baseline -acodec aac -ar 44100 -strict -2 -ac 1 -f flv -s 1280x720 -q 10 rtmp://127.0.0.1:1935/hls/test2

具体参数可根据自己的需求调整

...

AAC 到 PCM 音频解码

最近遇到在 iOS 平台上实时播放 AAC 音频数据流, 一开始尝试用 AudioQueue 直接解 AAC 未果, 转而将 AAC 解码为 PCM,

最终实…

最近遇到在 iOS 平台上实时播放 AAC 音频数据流, 一开始尝试用 AudioQueue 直接解 AAC 未果, 转而将 AAC 解码为 PCM,

...

ffmbc之转DVCPROHD

ffmbc -i xx.ts -vcodec dvvideo -flags +ildct+ilme -tff -pix_fmt yuv422p -vf scal…

ffmbc -i xx.ts -vcodec dvvideo -flags +ildct+ilme -tff -pix_fmt yuv422p -vf scale=1440:1080:1 -acodec pcm_s16le -ar 48000 -ac 1 -y xx.mxf

ffmoeg多音频合成(混流)使用方法

ffmpeg -i INPUT1 -i INPUT2 -i INPUT3 -filter_complex amix=inputs=3:duration=firs…

ffmpeg -i INPUT1 -i INPUT2 -i INPUT3 -filter_complex amix=inputs=3:duration=first:dropout_transition=3 OUTPUT

它接受下列参数:

inputs

输入数。如果没有指定,默认为2。

duration

如何确定流的结尾。

longest

最长的输入时间。(默认)

shortest

最短的输入时间。

first

第一个输入的时间。

dropout_transition

当输入流结束时,体积重整化的过渡时间(以秒为单位)。默认值是2秒。

ffmpeg 多音轨混合成多声道

使用FFmpeg制作多声道视频

将8个音轨混合成双声道

ffmpeg -i input.mkv -filter_complex "[0:1][0:2][0:3][0:4][0:5][0:6][0:7][0:8] amerge=inputs=8" -c:a pcm_s16le output.mkv

ffmpeg获取display_picture_number对应帧信息

使用方式 #

ffmpeg -i input  -vf "select=eq(n\,15237)",showinfo -an -f null  /dev/null

输出结果 #

15237为display_picture_number

[Parsed_showinfo_1 @ 0x41ca760] n:   0 pts:54860400 pts_time:609.56  pos:427032896 fmt:yuv420p sar:1/1 s:1920x1080 i:T iskey:0 type:B checksum:A2FB0133 plane_checksum:[7E1FA1A9 3D005549 67BC0A32] mean:[92 127 134] stdev:[62.5 9.2 20.7]

参数解释 #

### showinfo ### 不改变输入而在行中显示每帧信息。
显示的信息以`key/value`的序列形式给出
下面是将显示在输出中的值:

- n
帧序数,从0开始计数

- pts
输入帧的时间戳,以时基为单位,时间依赖于输入

- pts_time
按秒计的时间戳

- pos
输入帧在输入流中的偏移定位,-1表示信息不可用和/或无意义(例如合成视频中)

- fmt
像素格式名

- sar
输入帧的宽高比,表示为`num/den`格式

- s
输入帧尺寸,语法同于[视频尺寸(分辨率)](ffmpeg-doc-cn-07.md#视频尺寸(分辨率))

- i
交错模式 ("P"对应 "逐行", "T" 对应上场优先, "B"为下场优先t)

- iskey
为1表示是关键帧,0则不是

- type
输入帧图片类型 ("I"对应I帧, "P" 对应P帧, "B" 对应B帧,或者 "?"对应未知类型).参考定义与`libavutil/avutil.h`中的`av_get_picture_type_char`函数和`

- checksum
输入帧所有信息内容的 Adler-32校验值 (以16进制输出)

- plane_checksum
输入帧所有信息内容的 Adler-32校验值 (以16进制输出), 以格式"[c0 c1 c2 c3]"显示

ffmpeg音频合成命令全集

等有时间了再将其翻译一下,源网址->传送门

stereo → mono stream

Mix a single stereo

stream down to …

等有时间了再将其翻译一下,源网址->传送门

stereo → mono stream #

![stereo to mono diagram](https://trac.ffmpeg.org/raw-
attachment/wiki/AudioChannelManipulation/stereo_mono.png)Mix a single stereo

...

ffmpeg逐行扫描转隔行扫描

命令参数 #

ffmpeg -i input -aspect 16:9 -c:v mpeg2video -b:v 4000k -minrate 4000k -maxrate 4000k -bufsize 2000k -dc 9 -flags +ilme+ildct -alternate_scan 1 -top 0 output

其实主要的就是如下参数:

-flags +ilme+ildct -alternate_scan 1 -top 0

alternate_scan使用隔行转码,top不一般没有什么要求的话頂场优先就可以了。

...