怎么样快速/无损将H.264编码的MKV文件转换为同是H.264编码的MP4文件

180125无聊更新下,按照评论的直接cd /d 就可以了
cd /d D:\\文件所在路径(选择源文件后按shift+右键复制为路径^^)
不重编码格式转换
ffmpeg -i input.mkv -c copy output.mp4
如果要多音轨的MP4以我有限的知识只能是封装成多声道……囧
不重编码封装内挂字幕
ffmpeg -i input.mp4 -i abc.ass -c:s mov_text -c copy output.mp4
提取声道
ffmpeg -i audio.aac -map_channel 0.0.0 left.aac -map_channel 0.0.1 right.aac
一图流,视频长度=音轨,-s后面是自定义分辨率,-r是帧率
按图片分辨率
ffmpeg -loop 1 -i FBI.jpg -i audio.aac -c:a copy -c:v libx264 -pix_fmt yuv420p -r 25 -shortest out.mp4
自定义分辨率
ffmpeg -loop 1 -i FBI.jpg -i audio.aac -c:a copy -c:v libx264 -s 1280x720 -pix_fmt yuv420p -r 25 -shortest out720p.mp4

=================================
ffmpeg使用前需要 cd到视频所在文件夹或把视频文件复制到ffmpeg文件夹 ……
技术渣之前被坑惨了,因为官方也好其他的一些教程也好压根没提到这事!!!找到的大多都是命令参数说明……
如果不CD就用上面回答这条命令:
ffmpeg -i input.mkv -vcodec copy -acodec copy out.mp4
那么得出的结果肯定是error……

如何使用 FFmpeg 进行视频转码:开始转码
原文猛击
目录
开始转码
部分节选
假设这个视频已经下载到了你的电脑硬盘中,并存放在 /home/alex/Downloads/ 这个目录里面,而且 FFmpeg 已经安装到你的电脑中。那么现在打开终端,然后使用 cd 命令转到文件所在的位置,比如在我的情况下,运行 cd /home/alex/Downloads/ ,它不会有任何输出。
注意: 如果文件路径包含空格或一些特殊字符,请使用半角引号( \u0026#39; 或 " )将路径名包起来,比如如果文件在 /home/alex/path with space/ ,执行 cd "/home/alex/path with space/" 而不是 cd /home/alex/path with space/ 。注意: 如果你使用的是 Microsoft Windows ,并且文件不在 C 盘,需要再“执行”一下盘符,比如如果文件存放在 D:\\\\Downloads\\ 里面,执行以下两条命令:
cd D:\\\\Downloads\\D:cd 完了之后,如果你有强迫症想要检查一下是否真的已经切换到目标目录去了,可以运行 ls ( GNU/Linux, Mac OS X )或 dir ( Microsoft Windows )。只要显示出来的确实是那个目录里的文件,就说明没有问题,你可以放心继续。
怎么样快速/无损将H.264编码的MKV文件转换为同是H.264编码的MP4文件

接下来输入 ffmpeg 但不要回车,我们要使用 -i 选项来指定输入文件。输入文件就是我们要转换的文件,比如我在此处要转换的文件叫做 Tor_Animation_en.mp4 ,我就再往命令行中打 -i Tor_Animation_en.mp4 。
在指定了输入文件之后,我们还要指定一个输出文件,不然 FFmpeg 把转换出来的文件保存在哪儿呢?
输出文件可以是任何名字,但它的后缀名很关键,上一章已经讲过,后缀名通常就代表着文件的封装格式。在这个例子中,我想将视频转换为 Matroska 格式(俗称 MKV 格式),那么我输出文件的后缀名就得是 .mkv 。最终,我想将文件保存为 tor.mkv ,就在命令行后面直接加上这个文件名。
最后,我的命令行上有着这样一条命令:
ffmpeg -i Tor_Animation_en.mp4 tor.mkv注意: 跟 cd 时的目录路径一样,如果文件名包含空格或一些特殊字符,也需要用半角引号将它们包裹起来。比如如果输入文件名叫 input file.mp4 且输出文件名叫 output file.mkv ,整条命令就得是 ffmpeg -i "input file.mp4" "output file.mkv" 。


推荐阅读