Android多媒体技术(二)浅析Camera视频实时采集中涉及的参数配置
浅析Camera视频实时采集中涉及的参数配置
作者: | 蒋东国 |
时间: | 2017年1月20日 星期五 |
应用来源: | mpu |
博客地址: | http://blog.csdn.net/andrexpert/article/details/54631629 |
1.录制视频
(1)帧率(frame rate):在1秒钟时间里传输的图片数量,也可以理解为图形处理器每秒钟能够刷新几次,一般NTSC①是30,PAL②是25,单位FPS 或Hz。它影响画面流畅度,与画面流畅度成正比:帧率越大,画面越流畅;帧率越小,画面越有跳动感。如果码率为变量,则帧率也会影响体积,帧率越高,每秒钟经过的画面越多,需要的码率也越高,体积也越大。
(2)关键帧(key frame):任何动画要表现运动或变化,至少前后要给出两个不同的关键状态,而中间状态的变化和衔接电脑可以自动完成,即表示关键状态的帧叫做关键帧。
(3)过渡帧(interim frame):在两个关键帧之间,电脑自动完成过渡画面的帧叫做过渡帧。
(4)码率(bit rate):视频中比特率又被称为码率,是指码率就是数据传输时单位时间传送的数据位数,单位是kbps即千位每秒(=1000*1bps)。它可以表示经过编码(压缩)后的音、视频数据每秒钟需要用多少个比特来表示,比特率越高,传输数据就越大,音、视频的质量就越好,但编码后的文件就越大。常见的视频码率使用场景:
* 16kbps:可视电话质量
* 128-384kbps:视频会议系统质量
* 1.25Mbps:VCD质量(使用MPEG1压缩)
* 5Mbps:DVD质量(使用MPEG2压缩)
* 8-15Mbps:高清晰度电视(HDTV) 质量(使用H.264压缩)
* 29.4 Mbps:HD DVD质量
* 40Mbps:蓝光光碟质量(使用MPEG2、H.264或VC-1压缩)
注意:码率的单位换算与网速的单位换算区别
1000 bit/s = 1 kbit/s (一千位每秒) 1024B/s = 1KB/s
1000 kbit/s = 1 Mbit/s (一兆或一百万位每秒) 1024KB/s = 1MB/s
1000 Mbit/s = 1 Gbit/s (一吉比特或十亿位每秒) 1024MB/s = 1GB/s
(5)清晰度(sharpness):指影像上各细部影纹及其边界的清晰程度。在码率一定的情况下,分辨率与清晰度成反比关系:分辨率越高,图像越不清晰,分辨率越低,图像越清晰。在分辨率一定的情况下,码率与清晰度成正比关系,码率越高,图像越清晰;码率越低,图像越不清晰。
(6)分辨率(resolution ratio):就是屏幕图像的精密度,显示器所能显示的像素的多少。可以把整个图像想象成是一个大型的棋盘,而分辨率的表示方式就是所有经线和纬线交叉点的数目。以分辨率为1024×768的屏幕来说,(即每一条水平线上包含有1024个像素点,共有768条线,总像素1024x768个),即扫描列数为1024列,行数为768行。分辨率影响图像大小,与图像大小成正比:分辨率越高,图像越大;分辨率越低,图像越小。
实例演示:使用MediaCodec将Camera采集图像编码为MP4格式视频
/***@decrible 视频录像,使用MediaRecorder** Create by jiangdongguo on 2017-1-6 上午9:27:47*/
public class VideoRecordRunnable implements Runnable {private static final String filePath = Environment.getExternalStorageDirectory().getAbsolutePath()+ File.separator+ System.currentTimeMillis() + ".mp4";private MediaRecorder mMediaRecorder;private Camera mCamera;private SurfaceHolder mHolder;public VideoRecordRunnable(Camera mCamera,SurfaceHolder mHolder) {this.mCamera = mCamera;this.mHolder = mHolder;}private void initMediaRecorder() {if(mMediaRecorder == null){mMediaRecorder = new MediaRecorder();}else{mMediaRecorder.reset();}//需要调unlock,否则会报异常mCamera.unlock();mMediaRecorder.setCamera(mCamera);mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);mMediaRecorder.setAudioSource(MediaRecorder.AudioSource.CAMCORDER);CamcorderProfile profile = CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH);mMediaRecorder.setProfile(profile);mMediaRecorder.setOutputFile(filePath);mMediaRecorder.setPreviewDisplay(mHolder.getSurface());}@Overridepublic void run() {initMediaRecorder();// 使配置生效try {mMediaRecorder.prepare();mMediaRecorder.start();} catch (IllegalStateException e) {e.printStackTrace();stopMediaRecord();} catch (IOException e) {e.printStackTrace();stopMediaRecord();}}private void stopMediaRecord(){if(mMediaRecorder != null){mMediaRecorder.stop();mMediaRecorder.release();mMediaRecorder = null;}}
}
2.录制音频
(1)音频源(audio source):即音频数据来源,定义在MediaRecorder.AudioSource中。MIC表示音频源为麦克风,VOICE_COMMUNICATION表示音频源为蓝牙耳机。
(2)采样率(sampling rate):采样率定义了每秒从连续信号中提取并组成离散信号的采样个数,它用赫兹(Hz)来表示。针对于音频而言,采样率则为计算机每秒钟采集声音样本的数量,数量越大声音质量就越好,体积随之也会增大。常见的有8000HZ、22050HZ、44100HZ、16000HZ、96000Hz等,它们分别适用于电话、无线电广播、MP3/VCD、音频CD/VCD/MP3、HD-DVD/BD-ROM,其中最常用的就是44100HZ。
(3)声道(audio channel):由于音频的采集和播放是可以叠加的,因此,可以同时从多个音频源采集声音,并分别输出到不同的扬声器,故声道数一般表示声音录制时的音源数量或回放时相应的扬声器数量。单声道(Mono)和双声道(Stereo)比较常见,顾名思义,前者的声道数为1,后者为2。双声道(Stero)的是立体的,不同的声音从左右两个音箱/耳机传出来合成在一起,有剧场感,效果逼真,对设备要求高。单声道(Mono)就是混合在一起的声音平均分配到两个耳机里,立体感差,没层次,普通设备就可以听
(4)采样位数/量化精度(audio format):每一个红色的采样点,都需要用一个数值来表示大小,
这个数值的数据类型大小可以是:4bit、8bit、16bit、32bit等等,位数越多,表示得就越精细,声音质量自然就越好,当然,数据量也会成倍增大。声音的采样位数就相当于画面的颜色数,表示每个取样的数据量,当然数据量越大,回放的声音越准确,不过受人的器官的机能限制,16位的声音已经是普通人类的极限了,更高位数就只能靠仪器才能分辨出来。AudioFormat .ENCODING_PCM_16BIT表示一个采样点PCM数据占16位b(最多设备支持)、AudioFormat. ENCODING_PCM_8BIT表示一个采样点PCM数据占8位(部分设备支持)。
(5)比特率(bit rate):比特率是指每秒传送的比特(bit)数,单位为 bps(Bit Per Second),比特率越高,传送的数据量越大,音质就越好。比如比特率为56kbps的通话语音,它每秒传输的数据量约为56000/8/1024 = 6KB;而比特率为1146 kbps的CD音频,它每秒传输的数据量约为1146000/8/1024 = 139KB。由此可知,比特率高的CD音频质量单位每秒传输的数据量远远大于通话音频,因此CD音频的质量优于通话语音。常见比特率应用场景:
* 800bps:能够分辨的语音所需最低码率
* 8kbps:电话质量(使用语音编码)
* 96kbps:FM质量
* 192 kbps:优良质量
* 224-500kps:高质量(有损音频模式),常用于MPEG1 Player1/2/3
* 500 kbps-1.4 Mbps:44.1KHz的无损音频,解码器为FLAC Audio,WavPack或Monkey's Audio
* 1.4Mbps-2.8Mbps:脉冲编码调制(PCM)声音格式CD光碟的数字音频
注意:1kbps = 1000bps,1Mbps=1000kbps要区别于1KB = 1024B
(6)音频采样率、比特率、采样位数、声道计算关系
比特率 =采样率 x 采用位数 x声道数
音频大小 = 比特率 x 时间(s)
比特率 = 音频文件大小 / 时间
比如,录制60分钟每秒44100次采样、双声道、每秒13位取样的音频数据到CD和60
分钟每秒8000次采样、单声道、每秒7位取样的通话语音,它们的比特率和大小应该是多少?
CD:比特率= 44100*2*13 =1146600 bps,即每秒的数据量约1146600/8(B)/1024 = 139KB
大小 = 139(KB/s) * (60 * 60)s = 499712KB = 488MB
通话:比特率=8000*1*7=56000bps,即每秒的数据量约为56000/8/1024 = 6KB
大小 = 6KB/s * (60 * 60)s = 21600 KB =21MB
实例演示:使用AudioRecord、AudioTrack实现边录边播
/*** @decrible 使用AudioRecord、AudioTrack实现边录边播* * Create by jiangdongguo on 2017-1-6 上午9:21:16*/
public class AudioPlayingRunnable implements Runnable {private static final String TAG = "AudioPlayingThread";/**流类型,其他的还有铃声、通知等*/private static final int streamType = AudioManager.STREAM_MUSIC;/**模式,分为静态缓存和流两种*/private static final int mode = AudioTrack.MODE_STREAM;/**采样率*/private static final int sampleRateInHz = 41400; /**单声道输入、输出,立体声为STEREO*/private static final int channelInConfiguration = AudioFormat.CHANNEL_IN_MONO; private static final int channelOutConfiguration = AudioFormat.CHANNEL_OUT_MONO; /**采样位数16bit*/private static final int audioFormat = AudioFormat.ENCODING_PCM_16BIT;/**音频源为麦克风*/private static final int RECODER_RESOURCE_MIC = MediaRecorder.AudioSource.MIC; //录音private AudioRecord audioRecord = null;private boolean isRecording = false;private int recBufSize = 0;private byte[] resultBuffer;//播放private AudioTrack audioTrack;private int trackBufSize = 0;private void initAudioRecord() { if(audioRecord != null){stopRecording();}//获得AudioRecord所需的最小缓存recBufSize = AudioRecord.getMinBufferSize(sampleRateInHz,channelInConfiguration, audioFormat);if (recBufSize < 1600) {recBufSize = 1600;}resultBuffer = new byte[recBufSize];audioRecord = new AudioRecord(RECODER_RESOURCE_MIC, sampleRateInHz,channelInConfiguration, audioFormat, recBufSize);//开始录音,得到PCM音频流audioRecord.startRecording();isRecording = true;Log.i(TAG, "初始化AudioRecord,并开始录制...");}private void initAudioTrack(){if(audioTrack != null){audioTrack.stop();audioTrack.release();audioTrack = null;}trackBufSize = AudioTrack.getMinBufferSize(sampleRateInHz,channelOutConfiguration, audioFormat);if(trackBufSize < 1600){trackBufSize = 1600;}audioTrack = new AudioTrack(streamType, sampleRateInHz,channelOutConfiguration, audioFormat, trackBufSize*2,mode );if(isRecording){audioTrack.play();}Log.i(TAG, "初始化AudioRecord,并准备播放...");}@Overridepublic void run() {initAudioRecord();initAudioTrack();while (isRecording) {//将PCM音频流数据保存的大小为1024byte的缓存int readBytes = audioRecord.read(resultBuffer, 0, resultBuffer.length);//播放缓存中PCM音频流if(readBytes > 0){audioTrack.write(resultBuffer, 0, readBytes);}}Log.i(TAG, "停止录制,结束录制线程");}public void stopRecording() {isRecording = false;if(audioRecord != null){audioRecord.stop();audioRecord.release();audioRecord = null;}try {Thread.sleep(100);} catch (InterruptedException e) {e.printStackTrace();}if(audioTrack != null){audioTrack.stop();audioTrack.release();audioTrack = null;}Log.i(TAG, "执行停止操作,释放资源");}
}
3.Medicodec的MediaFormat
封装描述多媒体(音、视频)数据格式的信息,这些格式信息由键值对指定。如果是对多媒体数据进行编码,则MediaFormat指定的是被编码后的多媒体文件;如果是对多媒体文件进行解码,则MediaFormat指定的就是要被解码的多媒体文件。
归属 | 键名 | 类型 | 描述 |
通用 | KEY_MIME | String | 指定多媒体文件类型,如acc音频"audio/mp4a-latm"、 avc视频"video/avc"等,详见MediaFormat |
KEY_MAX_INPUT_SIZE | Integer | 指定输入数据最大缓存(可选) | |
KEY_BIT_RATE | Integer | 比特率表示经过编码(压缩)后的音、视频数据每秒钟需要用多少个比特来表示。通常,比特率越高,音、视频的质量就越好,但编码后的文件就越大。(只限编码使用) | |
视频格式 | KEY_WIDTH | Integer | 指定video原始图像帧的宽度 |
KEY_HEIGHT | Integer | 指定video原始图像帧的高度 | |
KEY_COLOR_FORMAT | Integer | 指定video数据的颜色格式,如RGB、YUV,Android Camera采集的原始帧颜色格式可为NV21或YV12,但Medicodec只对COLOR_FormatYUV420SemiPlanar格式有效,因此通常使用NV21转换为该格式。更多颜色格式详见MediaCodecInfo.CodecCapabilities | |
KEY_FRAME_RATE | Integer | 指定video帧率(只限编码使用) | |
KEY_I_FRAME_INTERVAL | Integer | describing the frequency of I frames expressed in secs between I frames(只限编码使用) | |
音频 格式 | KEY_CHANNEL_COUNT | Integer | 指定音频通道数量 |
KEY_SAMPLE_RATE | Integer | 指定音频采样率 | |
KEY_IS_ADTS | Integer | 解码ACC音频文件时,设置为1表明前缀是ADTS头 |
实例演示:使用Medicodec编码PCM音频流生成ACC文件
/***@decrible 使用MediaCodec将PCM音频流编码封装成Acc格式文件** Create by jiangdongguo on 2017-1-6 上午9:18:26*/
public class AudioAccRunnable implements Runnable{private static final String TAG = "AudioAccRunnable";//音频源,麦克风private static final int audioSource = MediaRecorder.AudioSource.MIC;//采样率,44100Hzprivate static final int sampleRateInHz = 44100;//单声道private static final int channelConfig = AudioFormat.CHANNEL_IN_MONO;//量化精度,16bitprivate static final int audioFormat = AudioFormat.ENCODING_PCM_16BIT;private MediaCodec mMediaCodec;private AudioRecord mAudioRecord;private int bufferSizeInBytes;private byte[] mFrameByte;private ByteBuffer[] inputBuffers;private ByteBuffer[] outputBuffers;private boolean isRecording = false;private Context mContext;//编码类型,acc(即"audio/mp4a-latm")private static final String codec_type = MediaFormat.MIMETYPE_AUDIO_AAC;//比特率,高质量192000bpsprivate static final int codec_bitrate = 192000;//通道数量,1(单声道)private static final int codec_channel = 1;//最大输入缓存private static final int codec_max_inputsize = 1600;private String filePath = Environment.getExternalStorageDirectory().getAbsolutePath()+ File.separator+ System.currentTimeMillis()+ ".acc";private FileOutputStream outputStream;public AudioAccRunnable(Context mContext) {this.mContext = mContext;}private void initAudioRecord(){if(mAudioRecord != null){isRecording = false;stopAudioRecord();}bufferSizeInBytes = AudioRecord.getMinBufferSize(sampleRateInHz, channelConfig,
audioFormat);mAudioRecord = new AudioRecord(audioSource, sampleRateInHz, channelConfig,
audioFormat, bufferSizeInBytes*2);//开始录音mAudioRecord.startRecording();}private void initMediaCodec(){if(mMediaCodec != null){isRecording = false;stopMediaCodec();}//配置编码格式:编码类型、比特率、ACC配置信息、通道数量MediaFormat format = MediaFormat.createAudioFormat(codec_type, sampleRateInHz,
codec_channel);format.setInteger(MediaFormat.KEY_BIT_RATE,codec_bitrate);format.setInteger(MediaFormat.KEY_AAC_PROFILE,
MediaCodecInfo.CodecProfileLevel.AACObjectLC);format.setInteger(MediaFormat.KEY_MAX_INPUT_SIZE,codec_max_inputsize );try {mMediaCodec = MediaCodec.createEncoderByType(codec_type);} catch (IOException e) {e.printStackTrace();}//配置指定编码器mMediaCodec.configure(format, null, null,MediaCodec.CONFIGURE_FLAG_ENCODE);//启动编码器mMediaCodec.start();}@Overridepublic void run() {initAudioRecord();initMediaCodec();//设置线程优先级int len = -1;byte[] pcmBuffer = new byte[codec_max_inputsize];android.os.Process.setThreadPriority(android.os.Process.THREAD_PRIORITY_AUDIO);isRecording = true; while(isRecording ){len = mAudioRecord.read(pcmBuffer,0,codec_max_inputsize);if(len<0){Log.w(TAG, "录音失败,数据无效");}encodecPCM(pcmBuffer);}}@SuppressLint("NewApi") private void encodecPCM(byte[] data) {inputBuffers = mMediaCodec.getInputBuffers();outputBuffers = mMediaCodec.getOutputBuffers();/**得到编码器输入缓冲区句柄向输入缓存区PCM原始音频,然后释放句柄*/int inputBufferIndex = mMediaCodec.dequeueInputBuffer(-1); if(inputBufferIndex >= 0){ ByteBuffer inputBuffer = inputBuffers[inputBufferIndex];inputBuffer.clear();inputBuffer.put(data);inputBuffer.limit(data.length);mMediaCodec.queueInputBuffer(inputBufferIndex, 0, data.length, System.nanoTime(),
0);}/**得到编码器输出缓冲区句柄对输出缓存区编码好的音频数据进行ACC封装*/MediaCodec.BufferInfo mBufferInfo = new MediaCodec.BufferInfo();int outputBufferIndex = mMediaCodec.dequeueOutputBuffer(mBufferInfo,0);while(outputBufferIndex >= 0){if(outputBufferIndex >= 0){ByteBuffer outputBuffer = outputBuffers[outputBufferIndex];//给adts头字段空出7个字节int length = mBufferInfo.size + 7;if(mFrameByte==null || mFrameByte.length < length){mFrameByte = new byte[length];}addADTtoPacket(mFrameByte,length); //将加入adts头字段的编码数据保存到mFrameByte缓存outputBuffer.get(mFrameByte,7, mBufferInfo.size);savaACCAudio(mFrameByte);mMediaCodec.releaseOutputBuffer(outputBufferIndex, false);Log.i(TAG, "编码成功,存储到文件"+mFrameByte.length);}else if(outputBufferIndex ==
MediaCodec.INFO_OUTPUT_BUFFERS_CHANGED){Log.w(TAG, "output buffer changed");}else if(outputBufferIndex == MediaCodec.INFO_OUTPUT_FORMAT_CHANGED){Log.w(TAG, "output format changed");}else if(outputBufferIndex == MediaCodec.INFO_TRY_AGAIN_LATER){Log.w(TAG, "get output index timeout");}else{Log.w(TAG, "unkown error"+outputBufferIndex);} outputBufferIndex = mMediaCodec.dequeueOutputBuffer(mBufferInfo, 0);}} /*** 保存封装ACC头到文件*/private void savaACCAudio(byte[] data) {try {if(outputStream==null){File file = new File(filePath);outputStream = new FileOutputStream(file);} outputStream.write(data);} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();} }/** 给编码出的acc数据流添加adts头字段* @param mFrameByte2 缓存数组,需空出前7个字节,否则会搞乱数据* @param length*/private void addADTtoPacket(byte[] packet, int pakcetLen) {int profile = 2; //ACC LCint freqIdx = 4; //44.1kHzint chanCfg = 2; //CPEpacket[0] = (byte)0xFF;packet[1] = (byte)0xF9;packet[2] = (byte)(((profile-1)<<6)+(freqIdx<<2)+(chanCfg>>2));packet[3] = (byte)(((chanCfg&3)<<6)+(pakcetLen>>11));packet[4] = (byte)((pakcetLen&0x7FF)>>3);packet[5] = (byte)(((pakcetLen&7)<<5)+0x1F);packet[6] = (byte)0xFC;}public void stopRecording(){isRecording = false;stopAudioRecord();stopMediaCodec();if(outputStream != null){try {outputStream.close();} catch (IOException e) {e.printStackTrace();}}}private void stopAudioRecord() {if(mAudioRecord != null){mAudioRecord.stop();mAudioRecord.release();mAudioRecord = null;}}private void stopMediaCodec(){if(mMediaCodec != null){mMediaCodec.stop();mMediaCodec.release();mMediaCodec = null;}}
}
关于资料:
(1)帧率、码率、分辨率、位深度、采样率等汇总:http://hq-1900.iteye.com/blog/2008488
(2)码率、帧率、分辨率,教你转换出手机高清视频格式
http://blog.sina.com.cn/s/blog_6e6a4a1b01014zqw.html
(3)码流 / 码率 / 比特率 / 帧速率 / 分辨率 / 高清的区别(写得好)
http://blog.csdn.net/xiangjai/article/details/44238005
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
相关文章
- H.264的码率控制策略
码率控制实际上是一种编码的优化算法,它用于实现对视频流码流大小的控制。那么它控制的目的是什么呢?我们可以试想一下,同样的视频编码格式,码流大,它包含的信息也就越多,那么对应的图像也就越清晰…...
2024/4/21 1:27:49 - 无损压缩算法专题——无损压缩算法介绍
一、数据无损压缩的理论——信息论 数据压缩的起源是基于信息论的。信息论之父香农第一次用数学语言阐明了概率与信息冗余度的关系。在1948年发表的论文“通信的数学理论”中,香农指出,任何信息都存在冗余,冗余大小与信息中每个符号的出现概…...
2024/4/20 20:43:00 - FFMpeg无损合并视频的多种方法 python
方法二确实可行 方法1 我试着不行 需要的话自己试试把 python 的调用cmd命令是这么写的 resos.system("ifconfig"); 众所周知,从某些视频网站下载的视频是分段的。比如新浪视频每隔6分钟分段,俗称“6分钟诅咒”。 现在的任务是将这些视频片…...
2024/4/20 20:43:00 - 利用FFmpeg无损提取视频中源音频流
今天要从视频中扒一个谱出来,想把音频提取出来。有损提取方法很多了,利用格式工厂啊,视频编辑软件啊,开内录啊很多方法。但是我想要的是无损提取。 1. MediaCoder 首先尝试了MediaCoder中的“复制音频流”选项,但是怎…...
2024/4/20 20:42:58 - ffmpeg 码率控制(总结篇)
本文仅探讨ffmpeg API编码的方式进行码率控制,文中测试数据使用的是网络传输场景,非本地测试,可能收到网络的影响。如有不足之处,请及时指正。 CQP CQP:Constant Quantization Parameter - 固定质量参数 每一帧图像…...
2024/4/20 20:42:57 - FFMPEG-无损切割视频
切割视频 参考文章:[http://blog.itpub.net/29754888/viewspace-1383562/] ffmpeg -ss 01:00:00 -i input_file_h264.mp4 -vcodec copy -acodec copy -t 00:06:00 output_file.mp4 切割多音轨 参考文章:[http://blog.csdn.net/season_hangzhou/article/details/27503421] …...
2024/4/21 1:27:49 - ffmpeg 视频无损拼接
首先,把要合并的视频按顺序写到files.txt里,例如 file 1.mp4 file 2.mp4 注意必须单引号 然后 ffmpeg -f concat -safe 0 -i files.txt -c copy output.mp4...
2024/4/21 1:27:48 - ffmpeg无损合并视频的多种方法
众所周知,从某些视频网站下载的视频是分段的。比如新浪视频每隔6分钟分段,俗称“6分钟诅咒”。现在的任务是将这些视频片段合并起来,并且尽量无损。方法一:FFmpeg concat 协议 对于 MPEG 格式的视频,可以直接连接&…...
2024/4/21 1:27:46 - 使用傲梅分区助手无损合并分区,无损调整分区大小
Windows 本身就提供了强大的磁盘和分区管理工具,一个是操作简单的“磁盘管理”,一个是功能强大的命令行版的“diskpart”。不过这两个都有一些限制,一是不能影响到系统文件,二是其修改的分区不能被应用程序占用(diskpa…...
2024/4/20 12:42:01 - OpenCV视频篇——码流 / 码率 / 比特率 / 帧速率 / 分辨率
目录一、I、P、B 帧三种帧的说明二、GOP(Group of picture)三、CABAC/CAVLC1.CABAC2. CAVLC四、DTS、PTS 的概念五、码流(码率)六、采样率七、音频采样率八、比特率常见编码模式 VBR(Variable Bitrate)动态比特率ABR(A…...
2024/4/21 1:27:44 - 手机浏览器缓存的.ts视频文件如何合成(不下载软件)
手机缓存的视频文件都是1-3秒的.ts小片段,如果想拷贝到电脑上看会累死。 打开一看有将近两千个,网上大多是教下什么软件可以合成的。又不想下。 用dos命令可以自己在电脑上合成。 copy/b E:\temps*.ts E:\temps\new.ts 如上,执行该命令后&am…...
2024/4/21 1:27:44 - 无损视频合并软件有哪些?如何合并视频
现在,网上各种平台都有很多好看的短视频,但是如果能够将它们串联在一起,就更好了。那么,怎么把视频合并起来呢?一般我们需要借助视频合并软件,但是网上的这类软件有很多,我们应该如何选择呢&…...
2024/4/21 1:27:42 - 无损分割视频的软件哪个好
随着科技的迅速发展,好看的影视剧一大波的袭来让我们应接不暇,在我们不可能总是能跟我们喜欢的人一起去看,所以电影节目里面那些比较精彩的片段总是想保存下来和喜欢的人一起分享,但是由于各种原因会出现很多的问题,比…...
2024/4/21 1:27:41 - python-视频分帧多帧合成视频
1.视频分帧: import cv2 vidcap cv2.VideoCapture(005.avi) success,image vidcap.read() count 0 success True while success:success,image vidcap.read()cv2.imwrite("frame%d.jpg" % count, image) # save frame as JPEG fileif cv2.wait…...
2024/4/21 1:27:41 - 视频格式基础知识:让你了解MKV、MP4、H.265、码率\码流、多码流等等
转载请标明出处:http://blog.csdn.net/xx326664162/article/details/51784440 文章出自:薛瑄的博客 你也可以查看我的其他同类文章,也会让你有一定的收货! 1、封装格式(MP4/MKV…) vs 媒体格式(H.264/FLAC/AAC…) MP4MKV是你下…...
2024/4/21 1:27:39 - 《羊皮卷》读书笔记
大家好,我是不一样的算法工程师,最近看了卡耐基《羊皮卷:世界上最伟大的励志书》 这是一部人生的“圣经”,是世界精神导师们的思想精华,它揭示了希望、财富、幸福的真正秘密,已经怎样追求它们的法则。世界每…...
2024/4/21 1:27:39 - 战略工具和战略选择
战略就是企业发展的方向,方向对了,成功就不远了。在商业环境中,有几个战略分析的工具非常的不错,从微观层面有波特五力模型(从直接竞争对手、顾客、供应商、潜在新公司和替代性产品五个因素分析)、波士顿矩…...
2024/4/21 1:27:38 - 近观香港,远看上海,反思深圳
http://www.iheima.com/article-218166.html?comefromtoutiaohao 作者 | 清和 智本社社长 来源 | 智本社(ID:zhibenshe0-1) 过去几十年,中国大地上演绎了一段城市化的疯狂舞曲。城市的前途、楼市的命运以及亿万家庭的财富&am…...
2024/4/21 1:27:36 - 当你的才华还撑不起你的野心的时候,那就静下心来学习吧!
当你的才华还撑不起你的野心的时候,你就应该静下心来学习; 当你的能力还驾驭不了你的目标时,就应该沉下心来,历练。 梦想,不是浮躁,而是沉淀和积累,只有拼出来的美丽,没有等出来的…...
2024/4/21 1:27:35 - 撸一段 SQL ? 还是撸一段代码?
点击上方“后端技术精选”,选择“置顶公众号”技术文章第一时间送达!作者:Orsoncnblogs.com/java-class/p/5985916.html技术经验交流:点击入群以下都为个人思考总结所得,只作为抛砖引玉之说,一定会有不同意…...
2024/4/21 1:27:34
最新文章
- (MSFT.O)微软2024财年Q3营收619亿美元
在科技的浩渺宇宙中,一颗璀璨星辰再度闪耀其光芒——(MSFT.O)微软公司于2024财政年度第三季展现出惊人的财务表现,实现总营业收入达到令人咋舌的6190亿美元。这一辉煌成就不仅突显了微软作为全球技术领导者之一的地位,更引发了业界内外对这家…...
2024/4/27 6:36:33 - 梯度消失和梯度爆炸的一些处理方法
在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言,在此感激不尽。 权重和梯度的更新公式如下: w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...
2024/3/20 10:50:27 - JSON格式转换
文章目录 1. JSON 格式2. 细节 1. JSON 格式 实体类格式: public class Student {public string name {get; set;}public int age {get; set;} } public class Classs {public string teacher {get; set;}public List<Student> students {get; set;} }JSON格…...
2024/4/18 22:12:03 - 巨控科技新品发布:全方位升级,引领智能控制新纪元
标签: #巨控科技 #智能控制 #新品发布 #GRM560 #OPC560 #NET400 在智能控制领域,巨控科技始终以其前沿技术和创新产品引领着市场的潮流。近日,巨控科技再次以其行业领先的研发实力,推出了三大系列的新产品,旨在为各行各业提供更…...
2024/4/23 6:25:41 - 【项目新功能开发篇】开发编码
作者介绍:本人笔名姑苏老陈,从事JAVA开发工作十多年了,带过大学刚毕业的实习生,也带过技术团队。最近有个朋友的表弟,马上要大学毕业了,想从事JAVA开发工作,但不知道从何处入手。于是࿰…...
2024/4/23 6:10:38 - 【外汇早评】美通胀数据走低,美元调整
原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...
2024/4/26 18:09:39 - 【原油贵金属周评】原油多头拥挤,价格调整
原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...
2024/4/26 20:12:18 - 【外汇周评】靓丽非农不及疲软通胀影响
原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...
2024/4/26 23:05:52 - 【原油贵金属早评】库存继续增加,油价收跌
原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...
2024/4/27 4:00:35 - 【外汇早评】日本央行会议纪要不改日元强势
原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...
2024/4/25 18:39:22 - 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响
原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...
2024/4/25 18:39:22 - 【外汇早评】美欲与伊朗重谈协议
原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...
2024/4/26 21:56:58 - 【原油贵金属早评】波动率飙升,市场情绪动荡
原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...
2024/4/25 16:48:44 - 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试
原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...
2024/4/26 16:00:35 - 【原油贵金属早评】市场情绪继续恶化,黄金上破
原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...
2024/4/25 18:39:16 - 【外汇早评】美伊僵持,风险情绪继续升温
原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...
2024/4/25 18:39:16 - 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势
原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...
2024/4/26 19:03:37 - 氧生福地 玩美北湖(上)——为时光守候两千年
原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...
2024/4/26 22:01:59 - 氧生福地 玩美北湖(中)——永春梯田里的美与鲜
原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...
2024/4/25 18:39:14 - 氧生福地 玩美北湖(下)——奔跑吧骚年!
原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...
2024/4/26 23:04:58 - 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!
原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...
2024/4/25 2:10:52 - 「发现」铁皮石斛仙草之神奇功效用于医用面膜
原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...
2024/4/25 18:39:00 - 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者
原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...
2024/4/26 19:46:12 - 广州械字号面膜生产厂家OEM/ODM4项须知!
原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...
2024/4/25 18:38:58 - 械字号医用眼膜缓解用眼过度到底有无作用?
原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...
2024/4/25 18:38:57 - 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...
解析如下:1、长按电脑电源键直至关机,然后再按一次电源健重启电脑,按F8健进入安全模式2、安全模式下进入Windows系统桌面后,按住“winR”打开运行窗口,输入“services.msc”打开服务设置3、在服务界面,选中…...
2022/11/19 21:17:18 - 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。
%读入6幅图像(每一幅图像的大小是564*564) f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...
2022/11/19 21:17:16 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...
win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面,在等待界面中我们需要等待操作结束才能关机,虽然这比较麻烦,但是对系统进行配置和升级…...
2022/11/19 21:17:15 - 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...
有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows,请勿关闭计算机”的提示,要过很久才能进入系统,有的用户甚至几个小时也无法进入,下面就教大家这个问题的解决方法。第一种方法:我们首先在左下角的“开始…...
2022/11/19 21:17:14 - win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...
置信有很多用户都跟小编一样遇到过这样的问题,电脑时发现开机屏幕显现“正在配置Windows Update,请勿关机”(如下图所示),而且还需求等大约5分钟才干进入系统。这是怎样回事呢?一切都是正常操作的,为什么开时机呈现“正…...
2022/11/19 21:17:13 - 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...
Win7系统开机启动时总是出现“配置Windows请勿关机”的提示,没过几秒后电脑自动重启,每次开机都这样无法进入系统,此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一:开机按下F8,在出现的Windows高级启动选…...
2022/11/19 21:17:12 - 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...
有不少windows10系统用户反映说碰到这样一个情况,就是电脑提示正在准备windows请勿关闭计算机,碰到这样的问题该怎么解决呢,现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法:1、2、依次…...
2022/11/19 21:17:11 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...
今天和大家分享一下win7系统重装了Win7旗舰版系统后,每次关机的时候桌面上都会显示一个“配置Windows Update的界面,提示请勿关闭计算机”,每次停留好几分钟才能正常关机,导致什么情况引起的呢?出现配置Windows Update…...
2022/11/19 21:17:10 - 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...
只能是等着,别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚,只能是考虑备份数据后重装系统了。解决来方案一:管理员运行cmd:net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...
2022/11/19 21:17:09 - 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?
原标题:电脑提示“配置Windows Update请勿关闭计算机”怎么办?win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢?一般的方…...
2022/11/19 21:17:08 - 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...
关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!关机提示 windows7 正在配…...
2022/11/19 21:17:05 - 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...
钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...
2022/11/19 21:17:05 - 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...
前几天班里有位学生电脑(windows 7系统)出问题了,具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面,长时间没反应,无法进入系统。这个问题原来帮其他同学也解决过,网上搜了不少资料&#x…...
2022/11/19 21:17:04 - 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...
本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法,并在最后教给你1种保护系统安全的好方法,一起来看看!电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中,添加了1个新功能在“磁…...
2022/11/19 21:17:03 - 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...
许多用户在长期不使用电脑的时候,开启电脑发现电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机。。.这要怎么办呢?下面小编就带着大家一起看看吧!如果能够正常进入系统,建议您暂时移…...
2022/11/19 21:17:02 - 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...
配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!配置windows update失败 还原更改 请勿关闭计算机&#x…...
2022/11/19 21:17:01 - 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...
不知道大家有没有遇到过这样的一个问题,就是我们的win7系统在关机的时候,总是喜欢显示“准备配置windows,请勿关机”这样的一个页面,没有什么大碍,但是如果一直等着的话就要两个小时甚至更久都关不了机,非常…...
2022/11/19 21:17:00 - 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...
当电脑出现正在准备配置windows请勿关闭计算机时,一般是您正对windows进行升级,但是这个要是长时间没有反应,我们不能再傻等下去了。可能是电脑出了别的问题了,来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...
2022/11/19 21:16:59 - 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...
我们使用电脑的过程中有时会遇到这种情况,当我们打开电脑之后,发现一直停留在一个界面:“配置Windows Update失败,还原更改请勿关闭计算机”,等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢࿰…...
2022/11/19 21:16:58 - 如何在iPhone上关闭“请勿打扰”
Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...
2022/11/19 21:16:57