我想通过使用ffmpeg的函数---> sws_scale()调整图片大小.
有谁知道怎么做?
你有这个功能的源代码吗?
我在设备上有MPEG-TS文件.我想在设备上的文件开始时缩短相当准确的时间.
使用FFmpegWrapper作为基础,我希望实现这一目标.
不过,我在ffmpeg的C API上有点迷失.我从哪里开始?
我尝试在启动PTS之前丢弃所有数据包,但这打破了视频流.
packet->pts = av_rescale_q(packet->pts, inputStream.stream->time_base, outputStream.stream->time_base);
packet->dts = av_rescale_q(packet->dts, inputStream.stream->time_base, outputStream.stream->time_base);
if(startPts == 0){
startPts = packet->pts;
}
if(packet->pts < cutTimeStartPts + startPts){
av_free_packet(packet);
continue;
}
Run Code Online (Sandbox Code Playgroud)
如何在不破坏视频流的情况下切断部分输入文件的开头?当背靠背播放时,我想要2个剪切片段无缝地一起运行.
ffmpeg -i time.ts -c:v libx264 -c:a copy -ss $CUT_POINT -map 0 -y after.ts
ffmpeg -i time.ts -c:v libx264 -c:a copy -to $CUT_POINT -map 0 -y before.ts
Run Code Online (Sandbox Code Playgroud)
似乎是我需要的.我认为需要重新编码,因此视频可以从任意点开始,而不是现有的关键帧.如果有一个更有效的解决方案,那就太好了.如果没有,这就足够了.
编辑:这是我的尝试.我各个部分我不完全了解,从复制拼凑这里.我现在暂时离开"切割"部分,试图将音频+视频编码编写而不会分层复杂.我得到了EXC_BAD_ACCESSavcodec_encode_video2(...)
- (void)convertInputPath:(NSString *)inputPath outputPath:(NSString *)outputPath
options:(NSDictionary *)options progressBlock:(FFmpegWrapperProgressBlock)progressBlock
completionBlock:(FFmpegWrapperCompletionBlock)completionBlock {
dispatch_async(conversionQueue, ^{
FFInputFile *inputFile = nil; …Run Code Online (Sandbox Code Playgroud)