打开微信,使用扫一扫进入页面后,点击右上角菜单,
点击“发送给朋友”或“分享到朋友圈”完成分享
init_dynload():如果是win32,则加载动态库
register_exit(ffmpeg_cleanup):对filtergraph(每个filtergraph对应的inputs、outputs)、outputfile、outputstream、inputfile、inputstream等进行一系列的free
setvbuf(stderr,NULL,_IONBF,0):win32运行时所需
av_log_set_flags(AV_LOG_SKIP_REPEATED):设置flags=AV_LOG_SKIP_REPEATED(即为1)
parse_loglevel(argc, argv, options):检测命令行是否设置loglevel,并进行一系列参数的设置、初始化
avdevice_register_all():注册所有编码器和解码器
avformat_network_init():网络功能的初始化,根据不同平台(win需要初始化winsock)和不同编译选择(GNU和openssl)进行不同的初始化
show_banner(argc, argv, options):打印编译选项、copyright、编译时间、类库信息等
ffmpeg_parse_options(argc, argv):解析命令行中全部输入选项。调用两次open_file来打开输入文件和输出文件
transcode():转码
exit_program(received_nb_signals ? 255 : main_return_code):退出和清理程序
①show_banner(argc, argv, options)
功能:该函数的功能主要为打印版本、版权、调用库、编译时间,具体执行页面在终端中为
②ffmpeg_parse_options(argc, argv)
功能:该函数功能为解析命令行中全部输入选项,并打开输入输出文件
函数解析图如下:
简要说明:
a.在该函数中调用了两次open_file,分别用于打开输入文件和输出文件,实现方式为调用open_input_file和open_output_file
b.打开输入文件open_input_file时调用了av_find_input_format和avformat_alloc_context,对输入数据流像素格式进行初始化,随后对AVOption进行设置(av_dict_set、av_dict_set_init),而后寻找编解码器并进行解码器的初始化
c.打开输出文件open_output_file,该函数首先调用avformat_alloc_output_context2()初始化AVFormatContext结构体,而后根据媒体类型的不同,分别调用new_video_stream(),new_audio_stream(),new_sub _stream()等创建不同的AVStream
③transcode()
功能:该函数实现转码
函数解析图如下:
简要说明:
a.函数check_keyboard_interaction,根据源代码注释得知其功能为检索键盘输入,当输入Q时,终止转码并退出
b.transcode_init函数中有一个dump模块,用于打印stream信息
c.print_report主要实现打印转码执行信息的功能
热门帖子
精华帖子