我刚刚开始使用 FFmpeg 编码器。我有一个将视频文件编码到 mp4 容器的命令:
ffmpeg -i input.mp4 \
-vcodec libx264 -s 426x240 -pix_fmt yuv420p \
-crf 22 -minrate 200k -bufsize 400k -maxrate 400k -preset medium \
-b:v 500000 -profile:v baseline -level 3.1 \
-c:a aac -strict -2 -b:a 64k -ac 2 \
output_240.mp4
Run Code Online (Sandbox Code Playgroud)
我需要相应的mpeg-ts编码命令。我在网上搜索了这个,但由于我是新手,所以无法得到我想要的东西。
and*_*.46 10
与 FFmpeg 一样,有许多选择可供选择,我进一步缩小了范围以创建明确的答案:
1. TS 容器支持您输入文件的编解码器:
使用 FFmpeg 检查您的输入文件,如下所示:
ffmpeg -i input.mp4
Run Code Online (Sandbox Code Playgroud)
如果文件包含在 TS 容器中得到很好支持的编解码器,例如 H.264 视频和 AAC 声音,您可以简单地复制流:
ffmpeg -i input.mp4 -c copy output.ts
Run Code Online (Sandbox Code Playgroud)
这将产生很好的结果,尽管您可能需要根据输出文件的实际使用(流媒体、某个播放设备等)改变此命令行。
2. TS 容器不支持您输入文件的编解码器:
如果您的输入文件包含在 TS 容器中不受支持的编解码器,您将需要重新编码视频或音频流或两者。FFmpeg 和 TS 容器的默认编解码器是 mpeg2video 和 mp2 sound。如果您乐于使用这些默认编解码器,以下将产生很好的结果:
ffmpeg -i input.mp4 \
-c:v mpeg2video -qscale:v 2 \
-c:a mp2 -b:a 192k \
output.ts
Run Code Online (Sandbox Code Playgroud)
这当然在我的系统上给出了相当合理的结果,你的系统也应该如此......
3. 您希望为 HTTP Live Streaming (HLS) 分割您的文件:
最后,您可能希望生成带有播放列表的分段 TS 文件,以便与 HTTP 实时流媒体 (HLS) 一起使用。有多种方法可以实现这一点,但下面的示例命令行将适用于 TS 容器支持其编解码器的输入文件:
ffmpeg -re -i input.mp4 \
-codec copy -map 0 \
-f segment -segment_list playlist.m3u8 \
-segment_list_flags +live -segment_time 10 \
out%03d.ts
Run Code Online (Sandbox Code Playgroud)
如果您希望更改输入文件的编解码器,只需添加所需的设置来代替-codec copy,我相信 H.264 和 AAC 是此类流媒体的流行编解码器。此处描述的细分选项有很大的实验空间......
笔记:
| 归档时间: |
|
| 查看次数: |
33480 次 |
| 最近记录: |