API调用版:
用ffmpeg向H264中添加SEI自定义信息
http://bbs.chinaffmpeg.com/forum ... d=590&fromuid=3
(出处: ChinaFFmpeg)
在ffmpeg中设置SEI自定义信息是通过bsf来操作的,类似于mp4toannexb这样的bitstream filter;
在最新版本的ffmpeg中是可以看到已经添加了相关的滤镜:
[AppleScript] 纯文本查看 复制代码 bogon:xxx StevenLiu$ ./ffmpeg -bsfs
ffmpeg version bbs.chinaffmpeg.com孙悟空专用版 2018 the FFmpeg developers
built with Apple LLVM version 9.1.0 (clang-902.0.39.2)
configuration: --enable-libass --enable-opengl --enable-libx264 --enable-libmp3lame --enable-gpl --enable-nonfree --prefix=/usr/local --enable-libtesseract --enable-libspeex --enable-libfreetype --enable-libfontconfig --enable-libfdk-aac --enable-videotoolbox --enable-libxml2
libavutil 56. 19.100 / 56. 19.100
libavcodec 58. 22.101 / 58. 22.101
libavformat 58. 17.101 / 58. 17.101
libavdevice 58. 4.101 / 58. 4.101
libavfilter 7. 26.100 / 7. 26.100
libswscale 5. 2.100 / 5. 2.100
libswresample 3. 2.100 / 3. 2.100
libpostproc 55. 2.100 / 55. 2.100
Bitstream filters:
aac_adtstoasc
chomp
dump_extra
dca_core
eac3_core
extract_extradata
filter_units
h264_metadata
h264_mp4toannexb
h264_redundant_pps
hapqa_extract
hevc_metadata
hevc_mp4toannexb
imxdump
mjpeg2jpeg
mjpegadump
mp3decomp
mpeg2_metadata
mpeg4_unpack_bframes
mov2textsub
noise
null
remove_extra
text2movsub
trace_headers
vp9_metadata
vp9_raw_reorder
vp9_superframe
vp9_superframe_split
可以看到,多了很多bsf滤镜,其中h264_metadata就是对h264的metadata进行操作的,下面看一下对应的帮助:
[AppleScript] 纯文本查看 复制代码 bogon:xxx StevenLiu$ ./ffmpeg -h bsf=h264_metadata
ffmpeg version bbs.chinaffmpeg.com孙悟空专用版 Copyright (c) 2000-2018 the FFmpeg developers
built with Apple LLVM version 9.1.0 (clang-902.0.39.2)
configuration: --enable-libass --enable-opengl --enable-libx264 --enable-libmp3lame --enable-gpl --enable-nonfree --prefix=/usr/local --enable-libtesseract --enable-libspeex --enable-libfreetype --enable-libfontconfig --enable-libfdk-aac --enable-videotoolbox --enable-libxml2
libavutil 56. 19.100 / 56. 19.100
libavcodec 58. 22.101 / 58. 22.101
libavformat 58. 17.101 / 58. 17.101
libavdevice 58. 4.101 / 58. 4.101
libavfilter 7. 26.100 / 7. 26.100
libswscale 5. 2.100 / 5. 2.100
libswresample 3. 2.100 / 3. 2.100
libpostproc 55. 2.100 / 55. 2.100
Bit stream filter h264_metadata
Supported codecs: h264
h264_metadata_bsf AVOptions:
-aud <int> ...V....B Access Unit Delimiter NAL units (from 0 to 2) (default pass)
pass ...V....B
insert ...V....B
remove ...V....B
-sample_aspect_ratio <rational> ...V....B Set sample aspect ratio (table E-1) (from 0 to 65535) (default 0/1)
-video_format <int> ...V....B Set video format (table E-2) (from -1 to 7) (default -1)
-video_full_range_flag <int> ...V....B Set video full range flag (from -1 to 1) (default -1)
-colour_primaries <int> ...V....B Set colour primaries (table E-3) (from -1 to 255) (default -1)
-transfer_characteristics <int> ...V....B Set transfer characteristics (table E-4) (from -1 to 255) (default -1)
-matrix_coefficients <int> ...V....B Set matrix coefficients (table E-5) (from -1 to 255) (default -1)
-chroma_sample_loc_type <int> ...V....B Set chroma sample location type (figure E-1) (from -1 to 6) (default -1)
-tick_rate <rational> ...V....B Set VUI tick rate (num_units_in_tick / time_scale) (from 0 to UINT32_MAX) (default 0/1)
-fixed_frame_rate_flag <int> ...V....B Set VUI fixed frame rate flag (from -1 to 1) (default -1)
-crop_left <int> ...V....B Set left border crop offset (from -1 to 16880) (default -1)
-crop_right <int> ...V....B Set right border crop offset (from -1 to 16880) (default -1)
-crop_top <int> ...V....B Set top border crop offset (from -1 to 16880) (default -1)
-crop_bottom <int> ...V....B Set bottom border crop offset (from -1 to 16880) (default -1)
-sei_user_data <string> ...V....B Insert SEI user data (UUID+string)
-delete_filler <int> ...V....B Delete all filler (both NAL and SEI) (from 0 to 1) (default 0)
-display_orientation <int> ...V....B Display orientation SEI (from 0 to 3) (default pass)
pass ...V....B
insert ...V....B
remove ...V....B
extract ...V....B
-rotate <double> ...V....B Set rotation in display orientation SEI (anticlockwise angle in degrees) (from -360 to 360) (default nan)
-flip <flags> ...V....B Set flip in display orientation SEI (default 0)
horizontal ...V....B Set hor_flip
vertical ...V....B Set ver_flip
如果要添加自定义信息的话,可以用sei_user_data
下面举个例子:
[AppleScript] 纯文本查看 复制代码 bogon:xxx StevenLiu$ ./ffmpeg -i ~/Movies/objectC/facebook.mp4 -c copy -bsf:v h264_metadata=sei_user_data=086f3693-b7b3-4f2c-9653-21492feee5b8+hello -an -t 2 -y a.h264
ffmpeg version N-91602-g03fc3a68e7 Copyright (c) 2000-2018 the FFmpeg developers
built with Apple LLVM version 9.1.0 (clang-902.0.39.2)
configuration: --enable-libass --enable-opengl --enable-libx264 --enable-libmp3lame --enable-gpl --enable-nonfree --prefix=/usr/local --enable-libtesseract --enable-libspeex --enable-libfreetype --enable-libfontconfig --enable-libfdk-aac --enable-videotoolbox --enable-libxml2
libavutil 56. 19.100 / 56. 19.100
libavcodec 58. 22.101 / 58. 22.101
libavformat 58. 17.101 / 58. 17.101
libavdevice 58. 4.101 / 58. 4.101
libavfilter 7. 26.100 / 7. 26.100
libswscale 5. 2.100 / 5. 2.100
libswresample 3. 2.100 / 3. 2.100
libpostproc 55. 2.100 / 55. 2.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/Users/StevenLiu/Movies/objectC/facebook.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
encoder : Lavf55.22.102
description : This File is Created by Easy RealMedia Tools@!
Duration: 02:00:27.85, start: 0.000000, bitrate: 893 kb/s
Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 640x480, 797 kb/s, 25 fps, 25 tbr, 12800 tbn, 50 tbc (default)
Metadata:
handler_name : VideoHandler
Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 87 kb/s (default)
Metadata:
handler_name : SoundHandler
Output #0, h264, to 'a.h264':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
description : This File is Created by Easy RealMedia Tools@!
encoder : Lavf58.17.101
Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 640x480, q=2-31, 797 kb/s, 25 fps, 25 tbr, 25 tbn, 25 tbc (default)
Metadata:
handler_name : VideoHandler
Stream mapping:
Stream #0:0 -> #0:0 (copy)
Press [q] to stop, [?] for help
frame= 52 fps=0.0 q=-1.0 Lsize= 210kB time=00:00:02.00 bitrate= 859.6kbits/s speed= 100x
video:210kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.000000%
执行完成后,会生成一个a.h264,那么就看一下a.h264里面相关的信息:
|