大佬教程收集整理的这篇文章主要介绍了node.js – 使用FFMPEG在浏览器中编码静态文件的交叉设备编码(分段h264?),大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
'-y','-ss 0','-b 800k','-vcodec libx264','-acodec mp3'\ '-ab 128','-ar 44100','-bufsize 62000','-maxrate 620k'\ MetaDuration,tDuration,'-f flv@H_607_6@我的HLS尝试 – >主要问题(未在浏览器中运行): @H_607_6@
'-r 15','-b:v 128k','-c:v libx264','-x264opts level=41'\ '-threads 4','-s 640x480','-map 0:v','-map 0:a:0','-c:a mp3'\ '-b:a 160000','-ac 2','-f hls','-hls_time 10','-hls_list_size 6'\ '-hls_wrap 18','-start_number 1'@H_607_6@我的MP4尝试 – >主要问题(持续时间缩短,视频后期加速) @H_607_6@
'-y','-acodec mp3'\ '-ab 128','-maxrate 620k'\ MetaDuration,'-f mp4','-movflags','frag_keyframe+empty_moov'@H_607_6@第二次MP4尝试: – >主要问题(持续时间缩短,'-pix_fmt yuv420p','-b 1200k','-flags +loop+mv4'\ '-cmp 256','-partitions +parti4x4+parti8x8+partp4x4+partp8x8+partb8x8'\ '-me_method hex','-subq 7','-trellis 1','-refs 5','-bf 3','-coder 1'\ '-me_range 16','-g 150','-keyint_min 25','-sc_threshold 40'\ '-i_qfactor 0.71','-acodec mp3','-qmin 10','-qdiff 4','-qmax 51'\ '-ab 128k','-threads 2','frag_keyframe+empty_moov']) @H_607_6@以下是使用这些设置运行的FFMPEG日志的示例: @H_607_6@
file conversion error ffmpeg version N-52458-gaa96439 Copyright (C) 2000-2013 the FFmpeg developers built on Apr 24 2013 22:19:32 with gcc 4.8.0 (GCC) configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-avisynth --enable-bzlib --enable-fontconfig --e nable-frei0r --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libcaca --enable-libfreetype --enable -libgsm --enable-libilbc --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --ena ble-libopus --enable-librtmp --enable-libschroedinger --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwola me --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxavs --enabl e-libxvid --enable-zlib libavutil 52. 27.101 / 52. 27.101 libavcodec 55. 6.100 / 55. 6.100 libavformat 55. 3.100 / 55. 3.100 libavdevice 55. 0.100 / 55. 0.100 libavfilter 3. 60.101 / 3. 60.101 libswscale 2. 2.100 / 2. 2.100 libswresample 0. 17.102 / 0. 17.102 libpostproc 52. 3.100 / 52. 3.100 [avi @ 02427900] non-interleaved AVI Guessed ChAnnel Layout for Input Stream #0.1 : mono Input #0,avi,from 'C:/temp/the avengers.avi': Duration: 00:00:34.00,start: 0.000000,bitrate: 1433 kb/s Stream #0:0: Video: cinepak (cvid / 0x64697663),rgb24,320x240,15 tbr,15 tbn,15 tbc Stream #0:1: Audio: pcm_u8 ([1][0][0][0] / 0x0001),22050 Hz,mono,u8,176 kb/s Please use -b:a or -b:v,-b is ambiguous [libx264 @ 02527c60] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX [libx264 @ 02527c60] profile High,level 2.0 [libx264 @ 02527c60] 264 - core 130 r2274 c832fe9 - H.264/MPEG-4 AVC codec - Copyleft 2003-2013 - http://www.videolan.org/x26 4.html - options: caBAC=1 ref=5 deblock=1:0:0 analyse=0x3:0x133 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=2 lookahead_threads=1 sliced_th reads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 consTrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 we ightb=1 open_gop=0 weightp=2 keyint=150 keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=abr mbtree=1 bitrate=120 0 ratetol=1.0 qcomp=0.60 qpmin=10 qpmax=51 qpstep=4 ip_ratio=1.41 aq=1:1.00 Output #0,mp4,to 'pipe:1': Metadata: encoder : Lavf55.3.100 Stream #0:0: Video: h264 ([33][0][0][0] / 0x0021),yuv420p,q=10-51,1200 kb/s,15360 tbn,15 tbc Stream #0:1: Audio: mp3 (i[0][0][0] / 0x0069),44100 Hz,s16p,128 kb/s Stream mapping: Stream #0:0 -> #0:0 (cinepak -> libx264) Stream #0:1 -> #0:1 (pcm_u8 -> libmp3lamE) Press [q] to stop,[?] for Help frame= 106 fps=0.0 q=10.0 size= 1kB time=00:00:06.94 bitrate= 1.4kbits/s frame= 150 fps=149 q=14.0 size= 1kB time=00:00:09.87 bitrate= 1.0kbits/s frame= 191 fps=126 q=16.0 size= 1kB time=00:00:12.61 bitrate= 0.8kbits/s frame= 244 fps=121 q=16.0 size= 2262kB time=00:00:16.14 bitrate=1147.6kbits/s frame= 303 fps=120 q=14.0 size= 2262kB time=00:00:20.08 bitrate= 922.2kbits/s frame= 354 fps=117 q=15.0 size= 3035kB time=00:00:23.48 bitrate=1058.6kbits/s frame= 402 fps=113 q=15.0 size= 3035kB time=00:00:26.67 bitrate= 932.1kbits/s frame= 459 fps=113 q=16.0 size= 4041kB time=00:00:30.43 bitrate=1087.7kbits/s frame= 510 fps=103 q=2686559.0 Lsize= 5755kB time=00:00:33.93 bitrate=1389.3kbits/s video:5211kB audio:531kB subtitle:0 global headers:0kB muxing overhead 0.235111% [libx264 @ 02527c60] frame I:6 Avg QP:10.55 size: 25921 [libx264 @ 02527c60] frame P:245 Avg QP:12.15 size: 14543 [libx264 @ 02527c60] frame B:259 Avg QP:15.55 size: 6242 [libx264 @ 02527c60] consecutive B-frames: 6.1% 73.7% 14.7% 5.5% [libx264 @ 02527c60] mb I I16..4: 19.9% 6.2% 73.9% [libx264 @ 02527c60] mb P I16..4: 6.0% 0.2% 12.0% P16..4: 35.4% 9.6% 16.3% 7.0% 5.6% skip: 7.8% [libx264 @ 02527c60] mb B I16..4: 0.7% 0.0% 4.3% B16..8: 27.6% 17.2% 17.0% direct:17.3% skip:15.9% L0:39.4% L1:43.2% BI:17.4% [libx264 @ 02527c60] final ratefactor: 11.41 [libx264 @ 02527c60] 8x8 transform intra:1.6% inter:4.0% [libx264 @ 02527c60] coded y,uvDC,uvAc intra: 93.0% 97.0% 94.9% inter: 58.4% 58.7% 50.6% [libx264 @ 02527c60] i16 v,h,dc,p: 15% 26% 54% 5% [libx264 @ 02527c60] i8 v,ddl,ddr,vr,hd,vl,hu: 16% 17% 39% 4% 4% 3% 1% 6% 9% [libx264 @ 02527c60] i4 v,hu: 28% 34% 21% 4% 2% 2% 2% 2% 5% [libx264 @ 02527c60] i8c dc,v,p: 51% 24% 19% 6% [libx264 @ 02527c60] Weighted P-Frames: Y:4.1% UV:1.2% [libx264 @ 02527c60] ref P L0: 68.2% 9.8% 11.0% 5.6% 4.6% 0.8% 0.0% [libx264 @ 02527c60] ref B L0: 87.7% 8.0% 3.9% 0.4% [libx264 @ 02527c60] ref B L1: 97.8% 2.2% [libx264 @ 02527c60] kb/s:1255.36@H_607_6@最后这是我的节点代码启动FFMPEG. (我使用模块Fluent-ffmpeg:https://github.com/schaermu/node-fluent-ffmpeg) @H_607_6@
var proc = new ffmpeg({ source: movie,nolog: true,timeout:15000}) .addoptions(['-r 15','-x264opts level=41','-threads 4','-c:a mp3','-b:a 160000','-hls_list_size 6','-hls_wrap 18','-start_number 1 stream.m3u8']) .writeToStream(res,function(retcode,error){ if (!error){ console.log('file has been converted succesfully',retcode .green); }else{ console.log('file conversion error',error .red); } });@H_607_6@因此,总结这个非常长且代码重的问题: @H_607_6@我希望这不会作为一个懒惰的请求,但有人可以向我展示/解释哪些FFMPEG设置可以/应该在所有平台(现代浏览器,Android和iOS)上工作,产生一个静态文件流,我可以发送到一个HTML5播放器. @H_607_6@[编辑]如果没有通用选项我需要什么 @H_607_6@如果这是不可能的,因为一些帖子可能会建议,我希望看到一组FFMPEG设置,就mp4流媒体而言,可以正常完成工作. (例如编码可流式传输的mp4). @H_607_6@流式mp4需要以下内容 @H_607_6@ @H_607_6@非常感谢您的帮助!
ffmpeg -i ~/DropBox/Test\ Content/bigbuckbunny/bigbuckbunny_1500.mp4 -vcodec libx264 -profile:v main -b:v 512k -s 1280x720 -r:v 30 -acodec libfdk_aac -b:a 128k -movflags faststart -y movie1.mp4@H_607_6@iPhone 3gs不支持主配置文件,其最大支持分辨率为640×480.此命令将对此旧设备进行编码. @H_607_6@
ffmpeg -i ~/DropBox/Test\ Content/bigbuckbunny/bigbuckbunny_1500.mp4 -vcodec libx264 -profile:v baseline -b:v 512k -s 640x432 -r:v 30 -acodec libfdk_aac -b:a 128k -movflags faststart -y movie2.mp4@H_607_6@我编写了一些示例文件并在此处创建了一个网页:
<!DOCTYPE html> <html> <body> <br>ffmpeg -i ~/DropBox/Test\ Content/bigbuckbunny/bigbuckbunny_1500.mp4 -vcodec libx264 -profile:v main -b:v 512k -s 1280x720 -r:v 30 -acodec libfdk_aac -b:a 128k -movflags faststart -y movie1.mp4<br> <video controls> <source src="movie1.mp4" type="video/mp4"> Your browser does not support the video tag. </video> <br>ffmpeg -i ~/DropBox/Test\ Content/bigbuckbunny/bigbuckbunny_1500.mp4 -vcodec libx264 -profile:v baseline -b:v 512k -s 640x432 -r:v 30 -acodec libfdk_aac -b:a 128k -movflags faststart -y movie2.mp4<br> <video controls> <source src="movie2.mp4" type="video/mp4"> Your browser does not support the video tag. </video> </body> </html>@H_607_6@这里的命令分解为每个元素的含义: @H_607_6@命令输入文件(应该是显而易见的): @H_607_6@
ffmpeg -i ~/DropBox/Test\ Content/bigbuckbunny/bigbuckbunny_1500.mp4@H_607_6@使用libx264对视频进行编码: @H_607_6@
-vcodec libx264@H_607_6@将h.264配置文件设置为main.基线将允许在较旧的设备上播放,但你会牺牲一点质量: @H_607_6@
-profile:v main@H_607_6@将比特率设置为每秒512千比特.根据可用带宽选择一个值. LAN / WiFi更高,3G / LTE更低 @H_607_6@
-b:v 512k@H_607_6@将视频缩放到720p分辨率(再次取决于目标平台) @H_607_6@
-s 1280x720@H_607_6@以每秒30帧的速度编码: @H_607_6@
-r:v 30@H_607_6@使用libfdk_aac对音频进行编码.或者如果你想要mp3,请使用libmp3lame.强烈推荐AAC.它在ios上有更好的支持,可以产生更高质量的音频: @H_607_6@
-acodec libfdk_aac@H_607_6@将音频比特率设置为每秒128千比特.您也可以根据带宽调整此值.使用AAC,你可能会低至32k @H_607_6@
-b:a 128k@H_607_6@将音频采样率设置为每秒48000个样本.如果使用mp3,请为ios执行44100 @H_607_6@
-r:a 48000@H_607_6@这告诉ffmpeg将moov原子放在mp4文件的开头. @H_607_6@
-movflags faststart@H_607_6@输出文件(-y告诉ffmpeg它可以覆盖文件而不询问) @H_607_6@
-y movie1.mp4
以上是大佬教程为你收集整理的node.js – 使用FFMPEG在浏览器中编码静态文件的交叉设备编码(分段h264?)全部内容,希望文章能够帮你解决node.js – 使用FFMPEG在浏览器中编码静态文件的交叉设备编码(分段h264?)所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。